> Развертывание OpenSource Puppet 4 с несколькими Puppet masters. Часть I. Подготовительная
> Развертывание OpenSource Puppet 4 с несколькими Puppet masters. Часть III. Настройка puppet-db с помощью Puppet
Общие настройки серверов. На серверах puppet-master01, puppet-master02 и на puppet-db добавим репозитории puppetlabs:
На серверах puppet-master01, puppet-master02 установим puppet-сервер:
Проверим адрес, порт и требование авторизации в файле /etc/puppetlabs/puppetserver/conf.d/webserver.conf, по умолчанию должно быть:
На сервере puppet-db достаточно puppet-агента:
Остальное на puppet-db установим с помощью Puppet.
В файл /etc/puppetlabs/puppet/puppet.conf добавить настройки сервера сертификации и имя сервера puppet, к которому они будут обращаться (имя кластера):
Также эти настройки необходимо будет сделать для всех puppet-агентов на всех управляемых узлах, в т.ч. на puppet-db.
Сервер сертификации должен быть запущен в единственном экземпляре. Убедимся, что в файле /etc/puppetlabs/puppetserver/services.d/ca.cfg включен запуск сервиса сертификации:
Строка НЕ должна быть закомментирована.
В файле /etc/puppetlabs/puppet/puppet.conf нужно прописать альтернативные имена DNS для puppet-master01, для этого в секцию [main] добавим:
Далее эти имена будут сохранены в сертификате сервера.
Сгенерируем сертификат для puppet-master01 с учетом альтернативных имен DNS:
Запустим puppet-сервер на puppet-master01:
На остальных серверах puppet-master, кроме первого, нужно отключить запуск сервиса сертификации в файле /etc/puppetlabs/puppetserver/services.d/ca.cfg. Нужно закомментировать строку с certificate-authority-service, и раскомментировать sertificate-authority-disabled-service:
Настроим список DNS имен сервера в файле /etc/puppetlabs/puppet/puppet.conf, для этого в секцию [main] добавим:
Запросим сертификат для puppet-master02 у puppet-master01:
Подтвердим запрос сертификата от агента puppet-master02 на сервере puppet-master01:
Получим ответ агента на puppet-master02:
На puppet-master01 в списке сертификатов должно получиться что-то вроде этого:
ВНИМАНИЕ! Не забудьте скопировать сертификат центра сертификации /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem с puppet-master01 на puppet-master02 в тоже расположение с сохранением владельца и прав.
Запустим puppet-сервер на puppet-master02:
На всех серверах puppet-master установим git и rubygems:
Поместим пользователя r10k в группу puppet:
Создадим каталог для кэша репозитория и дадим на него права пользователю r10k и группе puppet:
Создадим каталог с настройками r10k:
Также на каждом сервере puppet-master нужно создать конфигурационный файл /etc/puppetlabs/r10k/r10k.yaml. Его содержимое будет зависеть от того, какого провайдера вы будете использовать для работы с git-репозиторием.
Этот провайдер доступен по умолчанию, и подойдет в тех случаях, если вы собираетесь использовать git-репозиторий в локальном каталоге без git-сервера; или простейший git-сервер с доступом по ssh.
Содержимое конфиуграционного файла /etc/puppetlabs/r10k/r10k.yaml:
Shellgit provider не умеет брать имя пользователя из конфигурационного файла r10k.yaml, поэтому для доступа к репозиторию на gitolite с нужным ключом зададим настройки в /r10k/.ssh/config:
Но лучше использовать rugged provider, тогда для каждого источника в r10k.yaml можно будет указать отдельный ключ и имя пользователя. Также можно будет работать с репозиториями по https-протоколу.
В Ubuntu для работы с ssh и https протоколами в rugged режиме необходимо скомпилировать библиотеку libssh2 с поддержкой openssl вместо libgcrypt:
Библиотека libssh2 версии 1.5.0-2.dsc из xenial не подойдет:
Придется сделать бэкпорт из yakkety. Установим необходимые пакеты на puppet-master01:
и на puppet-master02 (пакеты нужны для сборки rugged, через gem):
Cкачаем исходники libssh2 и распакуем их:
Добавим к описанию пакета дополнительную информацию о наших изменениях:
Нужно добавить в changelog описание вроде:
Зарелизить changelog:
В файле /libssh2-1.7.0/debian/control поменяем все вхождения libgcrypt20-dev на libssl-dev:
И соберем новый пакет с поддержкой openssl вместо libgcrypt:
Не забудем удалить libssh2-1-dev от старой версии libssh2-1:
Установим пересобранные пакеты на puppet-master01 и puppet-master02 (dev-пакет нужен для установки rugged через gem):
Установим r10k и rugged:
И создадим конфигурационный файл /etc/puppetlabs/r10k/r10k.yaml на puppet-master01 и puppet-master02 со следующим содержимым:
Первоначальная настройка репозитория. Склонируем репозиторий puppet-environments на свой рабочий компьютер:
Заполним репозиторий первоначальным содержимым, которое возьмем на puppet-master01:
Перейдем в репозиторий и добавим символическую ссылку для origin, которая будет называться production, в соответствии с именем окружения в puppet:
И зафиксируем изменения:
Создадим post-recive хук в репозиториии puppet-environments, который будет запускать r10k на серверах puppet-master01 и puppet-master02, со следующим содержимым:
Не забудем сделать его исполняемым:
Создадим директорию manifets и файл .keep, чтобы git не игнорировал пустую директорию:
Отправим изменения в репозиторий:
Дальше git-хук с помощью r10k внесет соответствующие изменения в /etc/puppetlabs/code/environments на каждом сервере. Проверим наличие изменений на puppet-master01 и puppet-master02.
librarian-puppet.com
На компьютере, где мы работаем с репозиторием, с помощью gem установим librarian-puppet:
Удалим директорию modules со всеми вложенными файлами, которые были скопированы из первоначального репозитория Puppet:
Проинициализируем librarian-puppet в репозитории:
Закомментируем строку с metadata в Puppetfile. Приведем Puppetfile к следующему виду:
Создадим файл .keep в директории modules, чтобы git не игнорировал пустую директорию:
Добавим, сгенерированные с помощью команды librarian-puppet init, файлы в git, и отправим изменения на серверы puppet-master01 и puppet-master02:
Если все было настроено правильно, то в каталоге /etc/puppetlabs/code/environments/production/modules/ на серверах должно появиться модули перечисленные в Puppetfile.
Развертывание OpenSource Puppet 4 с несколькими Puppet masters. Часть III. Настройка puppet-db с помощью Puppet
> Развертывание OpenSource Puppet 4 с несколькими Puppet masters. Часть III. Настройка puppet-db с помощью Puppet
Настройка серверов puppet
Общие настройки серверов. На серверах puppet-master01, puppet-master02 и на puppet-db добавим репозитории puppetlabs:
wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt update
На серверах puppet-master01, puppet-master02 установим puppet-сервер:
sudo apt install puppetserver
Проверим адрес, порт и требование авторизации в файле /etc/puppetlabs/puppetserver/conf.d/webserver.conf, по умолчанию должно быть:
client-auth: want
ssl-host: 0.0.0.0
ssl-port: 8140
На сервере puppet-db достаточно puppet-агента:
sudo apt install puppet-agent
Остальное на puppet-db установим с помощью Puppet.
Общие настройки puppet-агентов
В файл /etc/puppetlabs/puppet/puppet.conf добавить настройки сервера сертификации и имя сервера puppet, к которому они будут обращаться (имя кластера):
[main]
server = puppetmaster.example.com
ca_server = puppet-master01.example.com
Также эти настройки необходимо будет сделать для всех puppet-агентов на всех управляемых узлах, в т.ч. на puppet-db.
Настройка ноды puppet-master01
Сервер сертификации должен быть запущен в единственном экземпляре. Убедимся, что в файле /etc/puppetlabs/puppetserver/services.d/ca.cfg включен запуск сервиса сертификации:
puppetlabs.services.ca.certificate-authority-service/certificate-authority-service
Строка НЕ должна быть закомментирована.
Настроим список DNS имен сервера
В файле /etc/puppetlabs/puppet/puppet.conf нужно прописать альтернативные имена DNS для puppet-master01, для этого в секцию [main] добавим:
dns_alt_names = puppet-master01,puppet-master01.example.com,puppetmaster,puppetmaster.example.com
Далее эти имена будут сохранены в сертификате сервера.
Сгенерируем сертификат для puppet-master01 с учетом альтернативных имен DNS:
aspetrenko@puppet-master01:~$ sudo -i puppet cert generate puppet-master01.example.com --dns_alt_names=puppet-master01,puppet-master01.example.com,puppetmaster,puppetmaster.example.com
Notice: puppet-master01.example.com.pem has a waiting certificate request
Notice: Signed certificate request for puppet-master01.example.com.pem
Notice: Removing file Puppet::SSL::CertificateRequest puppet-master01.example.com.pem at '/etc/puppetlabs/puppet/ssl/ca/requests/puppet-master01.example.com.pem.pem'
Notice: Removing file Puppet::SSL::CertificateRequest puppet-master01.example.com.pem at '/etc/puppetlabs/puppet/ssl/certificate_requests/puppet-master01.example.com.pem.pem'
Запустим puppet-сервер на puppet-master01:
sudo systemctl start puppetserver.service
Настройка ноды puppet-master02
На остальных серверах puppet-master, кроме первого, нужно отключить запуск сервиса сертификации в файле /etc/puppetlabs/puppetserver/services.d/ca.cfg. Нужно закомментировать строку с certificate-authority-service, и раскомментировать sertificate-authority-disabled-service:
# To enable the CA service, leave the following line uncommented
#puppetlabs.services.ca.certificate-authority-service/certificate-authority-service
# To disable the CA service, comment out the above line and uncomment the line below
puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service
Настроим список DNS имен сервера в файле /etc/puppetlabs/puppet/puppet.conf, для этого в секцию [main] добавим:
dns_alt_names = puppet-master02,puppet-master02.example.com,puppetmaster,puppetmaster.example.com
Запросим сертификат для puppet-master02 у puppet-master01:
aspetrenko@puppet-master02:~$ sudo -i puppet agent --test --waitforcert 60
Info: Creating a new SSL key for puppet-master02.example.com
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for puppet-master02.example.com
Info: Certificate Request fingerprint (SHA256): 16:67:D9:84:A3:50:B6:43:35:08:FE:BA:05:77:7C:C5:E7:3E:A5:D6:D1:00:BE:11:63:AB:6E:93:B7:37:0A:33
Info: Caching certificate for ca
Info: Caching certificate for puppet-master02.example.com
Info: Caching certificate_revocation_list for ca
Подтвердим запрос сертификата от агента puppet-master02 на сервере puppet-master01:
aspetrenko@puppet-master01:~$ sudo -i puppet cert sign puppet-master02.example.com --allow-dns-alt-names
Signing Certificate Request for:
"puppet-master02.example.com" (SHA256) 16:67:D9:84:A3:50:B6:43:35:08:FE:BA:05:77:7C:C5:E7:3E:A5:D6:D1:00:BE:11:63:AB:6E:93:B7:37:0A:33 (alt names: "DNS:puppet-master02", "DNS:puppet-master02.example.com", "DNS:puppetmaster", "DNS:puppetmaster.example.com")
**
Notice: Signed certificate request for puppet-master02.example.com
Notice: Removing file Puppet::SSL::CertificateRequest puppet-master02.example.com at '/etc/puppetlabs/puppet/ssl/ca/requests/puppet-master02.example.com.pem'
Получим ответ агента на puppet-master02:
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for puppet-master02.example.com
Info: Applying configuration version '1477917008'
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in 0.02 seconds
На puppet-master01 в списке сертификатов должно получиться что-то вроде этого:
aspetrenko@puppet-master01:~$ sudo -i puppet cert list -a
+ "puppet-master01.example.com" (SHA256) 1A:15:76:96:33:6E:F9:DA:9F:C3:8D:9E:FC:98:BA:FB:10:CF:FA:27:54:2C:F2:55:8D:B9:AA:6C:52:FA:9F:C1 (alt names: "DNS:puppet-master01", "DNS:puppet-master01.example.com", "DNS:puppetmaster", "DNS:puppetmaster.example.com")
+ "puppet-master02.example.com" (SHA256) 80:1B:2C:49:E3:16:C6:37:B5:FC:E2:40:6B:49:B8:9A:95:91:C1:76:9C:79:3D:D5:0A:81:29:1D:E6:C3:B6:52 (alt names: "DNS:puppet-master02", "DNS:puppet-master02.example.com", "DNS:puppetmaster", "DNS:puppetmaster.example.com")
ВНИМАНИЕ! Не забудьте скопировать сертификат центра сертификации /etc/puppetlabs/puppet/ssl/ca/ca_crl.pem с puppet-master01 на puppet-master02 в тоже расположение с сохранением владельца и прав.
Запустим puppet-сервер на puppet-master02:
sudo systemctl start puppetserver.service
Установка r10k на серверы puppet-master01 и puppet-master02
Документация по настройке r10k
На всех серверах puppet-master установим git и rubygems:
sudo apt install git rubygems
sudo gem install r10k
Поместим пользователя r10k в группу puppet:
sudo usermod -a -G puppet r10k
Создадим каталог для кэша репозитория и дадим на него права пользователю r10k и группе puppet:
sudo mkdir -p /var/cache/r10k
sudo chown -R r10k:puppet /var/cache/r10k
sudo chmod 2775 /var/cache/r10k
Создадим каталог с настройками r10k:
sudo mkdir -p /etc/puppetlabs/r10k
sudo chown -R puppet:puppet /etc/puppetlabs
sudo chmod -R g+w /etc/puppetlabs
Также на каждом сервере puppet-master нужно создать конфигурационный файл /etc/puppetlabs/r10k/r10k.yaml. Его содержимое будет зависеть от того, какого провайдера вы будете использовать для работы с git-репозиторием.
Shellgit-провайдер
Этот провайдер доступен по умолчанию, и подойдет в тех случаях, если вы собираетесь использовать git-репозиторий в локальном каталоге без git-сервера; или простейший git-сервер с доступом по ssh.
Содержимое конфиуграционного файла /etc/puppetlabs/r10k/r10k.yaml:
# location for cached repos
:cachedir: '/var/cache/r10k'
git:
provider: 'shellgit'
# git repositories containing environments
:sources:
:base:
remote: 'gitolite3@sgl-git.example.com:puppet-environments' # Для доступа к репозиторию в gitolite3
# remote: '/srv/puppet.git' # Для доступа к shared репозиторию в локальном каталоге
# remote: 'ssh://aspetrenko@puppet-master01/srv/puppet.git' # Для доступа с помощью ssh к репозиторию в файловой системе на другом компьютере
basedir: '/etc/puppetlabs/code/environments/'
Shellgit provider не умеет брать имя пользователя из конфигурационного файла r10k.yaml, поэтому для доступа к репозиторию на gitolite с нужным ключом зададим настройки в /r10k/.ssh/config:
host sgl-git.example.com
HostName sgl-git.example.com
IdentityFile /home/r10k/.ssh/r10k
User gitolite3
Rugged-провайдер
Но лучше использовать rugged provider, тогда для каждого источника в r10k.yaml можно будет указать отдельный ключ и имя пользователя. Также можно будет работать с репозиториями по https-протоколу.
В Ubuntu для работы с ssh и https протоколами в rugged режиме необходимо скомпилировать библиотеку libssh2 с поддержкой openssl вместо libgcrypt:
libssh2 on Debian and Ubuntu is compiled against libgcrypto instead of OpenSSL due to licensing reasons, and unfortunately libgcrypto does not support a number of required operations, including reading from a private key file. You will need to either use shellgit or recompile your own libssh2-1 package to use OpenSSL on these distributions.
Библиотека libssh2 версии 1.5.0-2.dsc из xenial не подойдет:
The error sources to libssh2/src/libgcrypt.c. Elsewhere, libssh2 v 1.6.0 works without complaint. If updating isn't available, as a workaround, use https instead of ssh to connect to private git repos.
Придется сделать бэкпорт из yakkety. Установим необходимые пакеты на puppet-master01:
sudo apt install make cmake pkg-config libssh2-1-dev ruby-dev rubygems libevent-pthreads-2.0-5 openssl libssl-dev libz-dev libhttp-parser-dev
sudo apt install debhelper dh-autoreconf chrpath devscripts
и на puppet-master02 (пакеты нужны для сборки rugged, через gem):
sudo apt install make cmake pkg-config ruby-dev rubygems libevent-pthreads-2.0-5 openssl libssl-dev libz-dev libhttp-parser-dev
Cкачаем исходники libssh2 и распакуем их:
dget http://archive.ubuntu.com/ubuntu/pool/universe/libs/libssh2/libssh2_1.7.0-1.dsc
dpkg-source -x ./libssh2_1.7.0-1.dsc
Добавим к описанию пакета дополнительную информацию о наших изменениях:
cd libssh2-1.7.0/
dch -i
Нужно добавить в changelog описание вроде:
* Backport from yakkety
* Recompile with openssl support
Зарелизить changelog:
dch -r
В файле /libssh2-1.7.0/debian/control поменяем все вхождения libgcrypt20-dev на libssl-dev:
sed -i 's/libgcrypt20-dev/libssl-dev/g' debian/control
И соберем новый пакет с поддержкой openssl вместо libgcrypt:
./configure --with-openssl --without-libgcrypt
dpkg-buildpackage -rfakeroot
Не забудем удалить libssh2-1-dev от старой версии libssh2-1:
sudo apt remove libssh2-1-dev
Установим пересобранные пакеты на puppet-master01 и puppet-master02 (dev-пакет нужен для установки rugged через gem):
sudo dpkg -i libssh2-1_1.7.0-1ubuntu1_amd64.deb libssh2-1-dbg_1.7.0-1ubuntu1_amd64.deb libssh2-1-dev_1.7.0-1ubuntu1_amd64.deb
Установим r10k и rugged:
sudo gem install r10k rugged
И создадим конфигурационный файл /etc/puppetlabs/r10k/r10k.yaml на puppet-master01 и puppet-master02 со следующим содержимым:
# location for cached repos
:cachedir: '/var/cache/r10k'
git:
provider: 'rugged'
private_key: '/home/r10k/.ssh/r10k'
# git repositories containing environments
:sources:
:base:
remote: 'ssh://gitolite3@sgl-git.example.com/puppet-environments'
basedir: '/etc/puppetlabs/code/environments/'
Конфигурирование репозитория puppet-environments.git
Первоначальная настройка репозитория. Склонируем репозиторий puppet-environments на свой рабочий компьютер:
aspetrenko@aspetrenko-pc:~/sgl-git$ git clone gitolite3@sgl-git:puppet-environments
Cloning into 'puppet-environments'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
Заполним репозиторий первоначальным содержимым, которое возьмем на puppet-master01:
aspetrenko@aspetrenko-pc:~/sgl-git$ scp -r aspetrenko@puppet-master01:/etc/puppetlabs/code/environments/production/* /home/GKSM/aspetrenko/sgl-git/puppet-environments/
Перейдем в репозиторий и добавим символическую ссылку для origin, которая будет называться production, в соответствии с именем окружения в puppet:
aspetrenko@aspetrenko-pc:~/sgl-git$ cd puppet-environments/
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git symbolic-ref HEAD refs/heads/production
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git push --set-upstream origin production
И зафиксируем изменения:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git add --all
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git commit -a -m "Initial commit"
Создание post-recive хука
Создадим post-recive хук в репозиториии puppet-environments, который будет запускать r10k на серверах puppet-master01 и puppet-master02, со следующим содержимым:
aspetrenko@sgl-git:~$ sudo cat /media/data/repositories/puppet-environments.git/hooks/post-receive
#!/bin/bash
umask 0002
while read oldrev newrev ref
do
branch=$(echo $ref | cut -d/ -f3)
echo
echo "--> Deploying ${branch}..."
echo
ssh -i /var/lib/gitolite3/.ssh/gitolite3 r10k@puppet-master01 "r10k deploy environment $branch -p"
ssh -i /var/lib/gitolite3/.ssh/gitolite3 r10k@puppet-master02 "r10k deploy environment $branch -p"
# sometimes r10k gets permissions wrong too
find /etc/puppetlabs/code/environments/$branch/modules -type d -exec chmod 2775 {} \; 2> /dev/null
find /etc/puppetlabs/code/environments/$branch/modules -type f -exec chmod 664 {} \; 2> /dev/null
done
Не забудем сделать его исполняемым:
aspetrenko@sgl-git:~$ sudo chmod 0775 /media/data/repositories/puppet-environments.git/hooks/post-receive
Проверка post-recive хука
Создадим директорию manifets и файл .keep, чтобы git не игнорировал пустую директорию:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ touch manifests/.keep
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git add manifests/.keep
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git commit manifests/.keep -m "Test commit"
[production 72bd288] Test commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 manifests/.keep
Отправим изменения в репозиторий:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git push -u origin production
Дальше git-хук с помощью r10k внесет соответствующие изменения в /etc/puppetlabs/code/environments на каждом сервере. Проверим наличие изменений на puppet-master01 и puppet-master02.
Установка и настройка Librarian-puppet
librarian-puppet.com
Librarian-puppet берет на себя управления директорией modules/, и всегда будет переустанавливать (если отсутствуют) модули описанные в Puppetfile, поэтому вам не нужно хранить и отслеживать состояние директории modules/ в Git.
Librarian-puppet — это менеджер (ака Bundler для gem) для вашей инфраструктуры puppet. Вы можете использовать librarian-puppet для управления модулями Puppet вне зависимости от того, где хранятся модули в Puppet Forge, в Git-репозитории или в локальной папке.
Librarian-puppet умеет разрешать зависимости описанные в Modulefile или metadata.json.
Forge-модули могут быть установлены из Puppetlabs Forge или внутреннего хранилища Forge такого как Pulp.
Git-модули могут быть установлены из ветки, тэга или специфического коммита. Модули могут быть установлены из GitHub используя tarballs, без необходимости установки Git. Модули могут быть установлены из каталога в локальной файловой системе. Зависимости модулей могут быть разрешены прозрачно без необходимости перечислять все модули в явном виде.
Установка librarian-puppet
На компьютере, где мы работаем с репозиторием, с помощью gem установим librarian-puppet:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ sudo gem install librarian-puppet
Удалим директорию modules со всеми вложенными файлами, которые были скопированы из первоначального репозитория Puppet:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ git rm -rf modules
Проинициализируем librarian-puppet в репозитории:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ librarian-puppet init
Закомментируем строку с metadata в Puppetfile. Приведем Puppetfile к следующему виду:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ cat Puppetfile
#!/usr/bin/env ruby
#^syntax detection
forge "https://forgeapi.puppetlabs.com"
# use dependencies defined in metadata.json
# metadata
# use dependencies defined in Modulefile
# modulefile
# A module from the Puppet Forge
mod 'puppetlabs-stdlib'
mod 'puppetlabs-ntp'
mod 'puppetlabs-puppetdb'
mod 'puppetlabs-firewall' # For puppetlabs-puppetdb
mod 'puppetlabs-inifile' # For puppetlabs-puppetdb
mod 'puppetlabs-postgresql' # For puppetlabs-puppetdb
mod 'puppetlabs-apt' # For puppetlabs-puppetdb
mod 'puppetlabs-concat' # For puppetlabs-puppetdb
Создадим файл .keep в директории modules, чтобы git не игнорировал пустую директорию:
aspetrenko@aspetrenko-pc:~/sgl-git/puppet-environments$ touch modules/.keep
Добавим, сгенерированные с помощью команды librarian-puppet init, файлы в git, и отправим изменения на серверы puppet-master01 и puppet-master02:
git add --all
git commit -a -m "librarian-puppet init"
git push -u origin production
Если все было настроено правильно, то в каталоге /etc/puppetlabs/code/environments/production/modules/ на серверах должно появиться модули перечисленные в Puppetfile.
Развертывание OpenSource Puppet 4 с несколькими Puppet masters. Часть III. Настройка puppet-db с помощью Puppet
Поделиться с друзьями