GNU/Linux >> Znalost Linux >  >> Linux

RHCE Ansible Series #4:Ansible proměnné, fakta a registry

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
Linux
  1. Jak používám Ansible a anacron pro automatizaci

  2. Jak nainstalovat a otestovat Ansible na Linuxu

  3. Jak předat další proměnné do příručky Ansible

  1. RHCE Ansible Series #8:Šifrování obsahu pomocí Ansible Vault

  2. RHCE Ansible Series #7:Jinja2 šablony

  3. RHCE Ansible Series #6:Rozhodování v Ansible

  1. RHCE Ansible série #5:Ansible smyčky

  2. RHCE Ansible Series #11:Správa systémů s Ansible

  3. RHCE Ansible Series #10:Role systému RHEL