Hlavní navigace

Konfigurace AWX a využití všech výhod

Tomáš Heřmánek

V předchozím článku jsme si vyzkoušeli postup, jak krok za krokem AWX naistalovat a v tom dnešní si ukážeme, a hlavně na vlastní kůži vyzkoušíme, jak naplno využít výhody tohoto řešení.

Doba čtení: 6 minut

Sdílet

Rád bych zdůraznil, že tento článek je koncipován jako takový odrazový můstek, jehož ambicí není duplikovat dokumentaci a popisovat každou volbu. Ve většině případů vyplníme jen povinná pole. Snahou je, aby se čtenář mohl rychle zorientovat v rozhraní a logice AWX. Vytvořit co nejjednodušší scénář, který ale bude obsahovat většinu toho, bez čeho se v AWX neobejdeme.

AWX tedy máme nainstalované, ale ještě nám nemůže sloužit. Než budeme moci pustit náš první Job Template (playbook), musíme nastavit několik věcí. Čeká nás poměrně hodně práce, ale většinu je potřeba udělat jen jednou, takže přidání další Job Template už pak je jen otázka chvíle.

Začneme organizační strukturou. AWX je multitenantní, to znamená, že nám nabízí možnost vytvoření více vzájemně izolovaných organizací. V našem případě bude AWX používat právě jedna organizace. Mohli bychom použít tu výchozí, my si ale vytvoříme organizaci jinou, abychom si ukázali, jak na to.

Vytvoření organizace

  1. V nabídce klikneme na položku Organizations. Zde vidíme přehled vytvořených organizací, po instalaci je vytvořena jen organizace Default. Tu pomocí ikony odpadkového koše odstraníme.
  2. Pomocí ikony plus v pravém horním rohu vytvoříme novou Organizaci.
  3. Vyplníme pole:
    • NAME – např. „CoreIT“
    • DESCRIPTION – pokud je potřeba, můžeme zadat i popisek.
    • INSTANCE GROUPS si zatím všímat nemusíme (dokud nemáme AWX nainstalované v clusteru). Pokud necháme pole prázdné, bude použita výchozí skupina „tower“.
  4. Máme vše vyplněno a organizaci uložíme.

Vytvoření credentials

Organizaci jsme vytvořili, můžeme se tedy posunout o krok dál. Přidáme repozitář, ve kterém máme verzované naše role. Většinou budou pro přístup k repozitáři potřeba přihlašovací údaje, musíme tedy nejdříve vytvořit právě je. V případě, že budeme chtít použít CoreIT demo repozitář, můžeme tuto sekci přeskočit. Tento repozitář je veřejně dostupný.

  1. Klikneme v nabídce na položku Credentials. Přednastavené Demo Credentials můžeme odstranit, stejně jako jsme to udělali s organizací. Tyto credentials jsou použity v Demo Job Template a AWX nás na to upozorní. My ale budeme neústupní a na smazání budeme trvat.
  2. Pomocí ikony plus vytvoříme nové Crendentials.
  3. Vyplníme pole:
    • NAME – např. „Bitbucket – CoreIT“.
    • ORGANIZATION – vybereme naši vytvořenou organizaci, např. „CoreIT“.
    • CREDENTIAL TYPE – zvolíme položku Source Control. To nám ve formuláři zobrazí nové položky v závislosti na vybraném typu.
    • USERNAME a HESLO – pokud používáme pro přístup na servery jméno a heslo.
    • SCM PRIVATE KEY – zadáme v případě, že se ověřujeme klíčem.
    • PRIVATE KEY PASSPHRASE – vyplníme, pokud máme klíč chráněný heslem, což bychom měli.
  4. Vše máme vyplněno a uložíme přístupové údaje.

Poznámka

Citlivé údaje jsou před uložením do databáze nejdříve zašifrovány pomocí AES-256. Šifrovací klíč je složen z následujících částí:

  • SECRET_KEY – vygenerovaný při inicializaci Django projektu, uložený v nastavení AWX na disku
  • field_name – typ dat
  • primary_key – přiřazené ID řádku v databázi

AWX šifruje tyto typy dat:

  • password
  • ssh_key_data
  • ssh_key_unlock
  • become_password
  • vault_password

Vytvoření projektu

Nyní si můžeme konečně natáhnout naše role a inventář do AWX. Za tímto účelem si vytvoříme projekt.

  1. V nabídce klikneme na položku Projects.
  2. Pomocí ikony plus vytvoříme nový projekt.
  3. Vyplníme pole:
    • NAME – např. „Začínáme s AWX“.
    • ORGANIZATION – vybereme naši vytvořenou organizaci, např. „CoreIT“.
    • SCM TYPE – vybereme typ verzovacího systému, ve kterém máme Ansible role. V našem případě to je „Git“.
    • SCM URL – zadáme url k našemu repozitáři. Pokud ještě Ansible nikde v git repozitáři nemáme, můžeme použít tento demo repozitář: https://bitbucket.coreit.cz/scm/pu­blic/public-awx-demo.git
    • SCM BRANCH/TAG/COMMIT – jaká BRANCH/TAG… se má stáhnout, např. „master“.
    • SCM CREDENTIAL – potřebné credentials (použijeme-li demo repozitář, popř. jiný repozitář s public přístupem, credentials nepotřebuje).
    • Dále je dobré zaškrtnout volbu CLEAN, případně UPDATE REVISION ON LAUNCH s nějakým rozumně velkým CACHE TIMEOUTem, např. „3600“.
  4. Máme-li vše vyplněno, projekt uložíme.

