GNU/Linux >> Znalost Linux >  >> Linux

10 modulů Ansible pro automatizaci systému Linux

Ansible je kompletní automatizační řešení pro vaše IT prostředí. Ansible můžete použít k automatizaci konfigurace serverů Linux a Windows, k organizování poskytování služeb, nasazení cloudových prostředí a dokonce ke konfiguraci síťových zařízení.

Ansible moduly abstraktní akce ve vašem systému, takže se nemusíte starat o detaily implementace. Jednoduše popíšete požadovaný stav a Ansible zajistí, aby se s ním cílový systém shodoval.

Dostupnost tohoto modulu je jednou z hlavních výhod Ansible a často se o něm mluví jako o Ansible s „bateriemi součástí“. Opravdu můžete najít moduly pro velké množství úkolů, a i když je to skvělé, od začátečníků často slýchám, že nevědí, kde začít.

Ačkoli váš výběr modulů bude záviset výhradně na vašich požadavcích a na tom, co se snažíte automatizovat pomocí Ansible, zde je deset nejlepších modulů, které potřebujete, abyste mohli začít s automatizací systému Ansible pro Linux.

1. kopírovat

Kopírovací modul umožňuje zkopírovat soubor z řídicího uzlu Ansible na cílové hostitele. Kromě kopírování souboru umožňuje nastavit vlastnictví, oprávnění a štítky SELinux pro cílový soubor. Zde je příklad použití kopírovacího modulu ke zkopírování konfiguračního souboru „zprávy dne“ na cílové hostitele:

- name:Ujistěte se, že je soubor MOTD na svém místě
  copy:
    src:files/motd
    dest:/etc/motd
    vlastník:root
    skupina:root
    režim:0644

U méně složitého obsahu můžete obsah zkopírovat přímo do cílového souboru, aniž byste museli mít místní soubor, jako je tento:

- name:Ujistěte se, že je soubor MOTD na svém místě
  copy:
    content:„Vítejte v tomto systému.“
    dest:/etc/motd
    vlastník:root
    skupina:root
    režim:0644

Tento modul funguje idempotentně, což znamená, že zkopíruje soubor pouze v případě, že stejný soubor již není na místě se stejným obsahem a oprávněními.

Kopírovací modul je skvělou volbou pro kopírování malého počtu souborů se statickým obsahem. Pokud potřebujete zkopírovat velké množství souborů, podívejte se na modul synchronizace. Chcete-li kopírovat soubory s dynamickým obsahem, podívejte se na template další modul.

2. šablona

Modul šablony funguje podobně jako copy modul, ale zpracovává obsah dynamicky pomocí šablonovacího jazyka Jinja2, než jej zkopíruje do cílových hostitelů.

Definujte například šablonu „zpráva dne“, která zobrazuje název cílového systému, takto:

$ vi templates/motd.j2
Vítejte v {{ inventář_hostname }}.

Poté vytvořte instanci této šablony pomocí template modul, jako je tento:

- name:Ujistěte se, že je soubor MOTD na svém místě
  šablona:
    src:templates/motd.j2
    dest:/etc/motd
    vlastník:root
skupina:root
    režim:0644

Před zkopírováním souboru Ansible zpracuje šablonu a interpoluje proměnnou a nahradí ji názvem cílového hostitelského systému. Pokud je například název cílového systému rh8-vm03 , výsledný soubor je:

Vítejte v rh8-vm03.

Zatímco copy modul může také interpolovat proměnné při použití content parametr, template modul umožňuje další flexibilitu vytvářením souborů šablon, které umožňují definovat složitější obsah, včetně for smyčky, if podmínky a další. Úplnou referenci naleznete v dokumentaci Jinja2.

Tento modul je také idempotentní a nezkopíruje soubor, pokud obsah v cílovém systému již odpovídá obsahu šablony.

3. uživatel

Uživatelský modul vám umožňuje vytvářet a spravovat uživatele Linuxu ve vašem cílovém systému. Tento modul má mnoho různých parametrů, ale ve své nejzákladnější podobě jej můžete použít k vytvoření nového uživatele.

Chcete-li například vytvořit uživatele ricardo s UID 2001, část skupin users a wheel a heslo mypassword , použijte user modul s těmito parametry:

- name:Ujistěte se, že uživatel ricardo existuje
  user:
    jméno:ricardo
    group:users
    groups:wheel
    uid:2001
    heslo:"{{ 'mypassword' | password_hash('sha512') }}"
    stav:přítomný

Všimněte si, že tento modul se snaží být idempotentní, ale nemůže to zaručit u všech svých možností. Pokud například znovu spustíte předchozí příklad modulu, obnoví se heslo na definovanou hodnotu a při každém spuštění se změní uživatel v systému. Aby byl tento příklad idempotentní, použijte parametr update_password: on_create , což zajistí, že Ansible nastaví heslo pouze při vytváření uživatele a nikoli při dalších spuštěních.

