Question

Je pense à l'aide Vagrant pour développer des applications Django, mais je suis un peu confus et je ne sais pas si ce que je voudrais faire est même possible.

J'ai installé la boîte de lucid32 « instance » avec succès et a créé une nouvelle de errante, avec un Vagrantfile, certains répertoires partagés et des ports redirigés.

  • Le premier problème est que cela ne me semble pas le meilleur choix lorsque vous travaillez dans une équipe. Comment pouvons-nous (moi et 10 autres développeurs, par exemple) partagent la boîte de sorte que chaque changement est partagé? Par exemple, si dans 6 mois nous avons besoin PostGreSQL, je dois le faire travailler sans avoir à installer postgresql 11 fois.

  • En outre, comment puis-je faire des choses (comme: postgresql, django, ce service, etc.) pour démarrer lorsque la boîte a démarré? Je ne pense pas que je dois ssh et démarrer manuellement les temps de n toutes les choses dont j'ai besoin n chaque fois.

  • Et enfin: Je ne comprends pas bien si les choses comme la marionnette et le chef sont destinés à remplacer complètement l'installation manuelle (par pip ou apt-get, par exemple). Est-ce donc?

Merci.
Et je suis désolé pour le mauvais anglais. : -)

Était-ce utile?

La solution

Je dirais que votre choix de Vagrant était déjà un bon point de départ à ce que vous recherchez, mais maintenant vous avez besoin de creuser un peu plus profondément dans une ou l'autre chef ou de marionnettes, à automatiser davantage votre processus d'approvisionnement.

Je suppose un bon choix dans votre sceneraio serait d'abord mis à la fois, le Vagrantfile et le correspondant de marionnettes manifeste sous contrôle de version dans le cadre de votre projet. En outre, toutes les configurations concernant cette machine devrait également être mis dans le contrôle de version et / ou mis à disposition par une sorte de dépôt d'artefact.

En second lieu, établir la règle dans l'équipe que les changements (au moins ceux-ci qui devraient vivre plus longtemps) à la nécessité de l'environnement à vérifier s'ils sont considérés comme prêts pour les autres membres de l'équipe.

En ce qui concerne votre deuxième question et revenir à mon ouverture: marionnettes (qui me plaît) ou le chef sont vos outils de choix et peut vous faire économiser et vos collègues beaucoup de travail à l'avenir. Je tiens à Puppet ici, comme je ne sais pas trop bon chef.

Avec marionnette, vous pouvez gérer tout ce que vous voulez, l'installation de paquets, la modification des configurations et veiller à ce que certains services sont en cours d'exécution, ou en général que le système a l'état que vous voulez qu'il soit. Mieux encore, si vous ou une autre membre de l'équipe fait quelques Chages malicieux à son / sa boîte, vous pouvez simplement rollback les changements dans votre Vagrantfile / Puppet manifeste, tapez

vagrant destroy && vagrant up

et la boîte est facilement repris au dernier état versionné.

Par exemple, prenez le manifeste suivant:

package { "mysql-server-5.1":
  ensure => present
}

file { "/etc/mysql/my.cnf":
  owner => "root",
  content => "http://myrepository.local/myProject/configurations/mysql/my.cnf",
  require => Package["mysql-server-5.1"]
}

service { "mysql":
  ensure => running,
  subscribe => File["/etc/mysql/my.cnf"],
  require => File["/etc/mysql/my.cnf"]
}

Qu'est-ce que cela fait est, il d'abord tous les contrôles du mécanisme de package de l'OS dans votre boîte (les noms dans l'exemple suppose une Ubuntu récente) si le paquet est installé « mysql-server-5.1 », et sinon « ll installer. Grâce à l'attribut « besoin », la deuxième directive sera exécutée après la première (et seulement si elle a travaillé), en changeant la configuration de MySQL à celui que vous avez également vérifié et / ou quelque part publié, vous pouvez l'atteindre (qui pourrait aussi être mettre dans le même dossier que le Vagrantfile, et sera ensuite disponible dans la zone sous / errante). La dernière étape, qui sera exécutée à nouveau que si la modification de la configuration a travaillé, veillera à ce que le service « mysql » est en cours d'exécution ou est obtenir redémarré si elle était déjà en cours d'exécution lorsque la configuration a été modifiée.

Maintenant, vous pouvez brancher ce manifeste dans votre Vagrantfile:

Vagrant::Config.run do |config|

  config.vm.box = "lucid32"
  config.vm.box_url = "http://files.vagrantup.com/lucid32.box"

  config.vm.define "node1" do |cfg|
    cfg.vm.network "10.23.5.11"
    cfg.vm.provision :puppet do |puppet|
      puppet.manifests_path = "manifests"
      puppet.manifest_file = "node1.pp"
    end
  end
end

Avec tous les changements en plus de ceux « essayer-stuff-out » apportées à l'environnement comme celui-ci, tous les mebers de l'équipe sont guaranted d'avoir la même configuration facilement et simplement à leur reproductible du bout des doigts.

Personnellement, je aime essayer des choses sur la boîte à la main, et quand j'ai trouvé la bonne configuration et la configuration, la traduire en une marionnette manifeste d'avoir si prêt pour une utilisation ultérieure et le partage avec les membres de l'équipe.

Marionnettes (et chef aussi) peut gérer presque tout ce que vous avez besoin (utilisateurs, emplois, Cron, paquets, services de fichiers, ...) il est un bon choix pour des problèmes tels exactement, et vous avez l'avantage d'être même capable d'utiliser les configurations de mise en scène de disposition ou tester des environnements plus tard si vous le désirez. Leur sont beaucoup plus d'options avec des marionnettes, et une lecture par la langue devrait vous guider donner une bonne idée ce que vous pouvez faire.

L'espoir que je pourrais aider:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top