不,当您在 VM 中安装东西时,vagrant 文件不会更改。
如果您希望您的客户端与您拥有同一台机器,则必须避免通过 VM 的外壳安装软件。您应该只对所有内容使用配置程序,甚至是 mysql 表、apache 虚拟主机等。
并且不要使用vagrant box add ubuntu1 http://goo.gl/KwQSa2
,将框的 url 添加到 vagrantfile 中:
config.vm.box_url = "http://goo.gl/KwQSa2"
mysql/php 服务器的 puppet 配置示例:
group { 'puppet':
ensure => 'present',
}
#
# Apache configuration
#
class { 'apache' :
default_mods => false,
default_confd_files => false,
mpm_module => 'prefork',
default_vhost => false,
sendfile => 'Off'
}
class { 'apache::mod::php' : } # mod_php
class { 'apache::mod::rewrite' : } # mod_rewrite
# VHost configuration
apache::vhost { 'dev.XXX.fr' :
port => '80',
docroot => '/var/sites/myXXX/web',
access_log => true,
access_log_file => 'XXX_access.log',
error_log => true,
error_log_file => 'XXX_error.log',
aliases => [{alias => '/myXXX', path => '/var/sites/toto/web'}],
directories => [{path => '/var/sites/myXXX/web', 'allow_override' => ['FileInfo', 'Indexes']}, {path => '/var/sites/toto/web', 'allow_override' => ['FileInfo', 'Indexes']}]
}
#
# Mysql configuration
#
class { '::mysql::server' :
root_password => 'XXX',
databases => {
'XXX' => {
ensure => 'present',
charset => 'utf8'
}
},
users => {
'XXX@localhost' => {
ensure => 'present',
password_hash => 'XXX' # XXXmdp
}
},
grants => {
'XXX@localhost/XXX' => {
ensure => 'present',
options => ['GRANT'],
privileges => ['SELECT', 'INSERT', 'UPDATE', 'DELETE', 'CREATE'],
table => 'XXX.*',
user => 'XXX@localhost'
}
}
}
class { '::mysql::client' : }
package { 'php5-mysql' :
require => [Class['apache::mod::php'], Class['::mysql::server']],
ensure => 'present'
}
您将需要以下模块:
上面的 puppet 配置仅用于示例,我强烈建议您阅读那些做得非常好的文档:http: //docs.puppetlabs.com/learning/introduction.html
老实说,木偶是一个很棒的工具,花点时间学习它。
还有一件事,避免使用 shell 配置程序,每次运行“vagrant provision”时都会执行命令,puppet 只执行更改。(我只将 shell 配置器用于 apt-get update 和 apt-get upgrade)