Kā izmantot statiskos un dinamiskos krājumus - 4. daļa


Šajā Ansible sērijas 4. daļā mēs paskaidrosim, kā statisko un dinamisko krājumu izmantot, lai definētu resursdatoru grupas programmā Ansible.

Ansible pārvaldītajos resursdatoros vai serveros, kurus kontrolē Ansible vadības mezgls, ir definēti resursdatora inventāra failā, kā paskaidrots. Resursdatora inventāra fails ir teksta fails, kas sastāv no pārvaldīto resursdatoru vai attālo serveru resursdatoru nosaukumiem vai IP adresēm.

Pārvaldītos resursdatorus var vai nu uzskaitīt kā atsevišķus ierakstus, vai arī kategorizēt zem grupas nosaukuma, kā mēs vēlāk redzēsim. Programmā Ansible ir divu veidu krājumu faili: Statiskie un Dinamiskie.

Apskatīsim katru no šiem un redzēsim, kā mēs tos varam pārvaldīt. Tagad mēs pieņemam, ka jūs jau esat instalējis Ansible savā vadības mezglā un konfigurējis SSH savienojumu ar Passwordless ar saviem pārvaldītajiem saimniekiem.

Programmā Ansible statiskais krājuma fails ir vienkārša teksta fails, kas satur pārvaldīto resursdatoru sarakstu, kas deklarēti resursdatora grupā, izmantojot vai nu resursdatora nosaukumus, vai IP adreses.

Resursdatora grupas nosaukums ir ievietots kvadrātiekavās, t.i., [grupas nosaukums] . Pārvaldīto resursdatora ieraksti vēlāk tiek norādīti zem grupas nosaukuma, katrs savā rindā. Kā jau iepriekš tika apspriests, resursdatori tiek uzskaitīti, izmantojot gan resursdatoru nosaukumus, gan IP adreses.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Ilustrācijas nolūkos mēs izveidosim statisku inventarizācijas failu.

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

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Saglabājiet failu un izejiet.

Kā redzat iepriekš esošajā inventarizācijas failā, mēs esam izveidojuši 2 resursdatoru grupas: tīmekļa serveri un datu bāzes_ serveri. Turklāt mēs esam izveidojuši papildu grupu, ko sauc par datu centru, kurā ietilpst saimniekdatoru grupu grupa, kas apzīmēta ar : children sufiksu, kā redzams iepriekš.

Ansible ļauj arī saimnieku grupas izvietot ar grupas nosaukumu. Iepriekš uzskaitītajā failā tīmekļa serveri un datu bāzes_serveru grupas ir ievietotas zem datu centra.

PIEZĪME. Pārvaldītos resursdatorus nav obligāti ievietot resursdatoru grupā. Varat tos vienkārši uzskaitīt, izmantojot, piemēram, viņu resursdatora vai IP adreses.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Izmantosim dažas Ansible komandas, lai atsauktos uz resursdatora inventāra failu. Krājumu pārvaldības pamatsintakse ir tāda, kā parādīts.

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

Piemēram,

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

Varat arī aizstāt aizstājējzīmi * , lai aizstātu argumentu ‘all’ .

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

Lai sarakstā iekļautu resursdatorus, resursdatora modeļa vietā norādiet resursdatora grupu.

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

Konfigurācijā - it īpaši mākoņa iestatījumos, piemēram, AWS, kur krājumu fails nepārtraukti mainās, pievienojot vai nojaucot serverus, krājumu saglabāšana krātuvēs, kas definētas krājuma failā, kļūst par īstu izaicinājumu. Atgriežoties resursdatora failā un atjauninot resursdatoru sarakstu ar to IP adresēm, kļūst neērti.

Un šeit sāk darboties dinamisks inventārs. Kas tad ir dinamiskais krājums? Dinamiskā inventārs ir skripts, kas rakstīts Python, PHP vai jebkurā citā programmēšanas valodā. Tas ir noderīgi mākoņu vidēs, piemēram, AWS, kur IP adreses mainās, tiklīdz virtuālais serveris tiek apturēts un palaista no jauna.

Ansible jau ir izstrādājis krājumu skriptus publiskām mākoņu platformām, piemēram, Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, kurpnieks.

  • Dinamiskie krājumi lieliski palīdz samazināt cilvēku kļūdas, jo informācija tiek apkopota, izmantojot skriptus.
  • Krājumu pārvaldībā ir nepieciešamas minimālas pūles.

Jūs varat rakstīt pats pielāgotu dinamisko krājumu izvēlētajā programmēšanas valodā. Kad atbilstošās opcijas tiek nodotas, inventāram ir jāatgriež formāts JSON.

Skripts, kas tiek izmantots, lai izveidotu dinamisku krājumu, ir jāpadara izpildāms, lai Ansible to varētu izmantot.

Vienkārši palaidiet, lai izgūtu informāciju par dinamiskajā krājuma skriptā esošajiem resursdatoriem.

# ./script --list 

Kā norādīts iepriekš, izvadei jābūt JSON formātā zemāk redzamajā formātā.

  • Pārvaldīto saimniekdatoru saraksts katrā grupā
  • Mainīgo vārdnīca

  • Saimnieki un saimnieki

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

Šajā rakstā mēs esam parādījuši, kā izveidot gan statiskus, gan dinamiskus krājumus. Rezumējot, statiskais inventāra fails ir vienkārša teksta fails, kurā ir pārvaldīto resursdatoru vai attālo mezglu saraksts, kuru numuri un IP adreses paliek diezgan nemainīgas.

No otras puses, pievienojot jaunus resursdatorus vai nojaucot vecos, dinamiskais resursdatora fails nemainās. Hostu IP adreses ir arī dinamiskas, kad jūs pārtraucat un sākat jaunas resursdatora sistēmas. Mēs ceram, ka jūs atradāt šo apmācību informatīvu.