Master of puppet, Внимание! Тема для it! Вынос мозга

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
  [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
kenny85
28.04.2014 - 22:28
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
11
Автор я :)
Выкладываю по кускам книжку, которую пишу для тех кто хочет узнать, что такое система централизованного управления!
Остальное ниже. Я расскажу про puppet
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
kenny85
28.04.2014 - 22:28
1
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Что такое puppet?
Puppet клиент серверное программное обеспечение для централизованного управления конфигурация операционных систем и программного обеспечения, как под управлением unix-подобных операционных систем,так и систем под управление windows( через cygwin).
Puppet написан на языке Ruby, а конфигурация подчиненных серверов описывается «рецептами».
Что касается архитектуры, то архитектура puppet - классическая клиент серверная модель. Главный сервер будим называть его Master и подчиненные сервера(node).
Каждый подшефный сервер периодически, по умолчанию раз в 30 минут опрашивает Мастер сервер, если ли для него изменения, если таковые имеются то они применяются.
Для чего нужен puppet?
Предположим в вашей сети есть ряд серверов, таких как веб-сервера, почтовые сервера, сервера разработки и тд. Когда у вас не большой парк серверов их настройка и сопровождение не отнимает большое количество времени, но со временем парк может разрастись. Вы скажите ну и что, я смогу управлять им и без всяких дополнительный инструментов. Давайте представим такую ситуацию, в штат взяли нового программиста и вам как системному администратору его нужно добавить на ряд серверов, добавить в определенные группы, раздать права и прочее. Это может у вас занять уже достаточное время, хотя его профиль будет мало отличаться от уже созданных. Тут Вам как раз на помощь придет на помощь специализированное программного обеспечение для централизованного управлением конфигурациями. Один из представителей этой группы ПО и есть Puppet, тут мы и будем рассматривать как установить, сконфигурировать и написать рецепты для него. Надеюсь моя книга будет полезна, как для новичков, так и для тех кто уже знаком с Puppet и послужит неким справочником.
 
[^]
kenny85
28.04.2014 - 22:30
1
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Puppet поддерживается рядом операционных систем, ниже приведен список поддерживаемых операционных систем:

Debian and Ubuntu
Debian 6 “Squeeze”
Debian 7 “Wheezy”
Debian “Sid”
Ubuntu 12.04 LTS “Precise Pangolin”
Ubuntu 10.04 LTS “Lucid Lynx”
Ubuntu 12.10 “Quantal Quetzal”
Ubuntu 13.04 “Raring Ringtail”

ReadHat Base
Red Hat Enterprise Linux
Fedora
Fedora 18
Fedora 19
Fedora 20
Centos

Другие linux дистрибутивы
SUSE Linux Enterprise Server, версиии 11 или выше
Gentoo Linux
Mandriva Corporate Server 4
ArchLinux

BSD
FreeBSD 4.7 и выше
OpenBSD 4.1 и выше

Другие Unix ос
Mac OS X, начиная с версии 10.5 (Leopard) и выше
Oracle Solaris, версии 10 и выше
AIX, с 5 версии и выше
HP-UX

Windows
Windows Server 2012
Windows Server 2008 и 2008 R2
Windows Server 2003 и 2003 R2
Windows 7 и 8
Windows Vista
Для этих ос существуют пакеты для установки. Так же вы всегда сможете собрать puppet из исходных кодов.
Для успешной установки puppet нужно соблюдать зависимости, как уже говорилось puppet написан на языке ruby и следовательно ruby должен быть установлен в вашей системе. На данный момент для puppet версии 3 актуальная версия ruby 1.8.7.
Необходимые пакеты для разрешения зависимостей
Facter
Hiera
base64
cgi
digest/md5
etc
fileutils
ipaddr
openssl (>= 0.9.8o)
strscan
syslog
uri
webrick
webrick/https
xmlrpc

Я буду рассматривать и описывать процесс установки puppet версии 3.Х для debian 7.

