FastNetMon

Saturday, 3 April 2010

Перенос всей конфигурации Puppet в Subversion

Когда число конфигов и манифестов в Puppet улетает далеко за несколько сотен, встает проблема версионирования этих самых конфигов и манифестов. Как нельзя лучше для этого подходит VCS SVN. В этой статье я расскажу, как поместить всю конфигурацию Puppet сервера в SVN и как выполнять последующую работу с ним.

Допустим, у нас есть пустой репозиторий: https://domain.ru/configuration (как его сделать - можете найти в моем блоге по ключевому слову "subversion"), в котором мы планируем хранить конфиги Puppet.

Итак, в самую первую очередь необходимо сделать бэкап папки Puppet, чтобы случайно его не прибить в процессе работы:
tar -czf /root/puppet.tar.gz /etc/puppet


Теперь нам необходимо загрузить все имеющиеся у нас конфиги Puppet в Subversion, это делается командой import:

svn import /etc/puppet https://domain.ru/configuration/puppet -m 'init'


После этой операции в репозитории будет создана папка puppet и все конфиги будут лежать внутри нее.

Но, обращаю внимание, после этой операции папка /etc/puppet не становится рабочей копией! Она просто импортируется в репозиторий и все:

cd /etc/puppet
svn up
Skipped '.'
# что означает, что мы не минутой не в рабочей копии.


Теперь отключаем Puppet-сервер и сдвигаем исходную папку конфигов:
/etc/init.d/puppetmaster stop
mv /etc/puppet /etc/puppet_non_svn


Создаем новую папку для конфигов Puppet:

mkdir /etc/puppet
cd /etc/puppet


Делаем чекаут репозитория в нее:

svn co https://domain.ru/configuration/puppet ./ --username=puppet


Запускаем PuppetMaster:
/etc/init.d/puppetmaster start


Как Вы уже могли заметить, сервер Puppet работает с svn от имени пользователя puppet, в то время как я сам работаю по своему логину, nrg. Это сделано не случайно, а, во-первых, по соображениям безопасности и, во-вторых, по соображениям порядка :)

Дальнейшая работа с конфигурациями может выглядеть двумя способами - вы вносите изменения на сервере Puppet и коммитите их командой:
svn ci -m 'fix config'


либо исправляете конфиг "дома" (используя личный логин в svn):
svn ci -m 'fix config'


и после этого делаете обновление репозитория на сервере:

cd /etc/puppet
svn up


Ну вот и все, удачного использования и легкой поддержки кучи серверов :)

1 comment :

  1. Получается что при chekout выгрузится репозиторий pupppet и будет две папки /etc/puppet/puppet.

    ReplyDelete

Note: only a member of this blog may post a comment.