Настройка PUPPET
Официальная документация: https://docs.puppet.com/puppet/4.8/
- Настройка службы времени:
sudo apt-get -y install ntp
По желанию можно добавить свои серверы в /etc/ntp.conf и перезапустить службу
sudo service ntp restart
- Установка репозитория и самого пакета puppetserver:
cd ~ && wget https://apt.puppetlabs.com/puppetlabs-release-pc1-trusty.deb
sudo dpkg -i puppetlabs-release-pc1-trusty.deb
sudo apt-get update
sudo apt-get install –y puppetserver
-
Для определения количества ОЗУ доступного серверу puppet редактируется файл /etc/default/puppetserver а именно параметры JAVA_ARGS
-
Для указания агенту puppet на том же сервере адреса сервера редактируется файл /etc/puppetlabs/puppet/puppet.conf, а именно в него добавлется секция:
[main]
certname = devops
server = devops
- Запускаю службы сервера и агента puppet:
sudo /opt/puppetlabs/bin/puppet resource service puppetserver ensure=running enable=true
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
- Проверяю корректную работу агента:
sudo /opt/puppetlabs/bin/puppet agent --test
Официальное руководство: https://docs.puppet.com/puppet/latest/install_linux.html
- Устанавливаю информацию о репозитории puppet и сам puppet-agent на Ubuntu (в моем случае 16, Xenial):
wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-wheezy.deb
sudo apt-get update
sudo apt-get install puppet-agent
- Делаю то же самое на Centos или RedHat (у меня Centos 5.11):
wget https://yum.puppetlabs.com/puppetlabs-release-pc1-el-5.noarch.rpmrpm -Uvh puppetlabs-release-pc1-el-5.noarch.rpm
yum install puppet-agent
-
На обоих системах прописываю в /etc/hosts инфонмацию о сервере (в моем случае 10.0.1.6 devops) и настаиваю службу точного времени аналогично шагу №1
-
Редактирую файл конфигурации puppet на агентах: /etc/puppetlabs/puppet/puppet.conf , добавляя туда сведения о сервере:
[agent]
server = devops
- Запускаю и ставлю в автозапуск puppet на агентах командой:
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
- На сервере подписываю все сертификаты:
sudo /opt/puppetlabs/bin/puppet cert sign –all
- На клиентах проверяю связь с сервером:
sudo /opt/puppetlabs/bin/puppet agent –test
- Создаю тестовую среду ( https://docs.puppet.com/puppet/4.8/environments_creating.html ):
cd /etc/puppetlabs/code/environments
sudo cp -R production test
sudo mv test/environment.conf test/test.conf
- Создаю манифест для тестовой среды ( https://docs.puppet.com/puppet/latest/types/package.html ):
sudo vim /etc/puppetlabs/code/environments/test/manifests/test.pp
Со сценарием установки пакета "tree":
package { 'tree':
ensure => installed,
}
- На узлах прописываю тестовую среду по умолчанию в файле /etc/puppetlabs/puppet/puppet.conf ( https://docs.puppet.com/puppet/latest/configuration.html ):
environment = test
И запускаю принудительную связь с сервером puppet: sudo /opt/puppetlabs/bin/puppet agent --test
- Устаналиваю пакет whois и создаю хэш пароля "12345":
sudo apt-get install whois
mkpasswd
12345
- Переименовываю основной манифест ( https://docs.puppet.com/puppet/latest/dirs_manifest.html) и добавляю в него код создания нового пользователя (отдельно для каждого из двух узлов):
cd /etc/puppetlabs/code/environments/test/manifests
sudo mv test.pp site.pp
sudo vim sitee.pp
Добавляю следующие строки ( https://docs.puppet.com/puppet/latest/types/user.html):
node 'ubsrv' {
_ user { 'engin':_
_ _ name => 'engineer',
_ home => '/home/engineer',_
_ managehome => true,_
_ shell => '/bin/bash',_
_ ensure => present,_
_ password => 'OMbJkRx6Ocyok',_
_ groups => sudo,_
_ }_
}
_ _
node 'cnt3.vbox' {
_ user { 'engin':_
_ name => 'engineer',_
_ home => '/home/engineer',_
_ managehome => true,_
_ shell => '/bin/bash',_
_ ensure => present,_
_ password => 'OMbJkRx6Ocyok',_
_ groups => wheel,_
_ }_
}
- Создаю конфиг файлового сервера (файл /etc/puppetlabs/puppet/fileserver.conf по мануалу https://docs.puppet.com/puppet/latest/config_file_fileserver.html) с текстом:
[files]
_ path /etc/puppetlabs/code/files_
_ allow *_
- Создаю новый каталог
mkdir -p /etc/puppetlabs/code/files/test
- В нем создаю файл .bashrc со следующим содержимым:
# managed by puppet
echo "$(tput setaf 2)====== Привет ! ======"$(tput sgr 0)
echo "Точное время: $(date)"
echo "Место на дисках:"
df -h | sed -n '/^/dev/p'
echo "Имя хоста: $(tput setaf 3)$(hostname -f)$(tput sgr 0)"
- Дописываю в главный манифест /etc/puppetlabs/code/environments/test/manifests/site.pp текст ( https://docs.puppet.com/puppet/latest/types/file.html):
file { 'bashrc':
_ ensure => file,_
_ path => '/home/engineer/.bashrc',_
_ source => 'puppet:///files/test/.bashrc',_
_ owner => 'engineer',_
_ group => 'engineer',_
_ mode => '0644',_
}