GNU/Linux >> Znalost Linux >  >> Linux

Použití Ansible playbooku ke správě aktualizací pracovní stanice a serveru

Rozhodl jsem se zefektivnit svůj proces aktualizace pro zákaznické systémy, které podporuji, i pro moje vlastní linuxová zařízení. Zatímco řada složitých skriptů mi po dlouhou dobu dobře sloužila, výhod použití Ansible pro tento úkol je příliš mnoho na to, abych si je nechal ujít.

V první části této série článků jsem diskutoval o skutečném procesu aktualizace, vytvořil jsem strukturu své příručky a představil klíčová slova a komentáře. Sešit obsahuje tři divadelní hry. Každá hra spravuje kategorii systémů. Play 1 obsluhuje moje zařízení Ansible Controller (moje primární pracovní stanice), zatímco Plays 2 a 3 spravují servery a všechny zbývající pracovní stanice.

Začněme tento druhý článek zkoumáním druhé hry.

Druhá hra

Tady je celá druhá hra. Účelem této hry je provádět aktualizace brány firewall a serveru.

Brána firewall musí být v provozu, dokud se servery – a všichni ostatní hostitelé – aktualizují, aby měli přístup k internetu pro stahování aktualizačních balíčků. Server musí běžet, zatímco se firewall a další hostitelé aktualizují, aby poskytovaly služby DHCP a názvů. Aby toho bylo dosaženo, tato hra aktualizuje tyto dva hostitele jeden po druhém.

Názvy těchto dvou hostitelů jsou obsaženy v [all_servers] skupině v /etc/ansible/hosts inventární soubor.

#######################################################################
#######################################################################
# Play 2 - Do servers 
#######################################################################
#######################################################################
- name: Play 2 - Install updates for servers yorktown and wally
  hosts: all_servers
  serial: 1
  remote_user: root
  vars:
    run: false
    reboot: false

  tasks:
#######################################################################
# Do some preliminary checking
#######################################################################
    - name: Install the latest version of the doUpdates script
      copy:
        src: /root/ansible/Updates/files/doUpdates
        dest: /usr/local/bin
        mode: 0774
        owner: root
        group: root

    - name: Check for currently available updates
      command: doUpdates -c
      register: check
    - debug: var=check.stdout_lines

#######################################################################
# Do the updates.
#######################################################################
# Install all available updates
    - name: Install all current updates
      dnf:
        name: "*"
        state: latest
      when: (check.stdout | regex_search('updates ARE available')) and run == "true"

    - name: Update the man database
      command: mandb
      when: run

    - name: Reboot if necessary and reboot extra variable is true
      reboot:
      when: (check.stdout | regex_search('reboot will be required')) and reboot == "true" and run == "true"

[ Také by se vám mohlo líbit: Úvod do Ansible Tower ]

Celá tato druhá hra je téměř stejná jako ta první, kromě dvou řádků.

sériový :Tento dodatečný příkaz říká Ansible, aby toto přehrávání spustilo na jednom hostiteli najednou, to znamená sériově spíše než paralelně. Pokud all_servers skupina v inventáři obsahovala deset serverů, mohl jsem použít vyšší limit, například dva, aby tato hra běžela na dvou serverech najednou. V tomto případě potřebuji wally , firewall, aby byl v provozu, takže yorktown server má přístup k internetu pro stažení aktualizovaných balíčků. Nezáleží na tom, v jaké sekvenci jsou tito dva hostitelé aktualizováni, pokud se neprovádějí oba současně.

restartovat :Ansible má vestavěnou schopnost restartu, takže ji můžeme v této hře použít místo příkazu Linux poweroff. Kritickým rysem funkce Ansible reboot je, že provádí ověření, že restart byl úspěšný, vzdálený hostitel je v provozu a SSH komunikace opět funguje. Výchozí časový limit je 10 minut, po kterých Ansible vyvolá chybu.

Třetí hra

A je tu třetí hra. Tato hra aktualizuje všechny zbývající hostitele v mé síti. Názvy těchto hostitelů jsou obsaženy v [pracovních stanicích] skupina /etc/ansible/hosts inventární soubor.

#######################################################################
#######################################################################
# Play 3 - Do all workstations except david
#######################################################################
#######################################################################
- name: Play 3 - Install updates for all workstations except david
  hosts: workstations
  strategy: free
  remote_user: root
  vars:
    run: false
    reboot: false

  tasks:
