Захтеви
Постављање мајстора
Формула
Стуб
Деплоиинг
Потврђујем
Закључак
Иако је СалтСтацк одличан алат за истовремено покретање операција на многим серверима, он такође подржава унапред дефинисана подешавања конфигурације по хосту ускладиштена у јединственој датотеци која се даље назива "стуб". У овом водичу ћемо написати малу СалтСтацк формулу за инсталирање Нгинк-а и аутоматизацију постављања виртуелних хостова помоћу стубова.
Захтеви
- Вултр инстанца ради Убунту 17.04 (мастер)
- Две Вултр инстанце покрећу Убунту 17.04 ( минионс )
Постављање мајстора
Ако тек почињете и још нисте подесили СалтСтацк мастер, погледајте овај чланак који објашњава како да почнете са СалтСтацк-ом.
Почињемо са креирањем фасцикле за нашу формулу која даље садржи датотеке потребне за СалтСтацк-ове операције на нашим слугама.
mkdir -p /srv/salt/nginx
Након креирања фасцикле, можемо наставити са писањем init.slsдатотеке која је суштински део сваке формуле:
nginx:
pkg:
- installed
/etc/nginx/sites-enabled/virtualhosts.conf:
file.managed:
- source: salt://nginx/files/virtualhosts.jinja
- template: jinja
- user: root
- group: root
- mode: 655
cmd:
- run
- names:
- service nginx restart
Као што сте вероватно приметили, СалтСтацк користи Јиња шаблонски механизам за генерисање динамичких конфигурационих датотека. Ово пружа широк спектар могућности у оквиру наших датотека шаблона конфигурације, као што је приступ изворном Питхон коду или подешавање променљивих и слично. Следећи корак се састоји од креирања шаблона за нашу virtualhosts.confдатотеку, док прво треба да креирамо фасциклу:
mkdir -p /srv/salt/nginx/files
Када је фасцикла креирана, можемо да наставимо са писањем virtualhosts.jinjaдатотеке:
{% for vhost in pillar['vhosts'] %}
server {
listen {{ vhost['listenPort'] }};
server_name {{ vhost['serverName'] }};
root {{ vhost['documentRoot'] }};
index {%- for index in vhost['indexFiles'] -%}{{ index }}{%- endfor -%};
location / {
try_files $uri $uri/ =404;
}
}
{% endfor %}
Стуб
Након креирања формуле, можемо наставити и поставити нашу базу стубова:
mkdir -p /srv/pillar/
Све референце за хостове који одговарају одређеној пиллар датотеци се уписују у top.slsдатотеку унутар директоријума који смо управо креирали. У нашем примеру претпостављамо да постоје два миниона са именом хоста nginxwww1и nginxwww2док ћемо им обема доделити јединствене датотеке стубова:
base:
'id:nginxwww1':
- match: grain
- nginxwww1
'id:nginxwww2':
- match: grain
- nginxwww2
Затим ћемо наставити са креирањем датотеке стуба за nginxwww1док ћемо креирати вхост који слуша на порту 81 за домен example.com, при чему је корен документа /var/www/example_com/и датотеке индекса index.shtml:
vhosts:
-
listenPort: '81'
serverName: 'example.com'
documentRoot: '/var/www/example_com'
indexFiles:
- index.shtml
Наставићемо са креирањем пиллар фајла за nginxwww2док ћемо креирати вхост који слуша на порту 82 за домен example2.com, корен документа је /var/www/example2_com/и индексне датотеке index.jsи index.css:
vhosts:
-
listenPort: '82'
serverName: 'example2.com'
documentRoot: '/var/www/example2_com'
indexFiles:
- index.js
- index.css
Напомена: Пиллар датотеке се чувају унутар/srv/pillar/
Деплоиинг
Сада можемо да завршимо наш први покушај са стубовима тако што ћемо их ажурирати на нашим слугама:
salt '*' saltutil.refresh_pillar
Након тога, можемо покренути формулу СалтСтацк:
salt '*' state.sls nginx
Потврђујем
Када се СалтСтацк формула је била покренути и завршени без грешака, требало би да будемо у стању да види nginxслушање на порту 81на nginxwww1и на порту 82на nginxwww2као потврду.
Закључак
Ова прилично лагана, али већ моћна СалтСтацк формула може се додатно проширити да би се додала подршка за ХТТПС, вероватно интеграцијом Лет'с Енцрипт, подршком за ЦГИ или ПХП позадинске програме и свиме што можете и ручно да урадите. Овај водич је требало да вам пружи основну идеју о СалтСтацк формулама и стубовима који се користе за примену конфигурационих датотека. Срећна аутоматизација!