Utilizarea SaltStack cu stâlpii de pe Ubuntu 17.04

În timp ce SaltStack este un instrument excelent pentru a rula operațiuni pe mai multe servere simultan, acesta acceptă și presetări de configurare definite per gazdă, stocate într-un fișier unic, care mai sunt numite „pilon”. În acest ghid, vom scrie o mică formulă SaltStack pentru instalarea Nginx și automatizarea implementării gazdelor virtuale folosind stâlpi.

cerinţe

  • Instanță Vultr care rulează Ubuntu 17.04 (master)
  • Două instanțe Vultr care rulează Ubuntu 17.04 (minions)

Configurarea maestrului

Dacă tocmai începeți și nu ați configurat încă maestrul SaltStack, consultați acest articol care explică cum să începeți cu SaltStack.

Formulă

Începem cu crearea dosarului pentru formula noastră, care deține în continuare fișierele necesare pentru operațiunile SaltStack pe minionișii noștri.

mkdir -p /srv/salt/nginx

După crearea dosarului, putem continua cu scrierea init.slsfișierului care este o parte esențială a fiecărei formule:

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

După cum probabil ați observat, SaltStack utilizează motorul de plantare Jinja pentru a genera fișiere de configurare dinamice. Aceasta oferă o gamă largă de posibilități în fișierele de șabloane de configurare, cum ar fi accesarea codului Python nativ sau la variabile de setare și similare. Următorul pas constă în crearea șablonului pentru virtualhosts.conffișierul nostru , în timp ce mai întâi trebuie să creăm folderul:

mkdir -p /srv/salt/nginx/files

Odată ce folderul este creat, putem continua cu scrierea virtualhosts.jinjafișierului:

{% 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 %}

Stâlp

După crearea formulei, putem merge înainte și configura baza pilonului nostru:

mkdir -p /srv/pillar/

Orice referințe pentru gazde care se potrivesc cu un anumit fișier pilon sunt scrise în top.slsfișier în directorul pe care tocmai l-am creat. În exemplul nostru, presupunem că două minioni există cu numele de gazdă nginxwww1și în nginxwww2timp ce le vom atribui ambelor fișiere de pilon unice:

base:
  'id:nginxwww1':
    - match: grain
    - nginxwww1
  'id:nginxwww2':
    - match: grain
    - nginxwww2

În continuare, vom continua cu crearea unui fișier pilon pentru nginxwww1că vom crea o audiere vhost pe portul 81 pentru domeniu example.com, rădăcina documentului fiind /var/www/example_com/și fișierele index fiind index.shtml:

vhosts:
    -
      listenPort: '81'
      serverName: 'example.com'
      documentRoot: '/var/www/example_com'
      indexFiles:
        - index.shtml

Vom continua cu crearea unui fișier pilon pentru nginxwww2că vom crea o ascultare vhost pe portul 82 pentru domeniu example2.com, rădăcina documentului fiind /var/www/example2_com/și fișierele index fiind index.jsși index.css:

vhosts:
    -
      listenPort: '82'
      serverName: 'example2.com'
      documentRoot: '/var/www/example2_com'
      indexFiles:
        - index.js
        - index.css

Notă: Fișierele pilon sunt stocate în interior/srv/pillar/

Implementarea

Acum putem completa prima încercare cu piloni, actualizându-i pe minionii noștri:

salt '*' saltutil.refresh_pillar

După aceea, putem rula formula SaltStack:

salt '*' state.sls nginx

Confirmarea

Odată cu formula SaltStack a fost rulat și completat fără erori, ar trebui să putem vedea de nginxascultare pe portul de 81pe nginxwww1și pe portul 82la nginxwww2confirmarea.

Concluzie

Această formulă destul de ușoară, dar deja puternică, SaltStack, poate fi extinsă suplimentar pentru a adăuga suport pentru HTTPS, eventual cu o integrare a Let's Encrypt, asistență pentru back-up-uri CGI sau PHP și tot ceea ce puteți face manual. Acest ghid ar fi trebuit să vă ofere o idee de bază a formulelor SaltStack și a pilonilor utilizați pentru implementarea fișierelor de configurare. Automatizări fericite!

Lasă un comentariu

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe