我想将 Vagrant 设置为使用我当前的 Puppet master 作为供应商。但我不喜欢在.box
文件中嵌入 SSL 密钥对的想法。
我目前正在做的是使用 Vagrant 文件为 Puppet 代理分发 ca.pem、公共、私有和证书密钥文件,并使用此 shell 脚本引导 Puppet 代理:
$puppet_ssl = <<SCRIPT
sudo mkdir -p /var/lib/puppet/ssl/{certs,private_keys,public_keys}
sudo chown puppet /var/lib/puppet/ssl/{certs,private_keys,public_keys}
sudo cp /vagrant/puppet/certs/appdev.mydomain.com.pem /vagrant/puppet/certs/ca.pem /var/lib/puppet/ssl/certs/
sudo cp /vagrant/puppet/private_keys/appdev.mydomain.com.pem /var/lib/puppet/ssl/private_keys/
sudo cp /vagrant/puppet/public_keys/appdev.mydomain.com.pem /var/lib/puppet/ssl/public_keys/
SCRIPT
如果开发人员拥有文件并且一切都在正确的目录中,这似乎工作正常。
我的问题:有没有更好的方法来分发需要预加载到 Vagrant VM 上的任意文件而不将它们嵌入到.box
文件中?
解决这个问题的最简单方法可能是将您配置为在
Vagrantfile
上设置一个同步文件夹/var/lib/puppet/ssl
,然后从您的本地 Vagrant 项目目录中加载密钥。文档在这里:http://docs.vagrantup.com/v2/synced-folders/basic_usage.html
或者,Puppet 自动签名可能会很好地满足您的需求。