Skip to content

Latest commit

 

History

History
224 lines (113 loc) · 7.11 KB

Puppet.md

File metadata and controls

224 lines (113 loc) · 7.11 KB

Настройка PUPPET

Официальная документация: https://docs.puppet.com/puppet/4.8/

  1. Настройка службы времени:

sudo apt-get -y install ntp

По желанию можно добавить свои серверы в /etc/ntp.conf и перезапустить службу

sudo service ntp restart

  1. Установка репозитория и самого пакета 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

  1. Для определения количества ОЗУ доступного серверу puppet редактируется файл /etc/default/puppetserver а именно параметры JAVA_ARGS

  2. Для указания агенту puppet на том же сервере адреса сервера редактируется файл /etc/puppetlabs/puppet/puppet.conf, а именно в него добавлется секция:

[main]

certname = devops

server = devops

  1. Запускаю службы сервера и агента 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

  1. Проверяю корректную работу агента:

sudo /opt/puppetlabs/bin/puppet agent --test


Официальное руководство: https://docs.puppet.com/puppet/latest/install_linux.html

  1. Устанавливаю информацию о репозитории 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

  1. Делаю то же самое на 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

  1. На обоих системах прописываю в /etc/hosts инфонмацию о сервере (в моем случае 10.0.1.6 devops) и настаиваю службу точного времени аналогично шагу №1

  2. Редактирую файл конфигурации puppet на агентах: /etc/puppetlabs/puppet/puppet.conf , добавляя туда сведения о сервере:

[agent]

server = devops

  1. Запускаю и ставлю в автозапуск puppet на агентах командой:

sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

  1. На сервере подписываю все сертификаты:

sudo /opt/puppetlabs/bin/puppet cert sign –all

  1. На клиентах проверяю связь с сервером:

sudo /opt/puppetlabs/bin/puppet agent –test


  1. Создаю тестовую среду ( 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

  1. Создаю манифест для тестовой среды ( https://docs.puppet.com/puppet/latest/types/package.html ):

sudo vim /etc/puppetlabs/code/environments/test/manifests/test.pp

Со сценарием установки пакета "tree":

package { 'tree':

ensure => installed,

}

  1. На узлах прописываю тестовую среду по умолчанию в файле /etc/puppetlabs/puppet/puppet.conf ( https://docs.puppet.com/puppet/latest/configuration.html ):

environment = test

И запускаю принудительную связь с сервером puppet: sudo /opt/puppetlabs/bin/puppet agent --test


  1. Устаналиваю пакет whois и создаю хэш пароля "12345":

sudo apt-get install whois

mkpasswd

12345

  1. Переименовываю основной манифест ( 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,_

_ }_

}


  1. Создаю конфиг файлового сервера (файл /etc/puppetlabs/puppet/fileserver.conf по мануалу https://docs.puppet.com/puppet/latest/config_file_fileserver.html) с текстом:

[files]

_ path /etc/puppetlabs/code/files_

_ allow *_

  1. Создаю новый каталог

mkdir -p /etc/puppetlabs/code/files/test

  1. В нем создаю файл .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)"

  1. Дописываю в главный манифест /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',_

}