már említettük változók ebben Ansible sorozat, és csak azért, hogy jog az elméd egy kicsit. A változó, csakúgy, mint sok programozási nyelvben, lényegében egy értéket képviselő kulcs.
mi számít érvényes Változónévnek?
a változó neve betűket, számokat, aláhúzásokat vagy 2 vagy mindegyik keverékét tartalmazza. Ne feledje azonban, hogy a változó nevének mindig betűvel kell kezdődnie, és nem tartalmazhat szóközöket.
nézzünk néhány példát az érvényes és elfogadhatatlan változónevekre:
érvényes változónév-példák:
football foot_ballfootball20 foot_ball20
nem érvényes változónév-példák:
foot ball20 foot-ball
beszéljük meg a változótípusokat:
Playbook változók
a Playbook változók meglehetősen egyszerűek és egyértelműek. Változó meghatározásához a playbookban egyszerűen használja a Vars kulcsszót,mielőtt a változókat behúzással írná.
a változó értékének eléréséhez helyezze az idézőjelekkel ellátott kettős göndör zárójelek közé.
itt egy egyszerű playbook példa:
- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"
a fenti forgatókönyvben az üdvözlő változót a Hello world! amikor a playbook fut. A playbook egyszerűen kinyomtatja az üzenetet Hello world! amikor kivégzik.
ezenkívül rendelkezhet egy változók listájával vagy tömbjével az ábrán látható módon:
az alábbi playbook egy kontinensek nevű változót mutat. A változó 5 különböző értéket tartalmaz-kontinensnevek. Ezen értékek mindegyike könnyen elérhető az index használatával 0 mint első változó.
az alábbi playbook példája beolvassa és megjeleníti Ázsiát (1.Index).
a változólista hasonlóan felépíthető az ábrán látható módon:
vars: Continents:
a lista összes elemének felsorolásához használja a with_items modult. Ez végighalad a tömb összes értékén.
az Ansible változó másik típusa a szótár változó.
szótár változók is támogatja a playbook. A szótárváltozó meghatározásához egyszerűen azonosítsa a kulcs-érték párot közvetlenül a szótárváltozó neve alatt.
hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2
a fenti példában a VLAN-ok a szótárváltozók, míg az id és a port a kulcs-érték párok.
mert port_id, mivel az értéket szöveggel kezdjük, nem pedig a változóval, idézőjelek nem szükségesek a göndör zárójelek körül.
speciális változók
az Ansible olyan előre definiált változók listáját tartalmazza, amelyek a Jinja2 sablonokban és playbookokban hivatkozhatnak, de a felhasználó nem változtathatja meg vagy határozhatja meg őket.
az Ansible előre definiált változók listáját együttesen Ansible tényeknek nevezzük, és ezeket egy játékkönyv végrehajtásakor gyűjtjük össze.
az összes Ansible változó listájának megszerzéséhez használja az Ansible ad-hoc parancs setup modulját az alábbiak szerint:
# ansible -m setup hostname
ez a kimenetet JSON formátumban jeleníti meg az ábrán látható módon:
# ansible -m setup localhost
a kimenetből láthatjuk, hogy az Ansible speciális változók néhány példája a következő:
sok más Ansible speciális változó létezik ez csak néhány példa.
ezek a változók használhatók egy Jinja2 sablonban az alábbiak szerint:
Készletváltozók
végül a listán van lehetséges készletváltozók. A leltár egy ini formátumú fájl, amely tartalmazza az Ansible által kezelendő összes gazdagépet.
a készletekben hozzárendelhet egy változót egy gazdarendszerhez, majd később felhasználhatja azt egy játékkönyvben.
web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080
a fentiek ábrázolhatók egy playbook YAML fájlban, amint az látható:
--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080
ha a gazdarendszerek ugyanazokkal a változókkal rendelkeznek, definiálhat egy másik csoportot az inventory fájlban, hogy kevésbé nehézkes legyen, és elkerülje a felesleges ismétlődést.
például:
web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80
a fentiek felépíthetők:
web_server_1web_server_2ansible_user=centoshttp_port=80
a playbook YAML fájlban ez a következőképpen lesz meghatározva:
--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80
Ansible Facts
a playbooks futtatásakor az Ansible első feladata a beállítási feladat végrehajtása. Biztos vagyok benne, hogy biztosan találkozott a kimenettel:
TASK: *********
a lehetséges tények nem más, mint a Rendszer tulajdonságai vagy a távoli csomópontok információinak darabjai, amelyekhez csatlakozott. Ez az információ magában foglalja a rendszer architektúráját, az operációs rendszer verzióját, a BIOS-információkat, a rendszer idejét és dátumát, a rendszer üzemidejét, az IP-címet és a hardverinformációkat, hogy csak néhányat említsünk.
ahhoz, hogy a tényeket minden rendszer egyszerűen használja a telepítő modul, mint az alábbi parancs:
# ansible -m setup hostname
például:
# ansible -m setup database_server
ez az ábrán látható módon nagy mennyiségű adatot nyomtat ki JSON formátumban:
az Ansible facts hasznos segítséget nyújt a rendszergazdáknak, hogy milyen műveleteket hajtsanak végre, például az operációs rendszertől függően, képesek tudni, hogy mely szoftvercsomagokat kell telepíteni, és hogyan kell konfigurálni stb.
egyéni tények
azt is tudta, hogy létrehozhat saját egyéni tényeket, amelyeket az Ansible gyűjthet? Dehogynem. Szóval, hogy csinálod? Váltsunk sebességet, és lássuk, hogyan.
az első lépés az /etc/ansible/facts létrehozása.d könyvtár a felügyelt vagy távoli csomóponton.
ebben a könyvtárban hozzon létre egy .fact
kiterjesztésű fájlt. Ez a fájl(ok) visszaadja a JSON adatokat, amikor a playbook fut az Ansible vezérlő csomóponton, amely tartalmazza az egyéb tényeket, amelyeket az Ansible lekér egy playbook futtatása után.
Íme egy példa a date_time nevű egyéni tényfájlra.az a tény, hogy lekéri a dátumot és az időt.
# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact
adja hozzá a következő sorokat.
#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"
mentse és lépjen ki a fájlból.
most rendelje hozzá a végrehajtási engedélyeket:
# chmod +x /etc/ansible/facts.d/date_time.fact
most, létrehoztam egy playbook Ansible vezérlő csomópont nevű check_date.yml.
---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}
csatolja a fact fájlt az ansible_local változóhoz. A ansible_local tárolja az összes egyéni tényeket.
most futtassa a playbookot, és figyelje meg a fact fájlba mentett információk lehetséges visszakeresését:
# ansible_playbook check_date.yml
következtetés
ez elvezet minket a végén ez a bemutató dolgozik Ansible változók és tények.