📅  最后修改于: 2020-10-31 14:02:45             🧑  作者: Mango
在Puppet中,可以在本地测试设置。因此,一旦我们设置了Puppet主节点和节点,就该在本地验证该设置了。我们需要在本地安装Vagrant和Vagrant盒,这有助于在本地测试设置。
当我们在本地测试设置时,实际上并不需要运行的Puppet主服务器。这意味着无需在服务器上实际运行Puppet主服务器,我们只需使用Puppet即可应用命令进行Puppet设置验证。 Puppet apply命令将根据配置文件中虚拟机的主机名来应用对local / etc / puppet的更改。
为了测试设置,我们需要执行的第一步是构建以下Vagrantfile并启动计算机,然后将/ etc / puppet文件夹安装到位。所有需要的文件将以以下结构放置在版本控制系统中。
- manifests
\- site.pp
- modules
\- your modules
- test
\- update-puppet.sh
\- Vagrantfile
- puppet.conf
# -*- mode: ruby -*-
# vi: set ft = ruby :
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", 1028, "--cpus", 2]
end
# Mount our repo onto /etc/puppet
config.vm.synced_folder "../", "/etc/puppet"
# Run our Puppet shell script
config.vm.provision "shell" do |s|
s.path = "update-puppet.sh"
end
config.vm.hostname = "localdev.example.com"
end
在上面的代码中,我们使用了Shell配置程序,其中我们试图运行一个名为update-puppet.sh的Shell脚本。该脚本位于Vagrant文件所在的目录中,并且脚本的内容在下面列出。
!/bin/bash
echo "Puppet version is $(puppet --version)"
if [ $( puppet --version) != "3.4.1" ]; then
echo "Updating puppet"
apt-get install --yes lsb-release
DISTRIB_CODENAME = $(lsb_release --codename --short)
DEB = "puppetlabs-release-${DISTRIB_CODENAME}.deb"
DEB_PROVIDES="/etc/apt/sources.list.d/puppetlabs.list"
if [ ! -e $DEB_PROVIDES ]
then
wget -q http://apt.puppetlabs.com/$DEB
sudo dpkg -i $DEB
fi
sudo apt-get update
sudo apt-get install -o Dpkg::Options:: = "--force-confold"
--force-yes -y puppet
else
echo "Puppet is up to date!"
fi
进一步的处理,用户需要在Manifests目录中创建一个清单文件,名称为site.pp ,它将在VM上安装一些软件。
node 'brclelocal03.brcl.com' {
package { ['vim','git'] :
ensure => latest
}
}
echo "Running puppet"
sudo puppet apply /etc/puppet/manifests/site.pp
一旦用户为上述脚本准备好所需的Vagrant文件配置,则用户可以cd到测试目录并运行vagrant up命令。这将引导新的VM,然后安装Puppet,然后使用Shell脚本运行它。
以下将是输出。
Notice: Compiled catalog for localdev.example.com in environment production in 0.09 seconds
Notice: /Stage[main]/Main/Node[brclelocal03.brcl.com]/Package[git]/ensure: created
Notice: /Stage[main]/Main/Node[brcllocal03.brcl.com]/Package[vim]/ensure: ensure changed 'purged' to 'latest'
如果我们需要在本地测试多台计算机的配置,只需更改Vagrant配置文件即可完成。
config.vm.define "brclelocal003" do |brclelocal003|
brclelocal03.vm.hostname = "brclelocal003.brcl.com"
end
config.vm.define "production" do |production|
production.vm.hostname = "brcleprod004.brcl.com"
end
假设我们有一台新的生产服务器,该服务器需要安装SSL实用程序。我们只需要使用以下配置扩展旧清单即可。
node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' {
package { ['SSL'] :
ensure => latest
}
}
在清单文件中进行配置更改后,我们只需要移至测试目录并运行基本的vagrant up命令即可启动brclelocal003.brcl.com和brcleprod004.brcl.com计算机。在我们的情况下,我们试图启动生产机器,这可以通过运行无业游民的生产命令来完成。将创建一个新机器,其名称为Vagrant文件中定义的生产名称,并将安装SSL软件包。