Pokud vše nastavíme správně, rozběhne se po uložení proces synchronizace. Průběh můžeme sledovat v sekci Jobs. Stojí za povšimnutí, že celý job vlastně není nic jiného než role v Ansible.


Vytvoření inventáře

Máme vytvořený projekt a můžeme se pustit do vytvoření inventáře.

  1. V nabídce klikneme na položku Inventories.
  2. Pomocí ikony plus přidáme nový inventář (vytvoříme klasický ne Smart).
  3. Vyplníme pole:
    • NAME – např. „Demo Inventory“.
    • ORGANIZATION – vybereme naši vytvořenou organizaci, např. „CoreIT“.
    • VARIABLES – zde si můžeme definovat proměnné, které mají být společné pro všechny hosty v tomto inventáři.
  4. Poté co inventář uložíme, se aktivují zbylé sekce v našem inventáři. Nás teď bude nejvíce zajímat sekce SOURCES.
  5. Klikneme na tlačítko SOURCES (najdeme v řadě tlačítek nad poli, které jsme právě vyplnili).
  6. Pomocí ikony plus přidáme nový zdroj.
  7. Vyplníme pole:
    • NAME – např. „CoreIT – Bitbucket“.
    • SOURCE – vybereme položku „Sourced from a Project“.
    • PROJECT – vybereme projekt, který jsme si vytvořili, např. „Začínáme s AWX“.
    • INVENTORY FILE – vybereme soubor, ve kterém máme uložený inventář např. „hosts“
  8. Když máme vše vyplněno, inventář uložíme.
  9. Klikneme na ikonu synchronizace u našeho právě vytvořeného zdroje, abychom zahájili synchronizaci. Právě vytvořený zdroj najdeme dole na stránce.
  10. Zkontrolujeme, že máme hosty naimportované. V nabídce klikneme na položku Inventories a následně na kartu HOSTS. Kliknutím na jméno hosta se můžeme podívat, jaké proměnné má nastavené, ať už byly načteny z host_vars nebo group_vars.

Credentials podruhé

Abychom mohli pouštět Ansible na vzdálených serverech, musíme říct AWX, jak se má na tyto stroje přihlásit. Vytvoříme si tedy další Credentials.

  1. Klikneme v nabídce na položku Credentials.
  2. Pomocí ikony plus vytvoříme nové Crendentials.
  3. Vyplníme pole:
    • NAME – např. „SSH Access“.
    • ORGANIZATION – vybereme naši vytvořenou organizaci, např. „CoreIT“.
    • CREDENTIAL TYPE – zvolíme položku Machine.
    • USERNAME a HESLO – pokud používáme pro přístup na servery jméno a heslo.
    • SSH PRIVATE KEY – zadáme v případě, že se ověřujeme klíčem.
    • PRIVATE KEY PASSPHRASE – vyplníme, pokud máme klíč chráněný heslem, což bychom měli.
  4. Jestliže na server nepřistupujeme přímo pod uživatelem root, vyplníme i pole ohledně eskalace oprávnění.
  5. Máme-li vše vyplněno, přístupové údaje uložíme.

V případě, že použijeme přístup pomocí jména a hesla, budeme muset na AWX server nainstalovat balíček sshpass.

# yum install –y sshpass

Vytvoření Job Template

Konečně máme za sebou všechnu tu přípravnou práci a můžeme připravit Job Template.

  1. Klikneme v nabídce na položku Templates.
  2. Po instalaci je zde vytvořena výchozí template. Tu pomocí ikony odpadkový koš odstraníme.
  3. Pomocí ikony plus vytvoříme nový Job Template.
  4. Vyplníme pole:
    • NAME – např. „Demo Job“.
    • JOB TYPE – „Run“.
    • INVENTORY – náš inventář např. „Demo Inventory“.
    • PROJECT – náš projekt např. „Začínáme s AWX“.
    • PLAYBOOK – soubor s naším playbookem, např. „playbooks/demoplay.yml“.
    • CREDENTIAL – credentials pro přístup na servery např. „SSH access“.
  5. Poté co template uložíme, se aktivují zbylé sekce. My si teď vytvoříme survey.
  6. Klikneme na tlačítko ADD SURVEY (najdeme v řadě tlačítek nad poli, které jsme právě vyplnili).
  7. Vyplníme pole:
    • PROMPT – např. „Jaký je tvůj oblíbený OS“.
    • ANSWER VARIABLE NAME – název proměnné, do které se odpověď má uložit např. „favorite_os“.
    • ANSWER TYPE – vybereme „Multiple Choice (single select)“.
    • MULTIPLE CHOICE OPTIONS – zadáme jednotlivé volby, co řádek, to jedna položka, např.
      • Linux
      • MacOS
      • Windows
    • DEFAULT ANSWER – jaká hodnota se má předvyplnit, např. „Linux“.
  8. Pokud máme vyplněno, klikneme na tlačítko +ADD.
  9. Vpravo se objeví náhled, pokud jsme spokojeni, dotazník uložíme.
  10. V menu klikneme na Templates a ikonou raketa naši job template pustíme.
  11. Zobrazí se nám dotazník, v něm klikneme na NEXT a pak na LAUNCH.
  12. AWX nás automaticky přepne do sekce Jobs, kde můžeme sledovat průběh právě spuštěné Job Template.

Ukázali jsme si, jak do AWX naimportovat stávající Ansible a jak AWX nastavit, abychom mohli pouštět playbooky z GUI. Některých témat jsme se záměrně nedotkli, abychom článek udrželi maximálně stručný. Nyní máme základ a můžeme začít zkoušet, co vše se ještě dá nastavit a jak to v našem prostředí vhodně použít.