Vyhledávání na webu

Jak konfigurovat Ansible Managed Nodes a spouštět ad-hoc příkazy – část 3


V předchozích dvou článcích této řady Ansible jsme vysvětlili základní součásti Ansible a nastavení Ansible Control Node. V této části 3 si ukážeme, jak můžete nakonfigurovat spravované uzly Ansible pro spouštění ad-hoc příkazů na vzdálených hostitelích.

Nastavte autentizaci SSH bez hesla pro spravované uzly Ansible

Jako rekapitulaci našeho posledního tématu, správa vzdálených hostitelů pomocí Ansible vyžaduje nastavení autentizace SSH bez hesla mezi řídicím uzlem Ansible a spravovanými hostiteli. To zahrnuje vygenerování páru klíčů (pár klíčů veřejný a soukromý SSH) na uzlu Ansible Control a zkopírování veřejného klíče na všechny vzdálené hostitele. Bude to zásadní krok vpřed a značně vám to usnadní práci.

Nakonfigurujte eskalaci oprávnění na spravovaných uzlech

Když se přihlásíte jako běžný uživatel, můžete být požádáni o provedení určitých úloh na spravovaných uzlech, které vyžadují zvýšená oprávnění nebo oprávnění root. Mezi tyto úkoly patří správa balíčků, přidávání nových uživatelů a skupin a úpravy systémových konfigurací, abychom zmínili jen některé. Abyste toho dosáhli, musíte v playbooku vyvolat určité direktivy, abyste spustili úlohy jako privilegovaný uživatel na vzdálených hostitelích.

stát se

Ansible vám umožňuje 'stát se' jiným uživatelem na spravovaném uzlu, který se liší od toho, který je aktuálně přihlášen. Direktiva become:yes zvyšuje vaše oprávnění a umožňuje vám provádět úkoly, které vyžadují oprávnění root, jako je instalace a aktualizace balíčků a restartování systému.

Zvažte příručku httpd.yml, která nainstaluje a spustí webový server Apache, jak je znázorněno:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started

Direktiva become: yes vám umožňuje spouštět příkazy jako uživatel root na vzdáleném hostiteli.

stát se_uživatelem

Další direktivou, kterou můžete použít, abyste se stali dalším uživatelem, je become_user. To vám umožňuje přepnout na uživatele sudo na vzdáleném hostiteli po přihlášení a ne na uživatele, pod kterým se přihlašujete.

Chcete-li například spustit příkaz jako uživatel tecmint na dálkovém ovládání, použijte direktivu podle obrázku.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

stát se_metodou

Tato direktiva přepíše výchozí metodu nastavenou v souboru ansible.cfg, která je obvykle nastavena na sudo.

stát se_vlajkami

Používají se na úrovni hry nebo úkolu, například když potřebujete přepnout na uživatele, když je shell nastaven na nologin.

Například,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Možnosti příkazového řádku v Eskalace oprávnění

Podívejme se na některé možnosti příkazového řádku, které můžete použít ke zvýšení svých oprávnění při spouštění příkazů:

  • --ask-become-pass, -K – Toto vás vyzve k zadání hesla uživatele sudo na vzdáleném systému, ke kterému se pokoušíte připojit.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – To vám umožní spustit úlohu jako uživatel root bez výzvy k zadání hesla.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Umožňuje spouštět úlohy jako jiný uživatel.
ansible-playbook myplaybook.yml --become-user=tecmint

Ověřte pracovní konfiguraci pomocí Ad-Hoc Ansible příkazů

Někdy možná budete chtít provádět rychlé a jednoduché úkoly na vzdálených hostitelích nebo serverech v Ansible, aniž byste museli nutně vytvářet playbook. V takovém případě byste museli spustit příkaz ad-hoc.

Co je to adhoc příkaz?

Ansible příkaz ad-hoc je jednořádkový příkaz, který vám pomůže provádět jednoduché úkoly jednoduchým, ale účinným způsobem, aniž byste museli vytvářet příručky. Mezi takové úkoly patří kopírování souborů mezi hostiteli, restartování serverů, přidávání a odebírání uživatelů a instalace jednoho balíčku.

V tomto tutoriálu prozkoumáme různé aplikace příkazů Ansible Ad-Hoc. Pro ukázku použijeme soubor inventáře níže.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Základní použití adhoc příkazů

Nejzákladnějším použitím příkazů Ansible-Adhoc je ping na hostitele nebo skupinu hostitelů.

ansible -m ping all

