GNU/Linux >> Znalost Linux >  >> Linux

Ansible inventář a konfigurační soubory

Před několika dny jsme diskutovali o tom, jak nastavit tříuzlovou laboratoř Ansible pomocí Vagrant v Linuxu. V tomto článku se podrobně seznámíme se základními koncepty Ansible, jako je inventář Ansible a konfigurační soubory.

Základní struktura Ansible

Když začnete pracovat s ansible, měli byste porozumět dvěma důležitým souborům. Jedním z nich je Ansible inventář a druhý je Konfigurace Ansible soubor.

Konfigurace obsahuje všechny konfigurace, které ansible použije během běhu. Když nainstalujete ansible pomocí správce balíčků OS, můžete vidět, že existuje výchozí konfigurační soubor s názvem "ansible.cfg " vytvořeno v /etc/ansible adresář.

Soubor inventáře obsahuje IP adresu nebo DNS informace o seznamu spravovaných hostitelů, se kterými chceme pracovat. Ansible přečte názvy hostitelů ze souboru inventáře a na těchto uzlech se provedou úlohy/přehrání. Soubory inventáře lze vytvářet v ini , yaml a json formátů.

Níže je struktura mého projektu. Mám ansible.cfg konfigurační soubor, soubor hostitelů a playbook, který je napsán v yaml formát.

Když spustím playbook, ansible načte konfiguraci z ansible.cfg a podrobnosti o hostiteli ze souboru hostitelů pro spuštění přehrávání.

[email protected]:~/ansible_project$ tree .
.
├── ansible.cfg
├── hosts
└── playbook.yml

0 directories, 3 files

Promluvme si podrobně o těchto dvou souborech a konečně spustíme nějaké adhoc příkazy.

Konfigurační soubor Ansible

Ansible používá konfigurační soubor k načtení parametrů, které jsou nutné ke spuštění úlohy ansible. Pokud jste nainstalovali ansible pomocí správce balíčků , budete mít ansible.cfg soubor v /etc/ansible adresář.

Níže je ukázka ansible.cfg soubor.

Ansible vyhledá konfigurační soubor v následujícím pořadí.

  • ANSIBLE_CONFIG - proměnná prostředí
  • ansible.cfg - Aktuální adresář, ze kterého příkaz spouštíte
  • .ansible.cfg - Domovský adresář uživatelů
  • /etc/ansible/ansible.cfg - V /etc/ansible adresář

Spusťte ansible --version příkaz, abyste viděli, který konfigurační soubor ansible vybírá.

$ ansible --version
ansible [core 2.12.3]
  config file = /home/vagrant/ansible_project/ansible.cfg
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0]
  jinja version = 2.10.1
  libyaml = True

Vytvořil jsem vlastní adresář projektu a vytvořil ansible.cfg soubor. Můj konfigurační soubor obsahuje pouze dvě vlastnosti, umístění inventáře a zakázanou kontrolu hostitelského klíče.

[defaults]
inventory = /home/karthick/ansible_project/hosts
host_key_checking = False

Existuje spousta dalších nemovitostí, ale v tuto chvíli je můžete začít používat pouze přidáním vlastnosti „inventář“.

Ansible Inventory File

V souboru inventáře uvedeme IP adresu nebo DNS názvů serverů, síťových zařízení, cloudových služeb nebo čehokoli, s čím dokáže pracovat.

Zásoby lze zapisovat v ini , json a yaml a máte také skripty pro převod jednoho formátu inventáře na jiné formáty.

Ve výchozím nastavení najdete soubor inventáře (hosts) v /etc/ansible adresář, pokud jste nainstalovali ansible pomocí správce balíčků OS. Vždy se doporučuje vytvořit samostatný adresář projektu a vytvořit inventář a konfigurační soubor.

Níže uvedená tabulka ukazuje, jak je moje ansible laboratoř nastavena. Vytvořím soubor inventáře pro toto nastavení laboratoře a spustím modul ping, abych předvedl, jak věci v souboru inventáře fungují.