Для debian как и для других дистрибутивов можно воспользоваться официальным репозитарием puppetlabs.
Приступаем к установки, процесс установки операционной системы я описывать не буду.
Вначале установим puppet master для этого Вам нужно сделать несколько не сложных шагов.
1) Необходимо добавить репозитарий puppet, для это необходимо скачать puppetlabs-release-{codename}.deb, в нашем случае это puppetlabs-release-wheezy.deb
root@puppet-master:/tmp# cd /tmp/
Код
root@puppet-master:/tmp# wget https://apt.puppetlabs.com/puppetlabs-release-wheezy.deb
--2014-02-22 14:20:05--  https://apt.puppetlabs.com/puppetlabs-release-wheezy.deb
Распознаётся apt.puppetlabs.com (apt.puppetlabs.com)... 198.58.114.168
Подключение к apt.puppetlabs.com (apt.puppetlabs.com)|198.58.114.168|:443... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: 3428 (3,3K) [application/x-debian-package]
Сохранение в каталог: ««puppetlabs-release-wheezy.deb»».

100%[========================================================================================================================================>] 3 428       --.-K/s   за 0s      

2014-02-22 14:20:31 (38,0 MB/s) - «puppetlabs-release-wheezy.deb» saved [3428/3428]

2) Устанавливаем скаченный пакет с помощью dpkg.
Код
root@puppet-master:/tmp# dpkg -i ./puppetlabs-release-wheezy.deb
Выбор ранее не выбранного пакета puppetlabs-release.
(Чтение базы данных … на данный момент установлено 30228 файлов и каталогов.)
Распаковывается пакет puppetlabs-release (из файла …/puppetlabs-release-wheezy.deb) …
Настраивается пакет puppetlabs-release (1.0-7) …
3) Обновляем список репозитариев с помощью apt-get update
Код
root@puppet-master:/tmp# apt-get update

Если обновления прошло без проблем и мы получили списки пакетов, можно двигаться дальше.
Преступаем к установки мастера.
Командуем системе установить puppetmaster.
Код
root@puppet-master:/tmp# apt-get install puppetmaster
Чтение списков пакетов… Готово
Построение дерева зависимостей      
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
 augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas-ruby1.9.1 libaugeas0 libjson-ruby libruby libruby1.9.1 libyaml-0-2 puppet-common puppetmaster-common ruby
 ruby-json ruby-rgen ruby-shadow ruby1.9.1 virt-what
Предлагаемые пакеты:
 augeas-doc augeas-tools ruby-selinux libselinux-ruby1.8 librrd-ruby1.9.1 librrd-ruby1.8 apache2 nginx puppet-el vim-puppet stompserver ruby-stomp libstomp-ruby1.8 rdoc
 ruby-ldap libldap-ruby1.8 puppetdb-terminus ri ruby-dev ruby1.9.1-examples ri1.9.1 graphviz ruby1.9.1-dev ruby-switch
НОВЫЕ пакеты, которые будут установлены:
 augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas-ruby1.9.1 libaugeas0 libjson-ruby libruby libruby1.9.1 libyaml-0-2 puppet-common puppetmaster
 puppetmaster-common ruby ruby-json ruby-rgen ruby-shadow ruby1.9.1 virt-what
обновлено 0, установлено 20 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 6 622 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 21,0 MB.
Хотите продолжить [Д/н]?

Как видим помимо самого puppetmaster будут установлены все необходимые пакеты. Отвечаем утвердительно и ждем окончания процесса установки. После установки можно и нужно проверить версию установленного puppet
Код
root@puppet-master:/tmp# puppet --version
3.4.3

На этом установка puppetmaster закончена. В завершение проверим запущен ли puppet
Код
root@puppet-master:/tmp# ps aux|grep puppet|grep -v grep
puppet    3845  0.0  7.0 112496 35420 ?        Ssl  14:35   0:00 /usr/bin/ruby /usr/bin/puppet master --masterport=8140