Ve výše uvedeném příkazu je parametr -m volbou modulu. Ping je příkaz adhoc a druhý parametr představuje všechny hostitele v souboru inventáře. Výstup příkazu je zobrazen níže:

Chcete-li ping na určitou skupinu hostitelů, nahraďte parametr 'all' názvem skupiny. V níže uvedeném příkladu testujeme konektivitu s hostiteli ve skupině webservers.

ansible -m ping webservers

Navíc můžete použít atribut -a k zadání běžných příkazů Linuxu ve dvojitých uvozovkách. Chcete-li například zkontrolovat dobu provozuschopnosti vzdálených systémů, spusťte:

ansible -a "uptime" all

Chcete-li zkontrolovat využití disku vzdálených hostitelů, spusťte.

ansible -a "df -Th" all

Existují stovky a stovky modulů, které můžete použít s příkazem Adhoc. Chcete-li zobrazit celý seznam modulů s jejich popisy, spusťte níže uvedený příkaz.

ansible-doc -l

Chcete-li zobrazit podrobné informace o konkrétním modulu, spusťte příkaz.

ansible-doc module_name

Chcete-li například vyhledat další podrobnosti o modulu yum, spusťte:

ansible-doc yum

Správa balíčků/služeb pomocí Ansible

Příkazy Ansible adhoc lze použít pro instalaci a odstranění balíčků pomocí správců balíčků yum a apt.

Chcete-li nainstalovat webový server Apache na hostitele CentOS 7 ve skupině webservers v souboru inventáře, spusťte příkaz:

ansible webservers -m yum -a "name=httpd  state=present"

Chcete-li ověřit instalaci webového serveru Apache, přihlaste se ke vzdálenému klientovi a spusťte jej.

rpm -qa | grep httpd

Chcete-li Apache odinstalovat, jednoduše změňte stav z přítomný na nepřítomný.

ansible webservers -m yum -a "name=httpd  state=absent"

Znovu pro potvrzení odstranění httpd spusťte.

rpm -qa | grep httpd

Jak bylo zjištěno, balíčky webového serveru Apache byly vyčištěny.

Vytváření uživatelů a skupin pomocí Ansible

Při vytváření uživatelů se hodí modul ‚uživatel‘. Chcete-li vytvořit nového uživatele james s heslem redhat na klientském systému database_server, zadejte příkaz.

ansible database_server -m user -a "name=james password=redhat"

Chcete-li potvrdit vytvoření nového uživatele, spusťte příkaz:

ansible database_servers -a "id james"

Chcete-li uživatele odebrat, spusťte příkaz:

ansible database_servers -m user -a "name=james state=absent"

Eskalace privilegií

Pokud používáte Ansible jako běžný uživatel, Ansible poskytuje eskalaci oprávnění ve vzdálených hostitelích pomocí volby --become pro získání oprávnění root a -k pro výzvu k zadání hesla.

Chcete-li například spustit příkaz Ansible adhoc 'netstat -pnltu' s privilegovanou volbou –-become a volbou -K, která zobrazí výzvu k zadání heslo uživatele root pro spuštění příkazu.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Chcete-li se stát jiným uživatelem než root, použijte atribut --become-user.

Například spuštění „df -Th“ jako uživatel tecmint na vzdálených hostitelích a výzva k zadání hesla:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Shromažďování faktů o hostitelských systémech

Fakta odkazují na podrobné informace o systému. To zahrnuje informace o IP adrese, architektuře systému, paměti a CPU, abychom zmínili alespoň některé.

Chcete-li získat informace o vzdálených hostitelích, spusťte příkaz:

ansible all -m setup 

Přenos souborů/Kopírování souborů

Ansible používá modul copy k bezpečnému kopírování souborů z ovládacího prvku Ansible na více vzdálených hostitelů.

Níže je uveden příklad operace kopírování:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Příkaz zkopíruje soubor /var/log/secure v uzlu Ansible Control na vzdálené hostitele ve skupině webservers v cíli /tmp.

Ke změně oprávnění a vlastnictví souborů můžete použít modul souborů.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Kromě toho můžete připojit argumenty vlastníka a skupiny, jak je znázorněno:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Můžete také vytvořit adresáře podobným způsobem jako mkdir -p, jak je znázorněno.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Například,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

Závěr

V tomto článku osvětlíme, jak můžete nakonfigurovat spravované uzly pro spouštění ad-hoc příkazů Ansible pro správu vzdálených hostitelů. Doufáme, že to pro vás bylo užitečné. Zkuste to a dejte nám vědět, jak to dopadlo.