понедельник, 22 апреля 2013 г.

SaltStack - Установка saltstack-master на Debian Squeeze x86_64








Что такое SaltStack и с чем его едят я описал тут
В текущей статье я опишу как установить SaltStack-master на Debian.

Устанавливаем saltstack-master

В начале начал следует подключить backports для того чтобы удовлетворить все возможные зависимости SaltStack'a.
echo deb http://backports.debian.org/debian-backports/ \
 squeeze-backports main > \
 /etc/apt/sources.list.d/backports.list

apt-get update
apt-get dist-upgrade -y


добавляем репозиторий 
cat <<_eof > /etc/apt/sources.list.d/local-madduck-backports.list
    deb http://debian.madduck.net/repo squeeze-backports main
    deb-src http://debian.madduck.net/repo squeeze-backports main
_eof

и настраиваем приоритеты 
for i in salt-{common,master,minion,syndic,doc} sysvinit-utils; do
echo "Package: $i"
echo "Pin: release a=squeeze-backports"
echo "Pin-Priority: 600"
echo
done > /etc/apt/preferences.d/local-salt-backport.pref

осталось импортировать ключ
wget -q -O- "http://debian.madduck.net/repo/gpg/archive.key" | apt-key add -
apt-get update

и приступить к установке
apt-get install salt-master

небольшое отступление, для отладки и поиска неполадок вы можете запустить salt-master вручную в отладочном режиме
salt-master --log-level=debug

Как установить saltstack-minion читайте тут.

Минимальная настройка saltstack-master

По умолчанию saltstack-master слушает на всех интерфейсах, на портах 4505 и 4506.
если вам нужно изменить сей факт то вам придётся отредактировать файл /etc/salt/master

Пример:
- #interface: 0.0.0.0
+ interface: 10.0.0.1

Если у вас много миньёнов то нужно увеличить количество открытых дескрипторов в системе
# раскоментируем соответствующую опцию в конфиге
sed -i -e 's/^#max_open_files/max_open_files/g' /etc/salt/master

# увеличим количество лимитов в системе
cat >> /etc/security/limits.conf <<EOF
# wildcard does not work for root, but for all other users
*               soft     nofile           4096
*               hard     nofile           32768
# settings should also apply to root
root            soft     nofile           100000
root            hard     nofile           100000
EOF

# и дабы не перезапускать сессию в ожидании чуда увеличим лимиты на лету 
ulimit -n 100000

# осталось перезапустить демона
/etc/init.d/salt-master restart
 Restarting salt master control daemon: salt-masterStopping salt master control daemon ....
 Starting salt-master daemon: :.
 .

Управление ключами saltstack-master

Вся коммуникация между мастером и миньёном происходит при помощи AES шифрования, путём доверия разрешенным сертификатам.

Немножко синтаксиса
salt-key -h
...
    -L, --list-all      Отобразить все публичные ключи
    -A, --accept-all    Разрешить  все публичные ключи
    -R, --reject-all    Запретить  все публичные ключи
    -d DELETE, --delete=DELETE Удалить публичный ключ
    -D, --delete-all    Удалить  все публичные ключи
 на данный момент к моему мастеру пытается подключиться только один миньён

Выведем полный список ключей:
salt-key -L
 Accepted Keys:
 Unaccepted Keys:
     saltstack-minion
 Rejected Keys:

Разрешим все ключи, и посмотрим что получилось:
salt-key -A
 Key for minion saltstack-minion accepted.
salt-key -L
 Accepted Keys:
     saltstack-minion
 Unaccepted Keys:
 Rejected Keys:

После добавления вышеуказанным образом мы можем проверить как доступность всего парка миньёнов, так и конкретную машину.

Проверим доступность машин:
salt '*' test.ping
 saltstack-minion:
     True
 saltstack-minion2:
     True
 saltstack-minion3:
     True
salt 'saltstack-minion' test.ping
 saltstack-minion:
     True

Попробуем обновить систему на всех Debian системах

Пример:
salt -G 'os:Debian' cmd.run 'apt-get update; apt-get dist-upgrade -y'
saltstack-minion:
    Hit http://mirror.yandex.ru squeeze Release.gpg
    Ign http://mirror.yandex.ru/debian/ squeeze/main Translation-en
    Hit http://mirror.yandex.ru squeeze-updates Release.gpg
    Ign http://mirror.yandex.ru/debian/ squeeze-updates/main Translation-en
    Hit http://mirror.yandex.ru squeeze Release
    Hit http://mirror.yandex.ru squeeze-updates Release
    Hit http://security.debian.org squeeze/updates Release.gpg
    Ign http://security.debian.org/ squeeze/updates/main Translation-en
    Hit http://mirror.yandex.ru squeeze/main Sources
    Hit http://mirror.yandex.ru squeeze/main amd64 Packages
    Hit http://backports.debian.org squeeze-backports Release.gpg
    Ign http://backports.debian.org/debian-backports/ squeeze-backports/main Translation-en
    Hit http://debian.madduck.net squeeze-backports Release.gpg
    Ign http://debian.madduck.net/repo/ squeeze-backports/main Translation-en
    Hit http://mirror.yandex.ru squeeze-updates/main Sources/DiffIndex
    Hit http://mirror.yandex.ru squeeze-updates/main amd64 Packages/DiffIndex
    Hit http://security.debian.org squeeze/updates Release
    Hit http://mirror.yandex.ru squeeze-updates/main amd64 Packages
    Hit http://backports.debian.org squeeze-backports Release
    Hit http://debian.madduck.net squeeze-backports Release
    Hit http://security.debian.org squeeze/updates/main Sources
    Hit http://backports.debian.org squeeze-backports/main amd64 Packages
    Hit http://debian.madduck.net squeeze-backports/main Sources
    Hit http://security.debian.org squeeze/updates/main amd64 Packages
    Hit http://debian.madduck.net squeeze-backports/main amd64 Packages
    Reading package lists...
    Reading package lists...
    Building dependency tree...
    Reading state information...
    The following packages will be upgraded:
      sysvinit-utils
    1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    Need to get 99.2 kB of archives.
    After this operation, 12.3 kB disk space will be freed.
    Get:1 http://debian.madduck.net/repo/ squeeze-backports/main sysvinit-utils amd64 2.88dsf-34~bpo60+1~madduck.1 [99.2 kB]
    Fetched 99.2 kB in 0s (162 kB/s)
    (Reading database ... 38635 files and directories currently installed.)
    Preparing to replace sysvinit-utils 2.88dsf-13.1+squeeze1 (using .../sysvinit-utils_2.88dsf-34~bpo60+1~madduck.1_amd64.deb) ...
    Unpacking replacement sysvinit-utils ...
    Processing triggers for man-db ...
    Setting up sysvinit-utils (2.88dsf-34~bpo60+1~madduck.1) ...

Полный список модулей SaltStack вы найдёте тут
Как писать свои модули, вы можете прочитать тут


Enhanced by Zemanta