Tento modul můžete také použít k odstranění uživatele nastavením parametru state: absent .

user modul má mnoho možností pro správu více uživatelských aspektů. Ujistěte se, že jste se podívali do dokumentace modulu, kde najdete další informace.

4. balíček

Modul balíčku vám umožňuje instalovat, aktualizovat nebo odstraňovat softwarové balíčky z vašeho cílového systému pomocí standardního správce balíčků operačního systému.

Chcete-li například nainstalovat webový server Apache na počítač Red Hat Linux, použijte modul takto:

- name:Ujistěte se, že je nainstalován balíček Apache
  package:
    name:httpd
    stav:přítomný

Více o Ansible

  • Rychlý průvodce Ansible
  • Cheat sheet Ansible
  • Bezplatný online kurz:Základy Ansible
  • Stáhněte si a nainstalujte Ansible
  • eKniha:Automatizovaný podnik
  • eKniha:Ansible pro DevOps
  • Bezplatné elektronické knihy Ansible
  • Nejnovější články Ansible

Tento modul je agnostik distribuce a funguje pomocí základního správce balíčků, jako je yum/dnf pro distribuce založené na Red Hatu a apt pro Debian. Z tohoto důvodu provádí pouze základní úkoly, jako je instalace a odstranění balíčků. Pokud potřebujete větší kontrolu nad možnostmi správce balíčků, použijte specifický modul pro cílovou distribuci.

Také mějte na paměti, že i když samotný modul funguje na různých distribucích, název balíčku pro každou se může lišit. Například v distribuci založené na Red Hat je název balíčku webového serveru Apache httpd , zatímco v Debianu je to apache2 . Ujistěte se, že vaše příručky se tím zabývají.

Tento modul je idempotentní a nebude fungovat, pokud aktuální stav systému odpovídá požadovanému stavu.

5. služba

Použijte servisní modul ke správě cílových systémových služeb pomocí požadovaného init systému; například systemd.

V nejzákladnější podobě stačí zadat název služby a požadovaný stav. Například ke spuštění sshd službu, použijte modul takto:

- name:Ujistěte se, že je spuštěno SSHD
  služba:
    name:sshd
    stav:spuštěno

Můžete také zajistit, aby se služba spouštěla ​​automaticky při startu cílového systému, zadáním parametru enabled: yes .

Stejně jako u package modul, service modul je flexibilní a funguje napříč různými distribucemi. Pokud potřebujete doladit specifický cílový init systém, použijte odpovídající modul; například modul systemd .

Podobně jako u ostatních modulů, které jste dosud viděli, je service modul je také idempotentní.

6. firewalld

Pomocí modulu firewalld ovládejte systémový firewall pomocí firewalld démona na systémech, které jej podporují, jako jsou distribuce založené na Red Hatu.

Chcete-li například otevřít službu HTTP na portu 80, použijte ji takto:

- name:Ujistěte se, že je otevřený port 80 (http)
  firewalld:
    služba:http
    stav:povoleno
    trvalé:ano
    okamžité:ano

Můžete také zadat vlastní porty místo názvů služeb pomocí port parametr. V tomto případě nezapomeňte zadat také protokol. Chcete-li například otevřít port TCP 3000, použijte toto:

- name:Ujistěte se, že je otevřený port 3000/TCP
  firewalld:
    port:3000/tcp
    stav:povoleno
    trvalé:ano
    okamžité:ano

Tento modul můžete také použít k ovládání dalších firewalld aspekty, jako jsou zóny nebo složitá pravidla. Ujistěte se, že si v dokumentaci modulu najdete úplný seznam možností.

7. soubor

Souborový modul vám umožňuje ovládat stav souborů a adresářů – nastavení oprávnění, vlastnictví a štítků SELinux.

Použijte například file modulu k vytvoření adresáře /app ve vlastnictví uživatele ricardo , s oprávněními ke čtení, zápisu a spouštění pro vlastníka a skupinu users :

- name:Ujistěte se, že adresář /app existuje
  soubor:
    cesta:/app
    stav:adresář
    vlastník:ricardo
    skupina:uživatelé
režim:0770

Tento modul můžete také použít k rekurzivnímu nastavení vlastností souborů v adresářích pomocí parametru recurse: yes nebo smažte soubory a adresáře s parametrem state: absent .

Tento modul pracuje s idempotenci pro většinu svých parametrů, ale některé z nich mohou způsobit, že pokaždé změní cílovou cestu. Další podrobnosti naleznete v dokumentaci.

8. lineinfile

Modul lineinfile umožňuje spravovat jednotlivé řádky na existujících souborech. Je užitečné aktualizovat cílenou konfiguraci na stávajících souborech, aniž byste museli měnit zbytek souboru nebo kopírovat celý konfigurační soubor.

Například do souboru hostitelů přidejte novou položku takto:

- name:Zajistěte hostitele rh8-vm03 v souboru hostitelů
  lineinfile:
    cesta:/etc/hosts
    řádek:192.168.122.236 rh8-vm03
    stav:přítomný

