Staattisten ja dynaamisten inventaarioiden käyttäminen Ansibessa – Osa 4

Tässä Ansible-sarjan neljännessä osassa selitetään, miten staattista ja dynaamista inventaariota käytetään isäntäasemien ryhmien määrittelyyn Ansibessa.

Ansibessa hallittavat isännät tai palvelimet, joita kontrolloidaan Ansiblen ohjaussolmun avulla, määritellään isäntäasemien inventaariotiedostossa, kuten selostetaan. Isäntäinventaariotiedosto on tekstitiedosto, joka koostuu hallittujen isäntien tai etäpalvelimien isäntänimistä tai IP-osoitteista.

Hallitut isännät voidaan luetella joko yksittäisinä merkintöinä tai kategorisoida ryhmänimen alle, kuten myöhemmin nähdään. Ansibessa on kahdenlaisia inventaariotiedostoja: Staattisia ja dynaamisia.

Katsotaanpa kumpaakin ja katsotaan, miten voimme hallita niitä. Oletamme tähän mennessä, että olet jo asentanut Ansiblen ohjaussolmuun ja määrittänyt salasanattoman SSH-yhteyden hallittuihin isäntäkoneisiisi.

Staattinen isäntäkoneiden inventaariotiedosto

Ansibessa staattinen inventaariotiedosto on pelkkä tekstitiedosto, joka sisältää luettelon hallituista isäntäkoneista, jotka on ilmoitettu isäntäkoneiden ryhmään joko isäntäkoneiden nimiä tai IP-osoitteita käyttäen.

Isäntäkoneiden ryhmien nimet suljetaan hakasulkujen sisälle, esim . Hallitut isäntäkohteet luetellaan myöhemmin ryhmän nimen alla, kukin omalla rivillään. Kuten aiemmin käsiteltiin, isännät luetellaan käyttämällä joko isäntänimiä tai IP-osoitteita.

Host A ip_address Host B ip_addressHost c ip_address

Luotaan havainnollistamista varten staattinen inventaariotiedosto.

# mkdir test_lab && cd test_lab# vim hosts
Static Inventory File
173.82.115.165173.82.220.239webserversdatabase_servers

Tallenna tiedosto ja poistu.

Kuten yllä olevasta inventaariotiedostosta näkyy, olemme luoneet kaksi isäntäryhmää: webservers ja database_servers. Lisäksi olemme luoneet lisäryhmän nimeltä datacenter, joka sisältää ryhmän isäntäryhmiä, joita merkitään ': children'-suffiksilla, kuten edellä on nähty.

Ansible sallii myös isäntäryhmien sijoittamisen ryhmänimen alle. Yllä olevassa inventaariotiedostossa webservers- ja database_servers-ryhmät on sijoitettu datacenter-nimen alle.

Huomautus: Hallittujen isäntien sijoittaminen isäntäryhmään ei ole pakollista. Voit yksinkertaisesti listata ne esimerkiksi niiden isäntänimien tai IP-osoitteiden avulla.

173.82.202.239172.82.115.165load_balancer.pnl.com

Käytetään nyt muutamaa Ansible-komentoa hostien inventaariotiedostoon viittaamiseen. Inventaarion hallinnan perussyntaksi on esitetty.

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

Esimerkiksi,

$ ansible all -i /root/test_labs/hosts --list-hosts
List Ansible Hosts

Vaihtoehtoisesti voit käyttää jokerimerkkiä * korvaamaan 'all'-argumentin.

$ ansible * -i /root/test_labs/hosts --list-hosts
List Ansible Hosts Using Wildcards

Luettele ryhmään kuuluvat isännät määrittämällä isäntäryhmä host-patternin tilalle.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
List Ansible Hosts in Group

Dynamic Host Inventory File

Kokoonpanossa – erityisesti AWS:n kaltaisessa pilviasennuksessa, jossa inventaariotiedosto muuttuu jatkuvasti palvelimia lisättäessäsi tai poistaessasi niitä käytöstä, inventaariotiedostossa määriteltyjen isäntien pitämisestä tulee todellinen haaste. On hankalaa palata isäntätiedostoon ja päivittää luettelo isännistä ja niiden IP-osoitteista.

Juuri tässä kohtaa dynaaminen inventaario tulee kuvaan mukaan. Mikä siis on dynaaminen inventaario? Dynaaminen inventaario on Pythonilla, PHP:llä tai muulla ohjelmointikielellä kirjoitettu skripti. Se on kätevä AWS:n kaltaisissa pilviympäristöissä, joissa IP-osoitteet muuttuvat, kun virtuaalipalvelin pysäytetään ja käynnistetään uudelleen.

Ansible on jo kehittänyt inventaarioskriptejä julkisille pilvialustoille, kuten Google Compute Enginen, Amazon EC2-instanssin, OpenStackin, RackSpacen ja cobblerin kaltaisille alustoille.

Mitkä ovat dynaamisen inventaarion edut staattiseen inventaarioon verrattuna?
  • Dynaamiset inventaariot vähentävät erinomaisesti inhimillisiä virheitä, koska tiedot kerätään skriptien avulla.
  • Inventaarioiden hallinnointi vaatii minimaalista vaivannäköä.

Voit kirjoittaa oman räätälöidyn dynaamisen inventaarion haluamallasi ohjelmointikielellä. Inventaarion pitäisi palauttaa JSON-muodossa, kun asianmukaiset optiot välitetään.

Olemassa olevan dynaamisen inventaarioskriptin käyttäminen

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

Dynaamisen inventaarioskriptin sisällä olevien isäntien tietojen hakemiseksi yksinkertaisesti ajetaan.

# ./script --list 

Kuten aiemmin todettiin, tulosteen pitäisi olla JSON-muodossa alla olevassa muodossa.

Sanakirja, joka koostuu ryhmistä (i.e webservers, database_Servers)
  • Luettelo hallittavista isännistä per ryhmä
  • Muuttujien sanakirja
Meta-sanakirja
  • Isännät ja hostvars
Esimerkki tulosteesta
Tulos

Kiinnitys

Tässä artikkelissa näytimme, miten luodaan sekä staattisia että dynaamisia inventaarioluetteloita. Yhteenvetona voidaan todeta, että staattinen inventaariotiedosto on pelkkä tekstitiedosto, joka sisältää luettelon hallittavista isännistä tai etäsolmuista, joiden numerot ja IP-osoitteet pysyvät melko vakioina.

Toisaalta dynaaminen isäntätiedosto muuttuu koko ajan, kun lisäät uusia isäntiä tai poistat vanhoja käytöstä. Myös isäntien IP-osoitteet ovat dynaamisia, kun pysäytät ja käynnistät uusia isäntäjärjestelmiä. Toivomme, että pidit tätä opetusohjelmaa informatiivisena.