Марионетка - проверка настройки марионетки
В Puppet настройку можно протестировать локально. Следовательно, после того, как мы настроили мастер и узел Puppet, пришло время проверить настройку локально. У нас должен быть установлен Vagrant и Vagrant box локально, что помогает тестировать установку локально.
Настройка виртуальной машины
Поскольку мы тестируем настройку локально, на самом деле нам не требуется работающий мастер 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
В приведенном выше коде мы использовали средство подготовки оболочки, в котором мы пытаемся запустить сценарий оболочки с именем 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, пользователь может перейти в каталог test и запустить vagrant up command. Это загрузит новую виртуальную машину, позже установит Puppet, а затем запустит ее с помощью сценария оболочки.
Ниже будет вывод.
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 command. Будет создан новый компьютер с именем production, как определено в файле Vagrant, и на нем будет установлен пакет SSL.