Tento modul můžete také použít ke změně existujícího řádku použitím parametru regexp hledat existující linku k nahrazení. Aktualizujte například sshd_config souboru zabránit přihlášení root úpravou řádku PermitRootLogin yes na PermitRootLogin no :

- name:Ujistěte se, že se root nemůže přihlásit přes ssh
  lineinfile:
    cesta:/etc/ssh/sshd_config
    regexp:'^PermitRootLogin'
    řádek:PermitRootLogin no
    stav:přítomný

Poznámka:Chcete-li tuto změnu povolit, použijte servisní modul k restartování služby SSHD.

Tento modul je také idempotentní, ale v případě úpravy řádku se ujistěte, že regulární výraz odpovídá původnímu i aktualizovanému stavu, abyste se vyhnuli zbytečným změnám.

9. zrušit archiv

Pomocí modulu unarchive extrahujte obsah archivních souborů, jako je tar nebo zip soubory. Ve výchozím nastavení zkopíruje archivní soubor z řídicího uzlu do cílového počítače, než jej rozbalí. Toto chování změňte zadáním parametru remote_src: yes .

Například extrahujte obsah .tar.gz soubor, který již byl stažen do cílového hostitele s touto syntaxí:

- name:Extrahujte obsah app.tar.gz
  unarchive:
    src:/tmp/app.tar.gz
    dest:/app
    remote_src:yes

Některé archivační technologie vyžadují, aby byly v cílovém systému k dispozici další balíčky; například balíček unzip extrahovat .zip soubory.

V závislosti na použitém formátu archivu může nebo nemusí tento modul fungovat idempotentně. Abyste předešli zbytečným změnám, můžete použít parametr creates určit soubor nebo adresář, který by tento modul vytvořil při extrahování obsahu archivu. Pokud tento soubor nebo adresář již existuje, modul znovu nerozbalí obsah.

10. příkaz

Příkazový modul je flexibilní modul, který vám umožňuje provádět libovolné příkazy na cílovém systému. Pomocí tohoto modulu můžete na cílovém systému dělat téměř cokoli, pokud pro to existuje příkaz.

I když command modul je flexibilní a výkonný, měl by být používán opatrně. Vyhněte se použití příkazového modulu k provedení úlohy, pokud je pro to k dispozici jiný vhodný modul. Například můžete vytvořte uživatele pomocí command modul pro spuštění useradd příkaz, ale měli byste použijte user modul místo toho, protože od vás abstrahuje mnoho detailů, stará se o rohové skříně a zajišťuje, že se konfigurace mění pouze v případě potřeby.

V případech, kdy nejsou k dispozici žádné moduly nebo pro spouštění vlastních skriptů nebo programů, použijte command modul je stále skvělým zdrojem. Tento modul použijte například ke spuštění skriptu, který je již přítomen v cílovém počítači:

- name:Spusťte instalační program aplikace
  příkaz:"/app/install.sh"

Ve výchozím nastavení není tento modul idempotentní, protože Ansible provede příkaz pokaždé. Chcete-li vytvořit command modul idempotent, můžete použít when podmínky pro provedení příkazu pouze v případě, že příslušná podmínka existuje nebo creates argument, podobně jako v příkladu modulu pro rozbalení.

Co bude dál?

Pomocí těchto modulů můžete konfigurovat celé linuxové systémy kopírováním, vytvářením šablon nebo úpravou konfiguračních souborů, vytvářením uživatelů, instalací balíčků, spouštěním systémových služeb, aktualizací firewallu a dalšími.

Pokud jste v Ansible noví, ujistěte se, že jste si prohlédli dokumentaci o tom, jak vytvořit playbooky pro kombinování těchto modulů pro automatizaci vašeho systému. Některé z těchto úloh vyžadují spuštění se zvýšenými oprávněními. Další podrobnosti naleznete v dokumentaci eskalace oprávnění.

Od Ansible 2.10 jsou moduly organizovány v kolekcích. Většina modulů v tomto seznamu je součástí ansible.builtin kolekce a jsou standardně dostupné s Ansible, ale některé z nich jsou součástí jiných kolekcí. Seznam kolekcí naleznete v dokumentaci Ansible.


Linux
  1. Demystifikování Ansible pro systémové správce Linuxu

  2. Stručný úvod do rolí Ansible pro správu systému Linux

  3. Je vývoj/testování linuxového modulu bezpečný pomocí virtuálního stroje?

  1. Jak používám Ansible a anacron pro automatizaci

  2. 8 tipů pro spolehlivou automatizaci systému Linux

  3. 3 kroky k identifikaci kandidátů na automatizaci systému Linux

  1. Co je Linux? Průvodce pro netechnické uživatele

  2. 3 Užitečné Linuxové příkazy pro systémové administrátory

  3. 10 nejlepších IPTV pro systém Linux/Ubuntu v roce 2022