Марионетка - проверка настройки марионетки

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