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.