Don*_*van 6 automation vagrant
我正在考虑使用Vagrant来开发Django应用程序,但我有点困惑,我不确定我想做什么甚至是可能的.
我成功安装了lucid32盒子并创建了一个新的"实例",包括Vagrantfile,一些共享目录和转发端口.
第一个问题是,在团队中工作时,这似乎不是我的最佳选择.我们如何(例如我和其他10位开发人员)共享这个盒子,以便共享它的每个变化?例如,如果在6个月内我们需要postgresql,我需要让它工作而不必安装postgresql 11次.
另外,如何在盒子启动时启动(例如:postgresql,django,this-service等)?我不认为我必须ssh它并且每次n
都n
需要手动启动我需要的所有东西.
最后:如果木偶和厨师之类的东西完全取代手动安装(例如通过pip或apt-get),我不太清楚.是这样吗?
谢谢.
我很抱歉英语不好.:-)
Bas*_*erg 13
我想说你选择的Vagrant已经是你正在寻找的一个良好的开端,但现在你需要深入挖掘Chef或Puppet,以进一步自动化你的配置过程.
我想你的场景中的一个很好的选择是首先将Vagrantfile和相应的Puppet清单作为项目的一部分置于版本控制之下.此外,有关此计算机的所有配置也应放入版本控制和/或通过某种工件存储库提供.
其次,如果对其他团队成员做好准备,则需要在需要检查的团队中建立更改(至少应该存活更长时间)的团队规则.
关于你的第二个问题并回到我的开场白:Puppet(我喜欢)或厨师是你的首选工具,将来可以为你和你的同事节省大量的工作.我会坚持Puppet,因为我不知道厨师太好了.
使用puppet,您可以管理所需的所有内容,安装软件包,更改配置以及确保某些服务正在运行,或者通常系统具有您希望的状态.更好的是,如果你或其他团队成员对他/她的盒子做了一些恶意攻击,你可以回滚你的Vagrantfile/Puppet清单中的更改,输入
vagrant destroy && vagrant up
Run Code Online (Sandbox Code Playgroud)
并且该框很容易恢复到最后一个版本状态.
例如,采用以下清单文件:
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"]
}
Run Code Online (Sandbox Code Playgroud)
这样做,它首先检查你的盒子中的操作系统的包机制(示例中的名称假定最近的Ubuntu)如果安装了包"mysql-server-5.1",如果没有,它将安装它.通过'require'属性,第二个指令将在第一个指令之后执行(并且只有在它工作的情况下执行),将MySQL配置更改为您已经签入和/或发布到可以到达它的地方(也可能是放入与Vagrantfile相同的文件夹中,然后在/ vagrant下的框中可用.最后一步,只有在配置改变时才会执行,将确保"mysql"服务启动并运行,或者如果配置发生更改时已经运行,则会重新启动.
现在,您可以在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
Run Code Online (Sandbox Code Playgroud)
除了像这样对环境做出的"尝试填充"之外的所有变化,所有团队成员都可以保证轻松地使用相同的设置并且可以在指尖轻松再现.
我个人喜欢手动尝试这些东西,当我找到正确的设置和配置时,将其翻译成Puppet清单,以备将来使用并与团队成员共享.
由于Puppet(和Chef也可以)管理几乎所有你需要的东西(用户,cron作业,包,服务,文件......),对于这些问题来说它是一个很好的选择,你甚至可以使用它如果您愿意,稍后可以配置暂存或测试环境的配置.他们对Puppet有更多的选择,通过语言指南阅读应该会让你知道你还能做些什么.
希望我能帮忙:)
归档时间: |
|
查看次数: |
1170 次 |
最近记录: |