TYP UZLU NÁZEV UZLU IP ADRESA OS FLAVOR
Řídicí uzel controller.anslab.com 192.168.10.3 ubuntu/focal64
Spravovaný uzel managed1.anslab.com 192.168.10.4 ubuntu/focal64
Spravovaný uzel managed2.anslab.com 192.168.10.5 ubuntu/focal64

Soubor inventáře bez explicitního seskupení

Soubor inventáře má koncept zvaný seskupování, kde budete seskupovat své zdroje a spouštět úkoly proti této skupině. Bude v následující struktuře.

[group-name]
Resource1
Resource2
....
Resource N

Soubor inventáře můžete vytvořit bez použití skupin. V tomto případě Ansible použije dvě výchozí skupiny "vše" a "neseskupeno" .

  • VŠECHNY SKUPINA – Všechny zdroje, které jsou ve výchozím nastavení dostupné v souboru inventáře, budou přiřazeny do všech skupin .
  • NESKUPENO - Zdroje, které nejsou součástí žádné uživatelsky definované skupiny, budou automaticky přiřazeny do neseskupené skupiny .

Vytvořil jsem soubor inventáře bez skupin. Nyní budou tyto dva uzly spadat pod všechny skupiny i do neseskupené skupiny.

$ cat hosts
managed1.anslab.com
managed2.anslab.com

Chcete-li zkontrolovat seznam hostitelů ve všech a neseskupených skupinách, můžete spustit následující příkaz ansible.

$ ansible all --list-hosts
  hosts (2):
    managed1.anslab.com
    managed2.anslab.com
$ ansible ungrouped --list-hosts
  hosts (2):
    managed1.anslab.com
    managed2.anslab.com

Soubor inventáře se seskupením

Jak bylo předpovězeno, seskupování je skvělý způsob, jak organizovat své zdroje, takže pro vás bude snadné spustit úlohu proti konkrétní skupině. Mám dva spravované uzly a běží na nich Ubuntu 20.04LTS.

Řekněme, že chci seskupit soubor inventáře podle typu operačního systému, pak bude soubor inventáře vypadat níže. Zde ubuntu je název skupiny.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

Proti této skupině lze spouštět úkoly.

$ ansible ubuntu -m ping -o
managed1.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
managed2.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}

Pokud nyní zkontroluji skupinu „ungrouped“, žádný hostitel tam nebude.

$ ansible ungrouped --list-hosts
[WARNING]: No hosts matched, nothing to do
hosts (0):

V souboru inventáře můžete vytvořit libovolný počet skupin a používat stejné názvy zdrojů.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

[dev]
managed1.anslab.com

[test]
managed2.anslab.com
$ ansible ubuntu -m ping -o
$ ansible dev -m ping -o
$ ansible test -m ping -o

Soubor inventáře s rozsahy

Pokud máte společný vzor pojmenování pro své prostředky, můžete použít rozsahy. Podívejte se na níže uvedený příklad, kde jsem místo opakování DNS použil rozsah k jeho zkrácení.

[ubuntu]
managed[1:2].anslab.com

Soubor inventáře s podřízenými skupinami

Můžete vytvořit skupinu a pod ní používat další názvy skupin. Podívejte se na níže uvedený příklad, mám skupinu ubuntu, která má názvy mých serverů. Vytvořil jsem další skupinu s názvem server, která obsahuje skupinu ubuntu.

Je důležité, abyste přidali :children k názvu skupiny, jinak bude skupina serverů zacházet s "ubuntu " jako název serveru namísto názvu skupiny.

[ubuntu]
managed[1:2].anslab.com

[server:children]
ubuntu

Soubor inventáře s proměnnými hostitele a proměnnými skupiny

