Часто встает вопрос, в каком режиме использовать PHP FPM? Вот есть отличная статья, дающая ответ.
Saturday 22 June 2019
Установка Salt на Ubuntu 18.04
Довольно долгое время раньше я использовал Puppet, но он был крайне проблемен с точки зрения производительности, а также с точки зрения сложности конфигурации. В этом плане Salt намного лучше и понятнее, что я и постараюсь показать.
Как обычно, официальные инструкции можно найти тут и тут
Для работы нам потребуется по меньшей мере две машины - master (сервер) и minion (клиент).
Как для мастера, так и для клиента требуется добавить официальный репозиторий:
Итак, установим мастер:wget -O - https://repo.saltstack.com/apt/ubuntu/18.04/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -echo "deb [arch=amd64] http://repo.saltstack.com/apt/ubuntu/18.04/amd64/latest bionic main" | sudo tee /etc/apt/sources.list.d/saltstack.listsudo apt-get update
sudo apt-get install salt-masterТак как мастер будет слушать на двух портах, я настоятельно рекомендую сразу же закрыть его фаерволлом от всех машин кроме клиента.
Для этого можно использовать пакет iptables-persistent, ставим его:
sudo apt-get install -y iptables-persistentОткрываем файл конфигурации
sudo vim /etc/iptables/rules.v4Создаем конфигурацию (xx замените на адрес клиента, если их неколько, добавьте несколько записей):
# Generated by iptables-save v1.6.1 on Sat Jun 22 13:34:44 2019После этого применяем изменения и убеждаемся: что правила добавлены в фаерволл iptables:
*filter
:INPUT ACCEPT [278:38814]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [231:33098]
# Allow access from clients
-A INPUT -s xx/32 -p tcp -m tcp --dport 4505 -j ACCEPT
-A INPUT -s xx/32 -p tcp -m tcp --dport 4506 -j ACCEPT
# And from localhost
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 4505 -j ACCEPT
-A INPUT -s 127.0.0.1/32 -p tcp -m tcp --dport 4506 -j ACCEPT
# Block all traffic to external hosts to Salt Master
-A INPUT -p tcp -m tcp --dport 4505 -j DROP
-A INPUT -p udp -m udp --dport 4505 -j DROP
-A INPUT -p tcp -m tcp --dport 4506 -j DROP
-A INPUT -p udp -m udp --dport 4506 -j DROP
COMMIT
# Completed on Sat Jun 22 13:34:44 2019
sudo systemctl restart netfilter-persistentТеперь установим клиента:
sudo apt-get install salt-minionПосле этого, нам нужно указать адрес мастер сервера в его конфигурации:
sudo vim /etc/salt/minionИ задаем адрес мастера в следующем параметре:
master: xx.aa.zz.bbКроме этого, нам потребуется ключ мастер, который нужно получить на мастер сервере следующим образом:
salt-key -F masterAnd copy string from "master.pub" from Local Key section and insert into /etc/salt/minion in following place:
master_finger: "xx.aa.xx.ggg"Этот ключ позволит клиенту убедиться, что мастер именно тот, который нам требуется.
После этого применяем конфигурацию:
sudo systemctl restart salt-minion.service
После этого клиент (minion) запросит авторизацию у мастер сервера, илем на мастер сервер и запрашиваем список активных запрсов на авторизацию:
sudo salt-key -LВ ответ вы увидите что-то вида:
Accepted Keys:Одобряем запрос авторизации:
Denied Keys:
Unaccepted Keys:
client_hostname
Rejected Keys:
sudo salt-key --accept=client_hostnameВсе, после этого с мастер сервера вы можете посылать любые командый конфигурации:
salt '*' test.versionНо это лишь половина дела, наша задача заключается в автоматическом конфигурировании сервисов на клиенте и это также очень просто!
Создаем основную конфигурацию:
sudo vim /srv/salt/top.slsГде указываем следующее:
base:Этот файл представляет собой точку входу для конфигурации Salt и здесь можно управлять тем, какие конфигурации должны быть применены на какого клиента.
'client_hostname':
- php_fpm_setup
Итак, создадим саму конфигурацию:
sudo vim /srv/salt/php_fpm_setup.slsВот такого вида:
nginx_pkg:Данный state файл установит на сервер пакеты nginx и php-fpm и настроит их автозапуск.
pkg.installed:
- name: nginx
nginx_service:
service.running:
- name: nginx
- enable: True
- require:
- pkg: nginx_pkg
fpm_pkg:
pkg.installed:
- name: php7.2-fpm
fpm_service:
service.running:
- name: php7.2-fpm
- enable: True
- require:
- pkg: fpm_pkg
После этого, данный state можно применить как со стороны клиента:
salt-call state.apply
Так и удаленно, со стороны сервера:
salt '*' state.applyВыдача в обоих случаях будет аналогичная:
---------
ID: nginx_pkg
Function: pkg.installed
Name: nginx
Result: True
Comment: All specified packages are already installed
Started: 15:44:59.405480
Duration: 57.533 ms
Changes:
----------
ID: nginx_service
Function: service.running
Name: nginx
Result: True
Comment: The service nginx is already running
Started: 15:44:59.463924
Duration: 54.275 ms
Changes:
----------
ID: fpm_pkg
Function: pkg.installed
Name: php7.2-fpm
Result: True
Comment: All specified packages are already installed
Started: 15:44:59.518411
Duration: 18.16 ms
Changes:
Все! Таким образом, у вас все конфигурации всех серверов будут находится в одном месте, сразу же рекомендую сделать /srv/salt git репозиторием.
Subscribe to:
Posts
(
Atom
)