![Puppet 和 Puppetmaster 用于虚拟机上的开发](https://linux22.com/image/610468/Puppet%20%E5%92%8C%20Puppetmaster%20%E7%94%A8%E4%BA%8E%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B8%8A%E7%9A%84%E5%BC%80%E5%8F%91.png)
我的情况是,我不断启动新的虚拟机进行开发。我有一个可以克隆的基础映像,但它很快就会过时,而且你没有办法在很多虚拟机上添加更改。
我想设置一个在虚拟机首次启动时运行的 puppet 脚本,并且有很多指南可以创建由 puppet 直接运行的 site.pp,但这涉及您必须在节点上设置的单个文件。我想要做的是在 puppetmaster 上进行开发设置,以便我的所有虚拟机都可以调用同一点并保持最新状态,并允许我使用文件服务器等创建一套全面的软件包。
我发现的问题是我不能/不想依赖主机名来识别虚拟机,我不关心保留 pki 的历史记录,因为虚拟机名称可能会被重复使用。
puppet 可以与 puppetmaster 一起使用,并且基本上忽略所有 pki 吗?我可以创建一个环境,以便我可以通过事实或其他方式将虚拟机注册到其中吗?我想做 puppet agent type=test1 或类似操作。
一般来说,我如何通过集中式源使用 Puppet,其中我不特别关心节点的安全性并期望节点频繁来去?
答案1
由于虚拟机用于开发目的,您可能需要查看流浪汉。Vagrant 开箱即用地支持 Puppet。
答案2
设置您的虚拟机通过 DHCP 进行配置,并添加到您的配置中(如果您愿意,您可以为您的虚拟机提供随机或连续的名称,但保留域部分以简化部署):
option domain-name "my.domain.com";
设置您的puppetmaster
以提供您想要的模块:
node /.*my.domain.com/ inherits default {
}
并为该域启用自动签名:
$ cat autosign.conf
# Domains you want SSL certificates autosigned for
#*.my.domain.com
至于“在多个虚拟机上添加更改”,嗯,这就是目的puppet
。如果您想要/需要其他类型的按需操作,请查看木偶集体。
答案3
puppet 可以以客户端/服务器方式工作,但这不是强制性的。您可以在当前机器本地调用 puppet,这要简单得多(但当然可扩展性较差)
就我而言,启动新虚拟机时,我只需使用 sftp (ssh) 复制 puppet 完整配置并在本地调用 puppet。说明在这里 (fr)http://offirmo.net/wiki/index.php?title=Amor%C3%A7age_d%27un_serveur_Ubuntu_avec_puppet
cd ~/puppet
sudo puppet apply --debug --detailed-exitcodes --verbose manifests/site.pp --modulepath=modules --ignorecache --no-usecacheonfailure
如果我需要更新,我的 puppet 配置位于 git repo 中(https://github.com/Offirmo/offirmo-puppet),我可以使用 git pull 获取最新版本并再次应用。
由您来判断此方法是否适合您的情况。