Soubor inventáře podporuje hostitelské a skupinové proměnné. Hostitelské proměnné nejsou nic jiného než proměnné a jejich hodnoty předané hostiteli v souboru inventáře. V níže uvedené konfiguraci říkám ansible použít ostechnix jako můj uživatel a místo standardního portu ssh použijte port 2222 .

[ubuntu]
managed1.anslab.com ansible_user=ostechnix ansible_port=2222
managed2.anslab.com ansible_user=ostechnix ansible_port=2222

Proměnné skupiny jsou stejné jako proměnné hostitele, ale proměnné budou aplikovány na celou skupinu namísto jednoho hostitele. Z výše uvedené konfigurace můžete vidět, že ansible_user a ansible_port jsou pro oba uzly stejné. Můžete tedy vytvořit skupinový var, kde budou proměnné zděděny všemi uzly ve skupině. Musíte přidat :vars aby se skupina vytvořila jako proměnná skupiny.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

[ubuntu:vars]
ansible_user=ostechnix
ansible_port=2222

Pozor: Pokud máte pro stejný uzel jak skupinovou proměnnou, tak hostitelskou proměnnou, pak má hostitelská proměnná vysokou prioritu.

Existuje mnoho parametrů inventáře, které můžete použít, a seznam můžete získat z oficiálního dokumentu .

Soubor inventáře s aliasem

Pro zdroj můžete vytvořit alias, jak je uvedeno níže. Zde jsou m1 a m2 aliasy.

[ubuntu]
m1 ansible_host=managed1.anslab.com
m2 ansible_host=managed2.anslab.com

Nyní lze tento alias použít ke spouštění některých úloh.

$ ansible m1 -m ping -o
m1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
$ ansible m2 -m ping -o
m2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}

Soubor inventáře ve formátu YAML

Soubory inventáře lze také zapisovat ve formátu YAML. Vše, co jsme probrali v předchozích částech, je napsáno ve formátu YAML.

Níže uvedený obrázek představuje dva uzly s několika hostitelskými proměnnými.

Níže uvedený obrázek představuje dva uzly se skupinovými proměnnými.

Příkaz Ansible Inventory

Ansible má příkaz inventarizace, který bude velmi užitečný pro zobrazení informací o souborech inventáře.

Chcete-li získat seznam podporovaných možností, spusťte příkaz help.

$ ansible-inventory --help

Chcete-li získat podrobnosti o inventáři ve formátu grafu, použijte --graph vlajka. Pokud máte různé soubory inventáře, můžete použít -i flag explicitně odkazovat na soubor inventáře.

$ ansible-inventory --graph

Informace o hostiteli a skupině var můžete vytisknout předáním --vars flag spolu s --graph vlajka.

$ ansible-inventory --graph --vars

Když použijete --list flag, výstup bude ve formátu JSON.

$ ansible-inventory -list

Informace o konkrétním uzlu můžete získat pomocí --host vlajka.

$ ansible-inventory --host managed1.anslab.com

Závěr

V tomto článku jsme viděli důležitý koncept, který tvoří jádro ansible architektury. Pokud jste začátečník, zaměřte se na vytváření inventáře ve formátu ini a postupně se dozvíte více o osvědčených postupech, když začnete pracovat na produkčních projektech.

Další informace:

  • Ansible SSH autentizace a eskalace oprávnění
  • Začínáme s příkazy Ansible Ad Hoc

Linux
  1. Jak najít konfigurační soubory MySQL, PHP a Apache

  2. Jak spravovat statický a dynamický inventář hostitelů Ansible

  3. Vytvářejte a odebírejte odkládací soubory v Ubuntu

  1. Snadný způsob, jak skrýt soubory a adresáře v Linuxu

  2. Jak extrahovat soubory .gz a .tar.gz v Linuxu

  3. wget vs curl:Jak stahovat soubory pomocí wget a curl

  1. Příkaz Ls v Linuxu (seznam souborů a adresářů)

  2. Ansible Guide:Správa souborů pomocí Ansible

  3. rozdíl mezi souborem zařízení a ovladačem zařízení