我是 puppet 和 vagrant 的新手,但我正在开发自己的 Puppet 清单,旨在设置 vagrant box。也就是说,puppet 清单位于主机上的 Vagrant 目录中,而 vagrant 正在调用 puppet - 没有 puppet 服务器。
事实上,我的工作流程是:
while(not working as desired) {
vagrant destroy
amend manifest
vagrant up
}
...这意味着要等待很长时间。
有什么更好的工作方法?
答案1
为什么你要不断重建虚拟机?为什么不通过 ssh 进入虚拟机,然后处理清单直到它正常工作?
顺便说一句,puppet parser validate
这是一种在测试傀儡正在做什么之前发现主要错误的好方法。
就我个人而言,我会去一个干净的虚拟机,或者一个我想要更改的虚拟机的副本,将任何所需的模块复制到那里,/root/modules
创建一个新模块,然后运行以下命令:
puppet apply --modulepath /root/modules file.pp
其中包括所有必要的内容,并且我的模块位于标准模块配置中file.pp
的子目录内。/root/modules
现在,是在某些情况下,创建虚拟机是至关重要的,例如进行初始配置,或验证您目前的配置。但我认为没有理由一直在新创建的虚拟机上完成所有工作。
答案2
您还可以通过运行重新应用清单更改
vagrant provision
因此你的工作流程就变成了
vagrant up
while(not working as desired) {
amend manifest
vagrant provision
}
答案3
我建议安装撒哈拉。那么你的工作流程就变成:
vagrant up
vagrant sandbox on
vagrant ssh
*do some stuff that doesn't work
vagrant sandbox rollback
vagrant ssh
* do some stuff that does work
vagrant sandbox commit
我更喜欢执行回滚,然后将您所做的更改添加到您首选的配置脚本(puppet、chef、ssh 等)中,而不是执行提交