SaltStack — cистема управления конфигурациями и удалённого выполнения операций.
В данный момент изучаю данную систему и раз уж есть такая возможность решил попереводить статьи с официального сайта и повыкладывать здесь пока хватит энтузиазма. Т.к. у нас в организации используется в основном Red Hat и Centos, переводить буду части касающиеся этих операционных систем.
Данная статья представляет собой перевод официальной документации. Внизу страницы вы найдете ссылку на первоисточник на англ. языке.
Установка SALT
Установка salt-master, salt-minion из официального репозитория SaltStack на RHEL / CENTOS
sudo yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
Внимание! При установке на Red Hat Enterprise Linux 7 с отключенными (не подписанными на) 'RHEL Server Releases' или 'RHEL Server Optional Channel' репозиториями, добавьте CentOS 7 GPG key URL к конфигурации yum репозитория SaltStack для установки базовых пакетов.
[saltstack-repo] name=SaltStack repo for Red Hat Enterprise Linux $releasever baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest enabled=1 gpgcheck=1 gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
sudo yum clean expire-cache
Установите salt-minion, salt-master и другие Salt компоненты:
sudo yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud salt-api
Запуск SALT
Salt работает по топологии Master(сервер) / Minion(клиент). Миньоны подключаются к мастеру на порты TCP 4505,4506.
Дефолтная конфигурация Мастера подходит для подавляющего большинства установок. Salt Master управляется локальными сервис менеджерами:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-master
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-master start
Альтернативно, Мастер может быть запущен напрямую через командную строку как демон:
salt-master -d
Мастер может быть также запущен в debug режиме, таким образом значительно увеличивая вывод команд:
salt-master -l debug
Мастер принимает входящие соединения на портах TCP 4505,4506.
Поиск SALT MASTER
По умолчанию конфигурационные файлы лежат в каталоге /etc/salt. Большинство платформ придерживаются этой схемы, но такие платформы как FreeBSD и Windows располагают этот файл в других местах.
При старте Миньон по умолчанию ищет в сети хост с hostname salt. Если нашел, то Миньон инициирует процесс рукопожатия и аутентификации по ключу с Мастером. Это означает, что самый простой способ конфигурации это настроить внутренний DNS на разрешение имени salt в IP Мастера.
Если такой подход не устраивает, то можно внести изменения в /etc/salt/minion:
master: hostname_master
или
master: IP_master
Настройка SALT MINION
Миньон может функционировать как с Мастером так и без него. Это руководство предполагает, что Миньон будет подключен к Мастеру, для получения информации о том, как запустить Миньон без Мастера смотрите тут.
После того, как Мастер может быть найден, запустить Миньон можно так же, как Мастера:
На системах с systemd (новые Debian, OpenSuse, Fedora, Centos, RHEL):
systemctl start salt-minion
На системах с Upstart (Ubuntu, older Fedora/RHEL):
service salt-minion start
Как демон:
salt-minion -d
В фоновом режиме с опцией debug:
salt-minion -l debug
Когда Миньон запускается, он генерирует id, если он не был сгенерирован во время предыдущего запуска и кэширует в /etc/salt/minion_id по умолчанию. Это имя по которому Миньон будет пытаться аутентироваться на Мастере. Следующие шаги предпринимаются, чтобы попытаться найти значение отличное от localhost:
- Выполняется функция socket.getfqdn()
- Проверяется /etc/hostname (не на Windows)
- Проверяется /etc/hosts ( %WINDIR%system32driversetchosts на Windows )
Если вышеописанные методы не произвели id отличный от localhost, то проверяется отсортированый лист IP адресов (исключая диапазон 127.0.0.0/8) на Миньоне. Первым используется публично-маршрутизируемый IP-адрес, если есть хоть один. Иначе используется первый приватно-маршрутизируемый IP-адрес.
Если ничего не сработало, то localhost используется как запасной вариант.
id Миньона может быть задан вручную используя параметр id в файле конфигурации Миньона. Если этот параметр задан, то он будет переопределять все другие источники id.
Теперь, когда Миньон запущен, он будет генерировать криптографические ключи и пытаться подключиться к мастеру. Следующим шагом надо вернуться к Мастеру и принять новый открытый ключ Миньона.
Использование SALT-KEY
Salt аутентифицирует Миньонов используя открытый ключ шифрования и аутентификацию. Чтобы Миньон мог начать принимать команды от Мастера его ключ должен быть принят Мастером.
Команда salt-key используется для управления всеми ключами на Мастере. Для просмотра всех ключей, которые находятся на Мастере:
salt-key -L
Будут выведены ключи, которые были приняты, отклонены и находятся в ожидании принятия. Самый простой способ принят ключ миньона это принять все отложенные ключи:
salt-key -A
Ключи должны быть проверены! Выведите отпечаток ключа Мастера запустив salt-key -F master на Мастере. Скопируйте master.pub отпечаток с секции Local Keys и затем установи это значение как master_finger в конфигурации.
# salt-key -F master
Local Keys:
master.pem: 6c:a0:e8:b0:84:36:59:86:b6:49:c3:fb:87:a4:c4:e9
master.pub: d9:c6:e0:42:76:e5:82:f7:13:6a:65:ee:cb:f3:2e:aa
Скопируйте значение отпечатка master.pub из секции Local Keys и установите в качестве параметра master_finger в конфигурационном файле Миньона. Сохраните и перезапустите сервис salt-minion.
На Мастере запустите salt-key -f minion_id, чтобы напечатать отпечаток публичного ключа Миньона, который был принят Мастером. На Миньоне запустите salt-call key.finger --local, чтобы напечатать отпечаток ключа Миньона.
На Мастере:
# salt-key -f foo.domain.com
Unaccepted Keys:
foo.domain.com: 39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
На Миньоне:
# salt-call key.finger --local
local:
39:f9:e4:8a:aa:74:8d:52:1a:ec:92:03:82:09:c8:f9
Если совпадают, то примите ключ командой:
salt-key -a foo.domain
Посылка первых команд
Сейчас, когда миньон подключен к Мастеру и аутентифицирован, Мастер может отправлять команды Миньону. Salt-команды позволяют выполнить обширный набор функций и для конкретных Миньонов или групп Миньонов. Salt-команды состоят из опций команд, описания цели, функции исполнения и аргументов функции.
Простая команда выглядит так:
salt '*' test.ping
Звездочка ( * ) определяет цель, которая определяет всех Миньонов. test.ping говорит миньонам запустить функцию test.ping. В случае test.ping, test ссылается на модуль исполнения. ping ссылается на функцию ping содержащуюся в вышеуказанном модуле.
Внимание! Исполнительные модули — это рабочие лошадки Salt. Они выполняют работу в системе выполняя различные задачи, такие как манипулирование файлами и рестарт сервисов.
Результатом выполнения этой команды будет оповещение Мастера, что все миньоны выполнили test.ping параллельно и возвращение результата.
Это на самом деле не ICMP ping, а скорее простая функция, которая возвращает True. Использование test.ping это хороший способ подтверждения что Миньон подключен.
Каждый Миньон регистрирует себя с уникальным ID. Этот ID по умолчанию есть hostname, но может быть явно задан в конфиге Миньона также с помощью параметра id.
Конечно существуют сотни других модулей, которые могут быть вызваны просто как test.ping. В следующем примере возвращается использование диска на всех Миньонах.
salt '*' disk.usage
Знакомство с функциями
Salt поставляется с обширной библиотекой функций, доступных для выполнения и Salt функции являются самодокументирующимися. Чтобы увидеть какие функции доступны на Миньонах выполните sys.doc функцию:
salt '*' sys.doc
Она покажет очень большой список доступных функций и документацию по ним.
Внимание! Документация модулей также может быть доступна на сайте.
→ Источник
Автор: zerghack007