Giunsa Paggamit ang Static ug Dynamic nga mga Imbentaryo sa Ansible - Bahin 4


Niini nga Bahin 4 sa Ansible Series, among ipasabut kung giunsa paggamit ang static ug dinamikong imbentaryo aron mahibal-an ang mga grupo sa mga host sa Ansible.

Sa usa ka Ansible, ang gidumala nga mga host o server nga gikontrolar sa Ansible control node gihubit sa usa ka host imbentaryo nga file sama sa gipatin-aw sa. Ang host inventory file usa ka text file nga gilangkuban sa mga hostname o IP address sa gidumala nga mga host o layo nga mga server.

Ang gidumala nga mga host mahimong malista ingon nga indibidwal nga mga entri o ma-categorize ubos sa usa ka ngalan sa grupo ingon sa atong makita sa ulahi. Sa Ansible, adunay duha ka klase sa mga file sa imbentaryo: Static ug Dynamic.

Atong tan-awon ang matag usa niini ug tan-awon kon unsaon nato pagdumala kini. Sa pagkakaron, among gihunahuna nga na-install na nimo ang Ansible sa imong Control node, ug gi-configure ang Passwordless SSH nga koneksyon sa imong gidumala nga mga host.

Sa Ansible, ang usa ka static nga file sa imbentaryo usa ka yano nga text file nga adunay usa ka lista sa gidumala nga mga host nga gideklarar sa ilawom sa usa ka host nga grupo gamit ang mga hostname o mga ad sa IP.

Ang ngalan sa host group gilakip sa square bracket ie [group name]. Ang gidumala nga mga entry sa host gilista sa ulahi ubos sa ngalan sa grupo, ang matag usa sa kaugalingon nga linya. Sama sa gihisgutan sa sayo pa, ang mga host gilista gamit ang mga hostname o IP address.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Alang sa mga katuyoan sa paghulagway, maghimo kami usa ka static nga file sa imbentaryo.

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

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

I-save ang file ug paggawas.

Sama sa imong makita sa file sa imbentaryo sa ibabaw, naghimo kami og 2 ka grupo sa host: webservers ug database_servers. Usab, naghimo kami og dugang nga grupo nga gitawag og datacenter nga naglakip sa grupo sa mga host nga grupo nga gipunting sa : mga bata suffix nga makita sa ibabaw.

Gitugotan usab sa Ansible ang mga grupo sa mga host nga ibutang sa ilawom sa ngalan sa grupo. Sa imbentaryo nga payl sa ibabaw, ang mga webserver ug database_servers nga mga grupo gibutang ubos sa datacenter.

NOTE: Dili mandatory ang pagbutang sa gidumala nga mga host sa usa ka host group. Mahimo nimo silang ilista gamit ang ilang mga hostname o mga IP address pananglitan.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Gamiton nato karon ang pipila ka Ansible nga mga sugo alang sa paghisgot sa file sa imbentaryo sa host. Ang sukaranan nga syntax alang sa pagdumala sa imbentaryo ingon sa gipakita.

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

Pananglitan,

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

Sa laing paagi, mahimo nimong gamiton ang wildcard nga karakter * aron ilisan ang ‘all’ argumento.

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

Aron ilista ang mga host sa usa ka grupo, ipiho ang host nga grupo sa lugar sa host-pattern.

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

Sa usa ka configuration - ilabi na ang usa ka cloud setup sama sa AWS diin ang imbentaryo nga file nagpadayon sa kanunay nga pagbag-o samtang ikaw nagdugang o nag-decommission sa mga server, ang pagtipig sa mga tab sa mga host nga gihubit sa file sa imbentaryo nahimong usa ka tinuod nga hagit. Nahimong dili kombenyente ang pagbalik sa host file ug pag-update sa lista sa mga host sa ilang mga IP address.

Ug kini diin ang usa ka dinamikong imbentaryo moabut aron magdula. Busa unsa ang usa ka dinamikong imbentaryo? Ang usa ka dinamikong imbentaryo usa ka script nga gisulat sa Python, PHP o bisan unsang uban pang programming language. Kini magamit sa mga cloud environment sama sa AWS diin ang mga IP address mausab sa higayon nga ang usa ka virtual server gipahunong ug gisugdan pag-usab.

Nahimo na ni Ansible ang mga script sa imbentaryo alang sa mga platform sa publiko nga panganod sama sa Google Compute Engine, pananglitan sa Amazon EC2, OpenStack, RackSpace, cobbler, ug uban pa.

  • Ang mga dinamikong imbentaryo usa ka hingpit nga trabaho sa pagpamenos sa sayop sa tawo samtang ang impormasyon gitigom gamit ang mga script.
  • Kinahanglan gamay nga paningkamot sa pagdumala sa mga imbentaryo.

Mahimo nimong isulat ang imong kaugalingon nga custom nga dinamikong imbentaryo sa usa ka programming language nga imong gusto. Kinahanglang ibalik sa imbentaryo ang usa ka format sa JSON kung ipasa ang angay nga mga kapilian.

Ang usa ka script nga gigamit sa paghimo sa usa ka dinamikong imbentaryo kinahanglan nga himuon nga ma-executable aron magamit kini sa Ansible.

Aron makuha ang kasayuran bahin sa mga host sa sulod sa usa ka dinamikong script sa imbentaryo padaganon lang.

# ./script --list 

Sama sa gipunting sa sayo pa, ang output kinahanglan naa sa JSON sa format sa ubos.

  • Usa ka lista sa gidumala nga mga host kada grupo
  • Usa ka diksyonaryo sa mga variable

  • Mga host ug hostvars

{
  "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": {}
    }
  }
}

Sa kini nga artikulo, among gipakita kung giunsa paghimo ang parehas nga static ug dinamikong mga imbentaryo. Sa katingbanan, ang usa ka static nga file sa imbentaryo usa ka yano nga file sa teksto nga adunay usa ka lista sa gidumala nga mga host o hilit nga mga node kansang mga numero ug mga adres sa IP nagpabilin nga kanunay.

Sa laing bahin, ang usa ka dinamikong host file nagpadayon sa pagbag-o samtang nagdugang ka bag-ong mga host o nag-decommission sa mga daan. Ang mga IP adres sa mga host dinamiko usab samtang mohunong ka ug magsugod sa bag-ong mga sistema sa host. Kami nanghinaut nga imong nakit-an nga kini nga panudlo makatabang.