Как видно сервер запущен и готов к подключению клиентов. Теперь давайте установим клиент puppet и начнем творить магию.
Предположим что у нас есть главный сервер имя хоста puppet-master и подчиненный сервер с именем puppet-node, мастер сервер у нас уже готов, осалось установить и настроить клиент puppet на сервере puppet-node.
Чтобы клиент мог обмениваться информацией с мастером они должны друг друга видеть по имени, теперь проверим это.
Проверяем с puppet-node.
Код
root@puppet-node:~# ping puppet-master -c 1
PING puppet-master.example.com (172.16.82.132) 56(84) bytes of data.
64 bytes from puppet-master.example.com (172.16.82.132): icmp_req=1 ttl=64 time=0.373 ms

--- puppet-master.example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.373/0.373/0.373/0.000 ms
Теперь с хоста puppet-master
root@puppet-master:/# ping puppet-node -c 1
PING puppet-node.example.com (172.16.82.133) 56(84) bytes of data.
64 bytes from puppet-node.example.com (172.16.82.133): icmp_req=1 ttl=64 time=0.487 ms

--- puppet-node.example.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.487/0.487/0.487/0.000 ms

Как мы можем увидеть оба хоста друг друга видят.
Приступаем к установки puppet агента сделаем несколько шагов.
1) Проверим есть ли в репозитариях агент:
Код
root@puppet-node:~# apt-cache search puppet|grep agent
puppet - Centralized configuration management - agent startup and compatibility scripts


2) Устанавливаем агента
Код
root@puppet-node:~# apt-get install puppet
Чтение списков пакетов… Готово
Построение дерева зависимостей      
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
 augeas-lenses debconf-utils facter libaugeas-ruby1.8 libaugeas0 libruby1.8 libruby1.9.1 libyaml-0-2 puppet-common ruby ruby-json ruby-shadow ruby1.8 ruby1.9.1
Предлагаемые пакеты:
 augeas-doc augeas-tools puppet-el vim-puppet etckeeper ruby-selinux librrd-ruby1.8 ri ruby-dev ruby1.8-examples ri1.8 ruby-switch ruby1.9.1-examples ri1.9.1 graphviz
 ruby1.9.1-dev
Рекомендуемые пакеты:
 rdoc
НОВЫЕ пакеты, которые будут установлены:
 augeas-lenses debconf-utils facter libaugeas-ruby1.8 libaugeas0 libruby1.8 libruby1.9.1 libyaml-0-2 puppet puppet-common ruby ruby-json ruby-shadow ruby1.8 ruby1.9.1
обновлено 0, установлено 15 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 9 053 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 26,0 MB.

Как видим помимо puppet будут установлены пакеты от которых зависит агент.
После установки, нам необходимо настроить агент на наш сервер.
Редактируем конфигурационный файл агента, в linux он обычно расположен в /etc/puppet/
Отредактируем его добавив адрес сервера:
Код
vi /etc/puppet/puppet.conf

Создаем новую секцию agent:
Код
server = puppet-master.example.com

Тем самым мы сообщаем агенту, что сервер который им управляет имеет имя puppet-master.example.com
Далее нам необходимо создать сертификат для агента, а после этого его подписать на мастер сервере.
На хосте puppet-node выполним.
Код
root@puppet-node:~# puppet agent  --test -v
После выполнения команды будет примерно такой вывод.
root@puppet-node:~# puppet agent  --test -v
info: Creating a new SSL key for puppet-node.example.com
info: Caching certificate for ca
info: Caching certificate_request for puppet-node.example.com
Exiting; no certificate found and waitforcert is disabled

Этот вывод означает, что агент создал для себя сертификат и отправил его на сервер для того чтобы мы его подписали и приняли на сервере. Этим и займемся, для начала посмотрим какие сертификаты ожидают подтверждения.
Код
root@puppet-master:~# puppet cert list
 "puppet-node.example.com" (MD5) 6A:BF:75:35:01:7C:47:57:C3:DF:BC:0C:BB:39:C4:1F