#######################################################################
# Do some preliminary checking
#######################################################################
    - name: Install the latest version of the doUpdates script
      copy:
        src: /root/ansible/Updates/files/doUpdates
        dest: /usr/local/bin
        mode: 0774
        owner: root
        group: root

    - name: Check for currently available updates
      command: doUpdates -c
      register: check
    - debug: var=check.stdout_lines

#######################################################################
# Do the updates.
#######################################################################
# Install all available updates
    - name: Install all current updates
      dnf:
        name: "*"
        state: latest
      when: (check.stdout | regex_search('updates ARE available')) and run == "true"

    - name: Reboot if necessary and reboot extra variable is true
      reboot:
      when: (check.stdout | regex_search('reboot will be required')) and reboot == "true" and run == "true"

V této příručce je pouze jedna změna kromě seznamu hostitelů.

strategii :zdarma strategie říká Ansibleovi, aby plnil úkoly v této hře volně. Úkoly v této hře se spouštějí na každém hostiteli tak rychle, jak je hostitel dokáže. To znamená, že někteří hostitelé mohou dokončit poslední úlohu mnohem dříve, než jiní, pomalejší hostitelé dokončili i první úlohu v playbooku. Při čtení datového toku STDOUT se to může zdát jako něco zdarma pro všechny.

Každá strategie je samostatný plugin a existuje několik dalších pluginů, které lze s tímto klíčovým slovem použít. Výchozí hodnota je lineární , který provede každý úkol na všech hostitelích, než přejde k dalšímu úkolu. host_pinned plugin provede všechny úkoly ve hře na každém hostiteli, než se přesune na dalšího hostitele. ladění plugin spouští úlohy interaktivně, takže hru lze ladit.

Spuštění příručky

Tuto příručku spustím pomocí příkazu:

# ansible-playbook -e "run=true reboot=true" doUpdates.yml

-e volba znamená "extra variables." Zde specifikuje hodnoty pro dvě proměnné definované v každé hře. V tomto případě je nastavte obě na hodnotu true umožňuje provést aktualizace a v případě potřeby provést restart (vypnutí).

Nebudu reprodukovat STDOUT datový tok zde, protože je poměrně dlouhý.

Poslední myšlenky

S několika změnami, které odrážejí podrobnosti vaší sítě, lze tuto příručku použít k automatizaci vašich aktualizačních úloh. Provádění aktualizací pomocí příručky podobné té mé je dobrý způsob, jak začít používat Ansible. Přestože používá několik klíčových slov, která mohou provádět složité úkoly, jedná se o relativně jednoduchou příručku. Začal jsem s prvním hraním, abych aktualizoval svou osobní pracovní stanici, a zbytek byl většinou kopírování/vkládání, s několika drobnými změnami, které vyhovovaly potřebám různých skupin hostitelů.

Ano, existují i ​​jiné způsoby, jak to udělat. Pravděpodobně jsem mohl použít různé úkoly pomocí podmínek v rámci jedné nebo dvou her namísto tří her. Nebo jsem mohl použít podmínky a bloky, abych se vypořádal s manipulací s konkrétními hostiteli jinak. Osobně si myslím, že jednotlivé hry pomáhají oddělit logiku natolik, že změna způsobu, jakým jsou úkoly řešeny v jedné hře, neovlivní ostatní. Podle mého názoru je toto oddělení také elegantnější, protože celková logika je jednodušší na psaní, pochopení a snazší správu.

[ Bezplatný průvodce od společnosti Red Hat:5 kroků k automatizaci vašeho podnikání. ] 

Zdroje

Nejúplnější a nejužitečnější dokument, který jsem našel, je uživatelská příručka Ansible na webové stránce Ansible. Tento dokument je zamýšlen jako referenční, nikoli jako návod nebo dokument pro zahájení práce.

Opensource.com publikoval mnoho článků o Ansible v průběhu let a většinu z nich jsem shledal velmi užitečnými pro mé potřeby. Webová stránka Red Hat Enable Sysadmin také obsahuje mnoho článků Ansible, které jsou podle mě přínosné.

K dispozici je také několik dobrých, ale stručných manuálových stránek.


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

  2. Jak spravovat uživatele a skupiny na serveru FreeIPA

  3. Zkontrolujte aktualizace systému Windows v systému Windows Server 2016 a 2019

  1. Monitorujte linuxový server pomocí Prometheus a Grafana

  2. Jak používat Ansible k instalaci a konfiguraci Redis 6 na Ubuntu 20.04

  3. Jak čekat na restart serveru pomocí Ansible?

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

  2. Pomocí Ansible nainstalujte a nakonfigurujte Elasticsearch na Ubuntu 20.04

  3. Použití protokolů serveru