Учебники

Puppet — Проверка настроек кукол

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