Как мы видим в списке есть наш сервер с которого мы отправили запрос. Далее необходимо принять сертификат. Для этого существует команда puppet cert sign <Имя сервера>.

Код
root@puppet-master:~# puppet cert sign puppet-node.example.com
Notice: Signed certificate request for puppet-node.example.com
Notice: Removing file Puppet::SSL::CertificateRequest puppet-node.example.com at '/var/lib/puppet/ssl/ca/requests/puppet-node.example.com.pem'

Сертификат подтвержден и теперь сервер и клиент могут обмениваться информацией. На этом установка завершена, можно переходить к следующему шагу написанию манифестов.

Это сообщение отредактировал kenny85 - 28.04.2014 - 22:32
 
[^]
kenny85
28.04.2014 - 22:33
1
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Рецепты, как правильно готовить.
Как и в приготовление пиши, так и в конфигурации серверов, puppet оперирует манифестами, для каждого сервера должен быть описан манифест, в котором описывается что puppet должен сделать на конкретном сервере.
И так мы начинаем готовить с puppet.
Создаем файл site.pp там мы будем хранить список подчиненных серверов, обычно файл расположен по пути /etc/puppet/manifests/site.pp.
Предположим на сервере мы хотим создать файл который будет расположен в /tmp со содержанием: «fist manifest»
Для этого нам потребуется создать класс в файле site.pp
Код

file { '/tmp/fist_file':
content => "fist manifest\n",
}

Полный код описывающий на сервер puppet-node приведен ниже
Код
node puppet-node{
       file { '/tmp/fist_file':
       content => "fist manifest\n",
       }

}

Тут мы описали dns имя puppet-node и сообщаем, что на этом сервере необходимо создать файл fist_file с содержанием fist manifest. Можно подождать и проверить создался ли файл или нет, если вы не желаете ждать, то можно выполнить на puppet-node следующую команду puppet agent -t –v, после выполнения команды можно проверить, что файл действительно создался
Код
root@puppet-node:~# cat /tmp/fist_file
fist manifest


Добавлено в 22:34
Если тема будет востребована, продолжу рассказ.
 
[^]
ReSha
28.04.2014 - 22:35
0
Статус: Offline


Профессор

Регистрация: 9.08.13
Сообщений: 159
Вроде не дурак.
Не понял нихера.
полюбому +
 
[^]
Pontifex
28.04.2014 - 22:36
2
Статус: Offline


Ярила

Регистрация: 22.04.09
Сообщений: 1003
Бльооо! Ты вынес мне мозг!

Тема еще раз доказывает, что у нас слишком перебор с айтишниками, а судя по "рукожопским" темам - со средне-специальным, да и вообще навыками ручного труда - явный недобор.

Написал бы как в палке дырку высверлить - и то больше пользы.

Это сообщение отредактировал Pontifex - 28.04.2014 - 22:38
 
[^]
YurКа
28.04.2014 - 22:37
16
Статус: Offline


Самый добрый

Регистрация: 17.07.12
Сообщений: 1362
Вот Master of puppets rulez.gif
 
[^]
kenny85
28.04.2014 - 22:39
2
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Да софт и назвали в честь песни :)
У меня специфика такова, что рулить огромными фермами серверов, без инструмента суицид, со временем набрался материал и я решил написать некую брошюру и выложить в паблик.
 
[^]
mervigen
28.04.2014 - 22:39
0
Статус: Offline


Восставший из Бана. Дважды.

Регистрация: 10.07.13
Сообщений: 1179
Мне бы столько знаний,
 
[^]
Narkozzz
28.04.2014 - 22:42
0
Статус: Offline


Гойдофоб

Регистрация: 8.06.10
Сообщений: 26896
Автор, на хабр запиливай, тут не оценят.
 
[^]
kenny85
28.04.2014 - 22:44
1
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Цитата (Narkozzz @ 28.04.2014 - 23:42)
Автор, на хабр запиливай, тут не оценят.

