В Puppet, установка может быть проверена локально. Следовательно, как только мы настроили мастер и узел Puppet, пришло время проверить настройки локально. Нам нужно, чтобы Vagrant и Vagrant box были установлены локально, что помогает в локальном тестировании установки.
Настройка виртуальной машины
Поскольку мы тестируем настройки локально, нам фактически не требуется работающий мастер Puppet. Это означает, что без фактического запуска мастера Puppet на сервере мы можем просто использовать Puppet, чтобы применить команду для проверки правильности настройки Puppet. Команда Puppet apply применяет изменения из локального / 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
В приведенном выше коде мы использовали поставщика оболочки, в котором мы пытаемся запустить сценарий оболочки с именем update-puppet.sh . Сценарий находится в том же каталоге, где находится файл 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, который установит некоторое программное обеспечение на ВМ.
node 'brclelocal03.brcl.com' { package { ['vim','git'] : ensure => latest } } echo "Running puppet" sudo puppet apply /etc/puppet/manifests/site.pp
Как только пользователь подготовит вышеуказанный сценарий с необходимой конфигурацией файла Vagrant, он сможет перейти в тестовый каталог и выполнить команду vagrant up . Это загрузит новую виртуальную машину, позже установит 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 up production . Будет создан новый компьютер с именем производства, как определено в файле Vagrant, и на нем будет установлен пакет SSL.