В 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.