Mezi vašimi spravovanými systémy bude vždy mnoho odchylek. Z tohoto důvodu se musíte naučit pracovat s proměnnými Ansible.
V tomto tutoriálu se naučíte, jak definovat a odkazovat na proměnné Ansible. Dozvíte se také, jak používat Ansible facts k načítání informací o vašich spravovaných uzlech.
Dále se také naučíte, jak používat registry k zachycení výstupu úlohy.
Pokud jste zde poprvé, podívejte se prosím na předchozí kapitoly této série:
- Ansible RHCE #1:Úvod a instalace
- Ansible RHCE #1:Spouštění ad-hoc příkazů
- Ansible RHCE #1:Pochopení příruček
Část 1:Práce s proměnnými v Ansible
Začněme nejprve proměnnými. Mějte na paměti, že toto vše je zapsáno ve vašem souboru YML.
Definování a odkazování proměnných
Můžete použít vars klíčové slovo k definování proměnných přímo v playbooku.
Můžete například definovat fav_color proměnnou a nastavte její hodnotu na žlutou následovně:
---
- name: Working with variables
hosts: all
vars:
fav_color: yellow
Jak nyní používáte (odkaz) fav_color variabilní? Ansible používá pro práci s proměnnými šablonový systém Jinja2. V této sérii bude vyhrazený tutoriál, který pojednává o Jinja2, ale prozatím potřebujete znát úplné základy.
Chcete-li získat hodnotu fav_color proměnná; musíte jej obklopit párem složených závorek následovně:
My favorite color is {{ fav_color }}
Všimněte si, že pokud je vaše proměnná prvním prvkem (nebo jediným prvkem) na řádku, pak je použití uvozovek povinné takto:
"{{ fav_color }} is my favorite color."
Nyní napíšeme příručku s názvem variables-playbook.yml to všechno dává dohromady:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
fav_color: yellow
tasks:
- name: Show me fav_color value
debug:
msg: My favorite color is {{ fav_color }}.
Použil jsem ladění modul spolu s zprávou možnost modulu vytisknout hodnotu fav_color proměnná.
Nyní spusťte playbook a vaše oblíbená barva se zobrazí následovně:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show me fav_color value] *************************************************
ok: [node1] => {
"msg": "My favorite color is yellow."
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vytváření seznamů a slovníků
K definování proměnných s více hodnotami můžete také použít seznamy a slovníky. Můžete například definovat seznam s názvem čísla_portů a nastavte jeho hodnotu následovně:
vars:
port_nums: [21,22,23,25,80,443]
K definování čísla_portů jste také mohli použít následující způsob což je ekvivalentní:
vars:
port_nums:
- 21
- 22
- 23
- 25
- 80
- 443
Všechny hodnoty můžete vytisknout v číslech_portů takto:
All the ports {{ port_nums }}
Můžete také přistupovat ke konkrétnímu prvku seznamu:
First port is {{ port_nums[0] }}
Všimněte si, že pro přístup k prvkům seznamu používáte index (pozici).
Můžete také definovat slovník s názvem uživatelé takto:
vars:
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Existují dva různé způsoby, jak získat přístup k prvkům slovníku:
- dict_name['key'] -> uživatelé['bob']['shell']
- dict_name.key -> users.bob.shell
Všimněte si, že pro přístup k prvkům slovníku používáte klíč.
Nyní můžete upravit soubor variables-playbook.yml playbook pro zobrazení seznamů a slovníků v akci:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
tasks:
- name: Show 2nd item in port_nums
debug:
msg: SSH port is {{ port_nums[1] }}
- name: Show the uid of bob
debug:
msg: UID of bob is {{ users.bob.uid }}
Nyní můžete spustit playbook a zobrazit druhý prvek v port_nums a ukázat bobovo uid:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
"msg": "SSH port is 22"
}
TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
"msg": "UID of bob is 1122"
}
Včetně externích proměnných
Stejně jako můžete importovat (nebo zahrnout) úkoly do playbooku. Totéž můžete udělat s proměnnými. To znamená, že do playbooku můžete zahrnout proměnné definované v externím souboru.
Pro demonstraci vytvoříme soubor s názvem myvars.yml který obsahuje naše čísla_portů seznam a uživatelé slovník:
[[email protected] plays]$ cat myvars.yml
---
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Přečíst celý příběh
Zbytek článku je k dispozici pouze členům LHB. Nyní se můžete ZDARMA zaregistrovat a přečíst si zbytek tohoto článku spolu s přístupem ke všem příspěvkům pouze pro členy. Také se přihlásíte k odběru našeho čtrnáctidenního zpravodaje o Linuxu.
OdebíratUž máte účet?Přihlaste se