Не там слишком пафасные Одмины))))))))
Уже пару раз сталкивался с их неадекватной порчей кармы)))
Даже на HL конферециии более простые люди.

Добавлено в 22:47
У моих коллег вызывает умиленение название книжки

Это сообщение отредактировал kenny85 - 28.04.2014 - 22:50

Master of puppet
 
[^]
YoMan78
28.04.2014 - 22:50
-3
Статус: Offline


Мельник

Регистрация: 7.08.11
Сообщений: 5322
Цитата (kenny85 @ 28.04.2014 - 23:28)
Puppet написан на языке Ruby, а конфигурация подчиненных серверов описывается «рецептами».

Нет-нет не продолжай. Ща мы там еще до Шефа после Папета дойдем. Все эти клаудные извращения интересны только админам. Когда шудры собираются в группы и умничают это жесть. lol.gif

Это сообщение отредактировал YoMan78 - 28.04.2014 - 22:53

Master of puppet
 
[^]
kenny85
28.04.2014 - 22:52
1
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
В описании топика предупреждение))) ну минусы так минусы :)

Это сообщение отредактировал kenny85 - 28.04.2014 - 22:54
 
[^]
HEPB
28.04.2014 - 22:56
0
Статус: Offline


Юморист

Регистрация: 4.01.10
Сообщений: 553
Блин, я-то обрадовался, думал про управление толпой ..
Хотя на высших уровнях разница не существенна ...

Это сообщение отредактировал HEPB - 28.04.2014 - 22:57
 
[^]
kenny85
28.04.2014 - 22:59
0
Статус: Offline


Приколист

Регистрация: 21.04.14
Сообщений: 341
Цитата (HEPB @ 28.04.2014 - 23:56)
Блин, я-то обрадовался, думал про управление толпой ..
Хотя на высших уровнях разница не существенна ...

Что толпа серверов, что толпы людей алгоритмы схожи как не крути. cool.gif
 
[^]
alexcap2010
28.04.2014 - 22:59
0
Статус: Offline


Ярила

Регистрация: 31.07.10
Сообщений: 1753
чет ни хера не понял, может потому что ребенок родился у меня
и на федоры линуксы и прочее оси пока насрать

Это сообщение отредактировал alexcap2010 - 28.04.2014 - 23:03
 
[^]
Серджиеску
28.04.2014 - 23:02
0
Статус: Offline


Ярила

Регистрация: 9.05.13
Сообщений: 1724
ТС, ты мне ЯП сломал. За Metallicу - всегда + rulez.gif
Остальное - потом почитаю.

Это сообщение отредактировал Серджиеску - 28.04.2014 - 23:02
 
[^]
PashtetNo1
29.04.2014 - 00:05
0
Статус: Offline


Шутник

Регистрация: 2.02.11
Сообщений: 87
Цитата (HEPB @ 28.04.2014 - 22:56)
Блин, я-то обрадовался, думал про управление толпой ..
Хотя на высших уровнях разница не существенна ...

Удивительная игра слов master of puppet lol.gif Думать можно про что угодно.
Лучше сюда не заходить : ТЫЦ
 
[^]
toper
29.04.2014 - 01:29
0
Статус: Offline


Мы прибыле к вам с миром, таг... пасрать

Регистрация: 17.11.05
Сообщений: 5051
kenny85
теме зелень

тебе нужен кто-то, кто вычитает текст)
ну и по стилистике всякой (или чо у графоманов там бывает ещё) попинает

а ваще надо будет поковырять ентого зверька.

с удовольствием почитаю дальше, у самого никак руки не доходят дальше установки оси по сети
 
[^]
СахDeadyshka
2.05.2014 - 04:43
0
Статус: Offline


Сахалинский алкаж

Регистрация: 28.09.13
Сообщений: 148
Теме зелень но для моих местячковых нужд непременимо

А если где и применимо то лень =_=

Это сообщение отредактировал СахDeadyshka - 2.05.2014 - 04:44
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 4474
0 Пользователей:
[ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх