Staattisten ja dynaamisten varastojen käyttäminen Ansiblessa - Osa 4


Tässä Ansible-sarjan osassa 4 selitämme, kuinka staattista ja dynaamista inventaariota käytetään isäntäryhmien määrittämiseen Ansiblessa.

Ansiblessa hallitut isännät tai palvelimet, joita hallitsee Ansible-ohjaussolmu, määritellään isäntävarastotiedostossa, kuten kohdassa selitetään. Isäntä inventaariotiedosto on tekstitiedosto, joka koostuu hallittujen isäntien tai etäpalvelimien isäntänimistä tai IP-osoitteista.

Hallinnoidut isännät voidaan joko listata yksittäisinä merkintöinä tai luokitella ryhmän nimen alle, kuten tulemme näkemään myöhemmin. Ansiblessa on kahdentyyppisiä varastotiedostoja: Staattinen ja Dynaaminen.

Katsotaanpa jokaista näistä ja katsotaan, kuinka voimme hallita niitä. Oletamme tähän mennessä, että olet jo asentanut Ansiblen ohjaussolmuun ja määrittänyt salasanattoman SSH-yhteyden hallittuihin isäntiisi.

Staattinen isäntäinventaaritiedosto

Kohdassa Mahdollisuus staattinen inventaariotiedosto on pelkkä tekstitiedosto, joka sisältää luettelon hallituista isännistä, jotka on ilmoitettu isäntäryhmässä joko isäntänimien tai IP-osoitteiden avulla.

Isäntäryhmän nimi on suljettu hakasulkeissa, eli [ryhmän nimi]. Hallitut isäntämerkinnät luetellaan myöhemmin ryhmän nimen alla, kukin omalla rivillään. Kuten aiemmin mainittiin, isännät on lueteltu käyttäen joko isäntänimiä tai IP-osoitteita.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Havainnollistamistarkoituksessa luomme staattisen inventaariotiedoston.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Tallenna tiedosto ja poistu.

Kuten yllä olevasta luettelotiedostosta näet, olemme luoneet 2 isäntäryhmää: verkkopalvelimet ja tietokantapalvelimet. Olemme myös luoneet ylimääräisen ryhmän nimeltä tietokeskus, joka sisältää ryhmän isäntäryhmiä, jotka on merkitty ': children' -liitteellä, kuten yllä näkyy.

Ansible mahdollistaa myös isäntäryhmien sijoittamisen ryhmän nimen alle. Yllä olevassa luettelotiedostossa ryhmät verkkopalvelimet ja tietokantapalvelimet on sijoitettu tietokeskuksen alle.

HUOMAA: hallittujen isäntien sijoittaminen isäntäryhmään ei ole pakollista. Voit yksinkertaisesti luetella ne käyttämällä esimerkiksi heidän isäntänimiä tai IP-osoitteita.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Käytetään nyt muutama Ansible-komento viittaamaan isäntäinventaarion tiedostoon. Varastonhallinnan perussyntaksi on kuvan mukainen.

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Esimerkiksi,

ansible all -i /root/test_labs/hosts --list-hosts

Vaihtoehtoisesti voit käyttää jokerimerkkiä * korvataksesi argumentin 'kaikki'.

ansible * -i /root/test_labs/hosts --list-hosts

Jos haluat luetella isännät ryhmään, määritä isäntäryhmä isäntämallin tilalle.

ansible webservers -i /root/test_labs/hosts --list-hosts

Dynaaminen isäntäinventaaritiedosto

Määrityksissä – erityisesti pilviasennuksissa, kuten AWS, jossa varastotiedosto muuttuu jatkuvasti, kun lisäät tai poistat palvelimia, varastotiedostossa määritettyjen isäntien seuraamisesta tulee todellinen haaste. On hankalaa palata isäntätiedostoon ja päivittää isäntien luetteloa niiden IP-osoitteilla.

Ja tässä tulee esiin dynaaminen mainosjakauma. Joten mikä on dynaaminen inventaario? Dynaaminen inventaario on Pythonilla, PHP:llä tai millä tahansa muulla ohjelmointikielellä kirjoitettu komentosarja. Se on kätevä pilviympäristöissä, kuten AWS, jossa IP-osoitteet muuttuvat, kun virtuaalipalvelin pysäytetään ja käynnistetään uudelleen.

Ansible on jo kehittänyt inventaarioskriptejä julkisille pilvialustoille, kuten Google Compute Engine, Amazon EC2-instanssi, OpenStack, RackSpace, cobbler.

Mitä etuja dynaamisesta varastosta on staattiseen varastoon verrattuna?
  • Dynaamiset varastot vähentävät täydellisesti inhimillisiä virheitä, kun tietoa kerätään skriptien avulla.
  • Varastojen hallinta vaatii minimaalista vaivaa.

Voit kirjoittaa oman mukautetun dynaamisen inventaarion valitsemallasi ohjelmointikielellä. Mainosjakauman pitäisi palauttaa muoto JSON-muodossa, kun asianmukaiset asetukset on välitetty.

Käytä olemassa olevaa dynaamista inventaarikomentosarjaa

Dynaamisen luettelon luomiseen käytettävä komentosarja on tehtävä suoritettavaksi, jotta Ansible voi käyttää sitä.

Noutaaksesi tietoja isännistä dynaamisen inventaarion komentosarjan sisällä, suorita se.

./script --list 

Kuten aiemmin mainittiin, tulosteen tulee olla JSON-muodossa alla olevassa muodossa.

Sanakirja, joka koostuu ryhmistä (eli verkkopalvelimet, tietokantapalvelimet)
  • Luettelo hallinnoiduista isännistä ryhmäkohtaisesti
  • Muuttujien sanakirja
Meta sanakirja
  • Isännät ja isäntävarsit
Näytelähtö
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Johtopäätös

Tässä artikkelissa olemme osoittaneet, kuinka luodaan sekä staattisia että dynaamisia varastoja. Yhteenvetona voidaan todeta, että staattinen inventaariotiedosto on pelkkä tekstitiedosto, joka sisältää luettelon hallituista isännistä tai etäsolmuista, joiden numerot ja IP-osoitteet pysyvät melko vakioina.

Toisaalta dynaaminen isäntätiedosto muuttuu jatkuvasti, kun lisäät uusia isäntiä tai poistat vanhoja. Isäntien IP-osoitteet ovat myös dynaamisia, kun pysäytät ja käynnistät uusia isäntäjärjestelmiä. Toivomme, että pidit tämän opetusohjelman informatiivisena.