Úvod
Ansible je nástroj pro správu systému, který umožňuje správu více zařízení z jednoho centrálního zařízení. Srovnává se s nástroji jako Puppet nebo Chef, ale zatímco tyto balíčky vyžadují instalaci agentů na klientské systémy, Ansible funguje tak, že předává příkazy přes ssh, aniž by agenty vůbec potřeboval. Podíváme se na některé administrativní úkoly, které Ansible dokáže, abyste si mohli udělat lepší představu, zda by pro vás mohl být Ansible to pravé.
.
Předpoklady
- Ovládací zařízení se systémem Linux, BSD nebo OSX.
- Přístup ssh (firewall a přihlašovací údaje) ke klientským zařízením z vašeho ovládacího zařízení. Ansible preferuje použití ssh klíčů pro přístup ke klientským zařízením, ale ukážeme vám také možnosti pomocí uživatelského jména a hesla.
- Python 2.6 nebo 2.7 nainstalovaný na ovládacím zařízení.
.
Instalace
Ansible je k dispozici prostřednictvím správců balíčků z hlavních distribucí Linux/BSD/OSX. Je také k dispozici prostřednictvím instalačního programu Pythonu.
CentOS/Fedora:
sudo yum install ansible
Ubuntu (nejprve budete muset přidat Ansible PPA):
sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible
Arch Linux:
pacman -S ansible
FreeBSD:
sudo pkg install ansible
Správce balíčků Python, pip (uživatelé OSX mohou instalovat také pomocí pip):
sudo pip install ansible
Nastavení přístupu k Ansible Client
Hostitelé
Jednou z výhod používání Ansible je možnost spravovat více klientů z jednoho řídicího zařízení – ze stejného terminálového rozhraní. Můžete určit různé skupiny klientských serverů na základě funkce, umístění a/nebo OS vytvořením skupin v /etc/ansible/hosts
soubor.
[mailservers] smtp.orl-fl.example.com smtp.dal-tx.example.com [db_servers] db.orl-fl.example.com db.sfo-ca.example.com [orlando] smtp.orl-fl.example.com db.orl-fl.examle.com [nameservers] ns[01:12].example.com
Název uzavřený v hranatých závorkách []
definuje název skupiny a zahrnuje hostitele do seznamu, který následuje za ním. Můžete také uvést sekvenční rozsah ve vzoru názvu hostitele pomocí hranatých závorek a dvojtečky, jako v ns[01:12].example.com
výše.
Klient může existovat ve více skupinách. Název skupiny funguje jako alias pro seznam skupin, což usnadňuje orientaci na skupinu serverů, na kterou budete cílit svým konkrétním příkazem nebo příručkou Ansible.
.
Klíče ssh
Ansible funguje nejlépe, když váš řídicí server – ten, ze kterého budete spouštět příkazy Ansible – může používat klíče ssh pro přístup ke klientským hostitelům. Když spustíte příkaz Ansible bez dalších možností, ve výchozím nastavení se pokusí o přístup ke vzdáleným klientům pomocí klíčů ssh.
Tip:Pokud jste svůj soukromý klíč ssh zabezpečili pomocí přístupové fráze, může být nepohodlné a neefektivní zadávat tuto přístupovou frázi pokaždé, když ji potřebujete dešifrovat pro každou relaci ssh, kterou otevíráte pomocí Ansible. Pro zjednodušení tohoto procesu otevřete samostatný shell pomocí
ssh-agent
. Když importujete soukromý klíč do tohoto shellu, stačí zadat heslo pouze jednou, abyste přidali nezašifrovaný soukromý klíč.
ssh-agent bash
ssh-add ~/.ssh/id_rsa
První příkaz otevře nový bash shell.
ssh-add
příkaz vás vyzve k zadání přístupové fráze vašeho soukromého klíče a poté importuje soukromý klíč RSA do tohoto shellu. Pokud používáteid_ecdsa
, můžete samozřejmě nahradit příslušný soukromý klíč neboid_dsa
, například..
.
Přístup ssh (bez klíčů ssh)
Pokud máte klientské servery, které nemají nastavené klíče ssh, můžete stále používat Ansible se svým aktuálním uživatelem a požádat o heslo uživatele. Můžeme například chtít použít ping
modul, abychom ověřili, že všichni naši hostitelé jsou v db_servers
skupina reagují.
ansible db_servers -m ping --ask-pass
Tento příkaz nejprve vyzve k zadání hesla ssh aktuálního uživatele, které se použije pro přístup ke všem serverům v db_servers
před spuštěním modulu na každém klientovi.
Poznámka:Tento příkaz bude vyžadovat, aby váš uživatel existoval na každém klientovi, měl povolený přístup ssh a používal stejné heslo.
Také
ping
modul nesouvisí s ICMP pingem, který testuje síťové připojení. Jeho použití s ansible
ověří, že klientský server je přístupný s uvedeným uživatelem a že klientský server má verzi Pythonu, se kterou může Ansible pracovat.ping
modul by měl vrátitpong
odpověď po úspěšném dokončení..
.
Přístup ssh (s heslem)
Výchozí příkazy Ansible také předpokládají, že kromě použití kláves ssh používáte sudo bez hesla. Pokud máte klientské servery, které vyžadují heslo k získání přístupu k sudo, můžete použít další možnosti, jak se stát sudo a požádat o heslo sudo. Tedy například restartovat všechny servery v mailservers
skupiny pomocí uživatelského jména username
.
ansible mailservers -a "/sbin/reboot" -u username --become --ask-become-pass
--become
možnost označuje, že se uživatel stane privilegovaným uživatelem (sudo), a --ask-become-pass
volba vyzve Ansible, aby se před provedením příkazu zeptal na heslo, aby se stal tímto privilegovaným uživatelem.
--become
a--ask-become-pass
options jsou novější volby (od verze Ansible 1.9), které mají nahradit starší--sudo
a--ask-sudo-pass
(-K
) možnosti, resp. Tyto starší verze stále fungují. Nahrazenísudo
probecome
rozšiřuje rozsah těchto možností o integraci s nástroji, které používají jiné prostředky nežsudo
k povolení eskalace oprávnění.
.
Některé základní příkazy Ansible CLI
Zatímco skutečná síla Ansible spočívá v používání herních knih, můžete také spustit ansible
příkaz k provedení rychlé správy klientů v případech, kdy nemá smysl vytvářet playbook nebo kdy možná budete muset skupině klientských zařízení poslat pouze jeden příkaz.
ansible
příkaz se řídí vzorem ansible [group] OPTIONS
.
.
Spustit aktualizace Yum
Pokud byste například chtěli spouštět aktualizace yum na serverech ve vašich mailservers
skupiny, můžete tento úkol provést pomocí následujícího příkazu Ansible:
ansible mailservers -m yum -a "name=* state=latest" --become
Tento příkaz aktualizuje všechny servery v mailservers
skupina s yum
modul (-m
). -a
volba označuje konkrétní argument v uvozovkách – v tomto případě aktualizuje všechny nainstalované balíčky (pomocí *
zástupný znak) do posledního stavu.
.
Kopírovat soubor do klientů
Ansible můžete použít k distribuci souboru skupině klientských serverů.
ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh"
Tento příkaz vyvolá copy
modul a označuje src
(zdroj) a dest
(cíl) v uvozovkách pro argumenty. Výchozí umístění je výchozí na zařízení, na kterém je spuštěn tento příkaz Ansible, a může být absolutní nebo relativní. Cílové umístění je umístění na vzdáleném klientském zařízení a musí být vždy absolutní.
Můžete také použít copy
modul pro další upřesnění atributů souboru, přes který kopírujete.
ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh owner=foo group=bar mode=0755"
Tento příkaz navíc změní oprávnění vlastníka, skupiny a souboru souboru na každém klientovi v orlando
skupina.
.
Spustit příkaz Shell
Můžete také spustit skript na každém klientovi s shell
modul.
ansible orlando -m shell -a '/opt/scripts/foo.sh >> /home/foo/bar.txt'
Tento příkaz by provedl foo.sh
skript a přesměrujte jeho výstup do /home/foo/bar.txt
soubor. Všimněte si zde jednoduchých uvozovek. Budete potřebovat jednoduché uvozovky místo dvojitých, abyste mohli předat >>
operátora ke vzdálenému shellu.
.
Ansible Amuse-Bouche
Existuje mnoho dalších příkazů a modulů, které můžete použít, ale tato ukázka by měla poskytnout dobrý úvod do toho, jak užitečný může být Ansible, pokud spravujete byť jen malý počet serverů. Pokud se ocitnete v někdy nezáviděníhodné situaci, kdy musíte provádět opakující se úkoly napříč serverovou infrastrukturou, doufáme, že vám tyto příklady daly ochutnat, jak vám Ansible může pomoci pracovat chytřeji (a efektivněji!).
Nezapomeňte se s námi v budoucnu znovu podívat na další články o správě serveru a dalších věcech, které můžete dělat s Ansible. Atlantic.Net nabízí širokou sbírku flexibilních VPS hostingových řešení pro malý start-up až po dobře zavedenou podnikovou společnost.
.
.