GNU/Linux >> Znalost Linux >  >> Linux

Jak na to:Začínáme s Ansible

Ú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áte id_ecdsa, můžete samozřejmě nahradit příslušný soukromý klíč nebo id_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átit pong 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 pro become 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.
.
.


Linux
  1. Začínáme se Zsh

  2. Začínáme s PostgreSQL na Linuxu

  3. Jak začít s Juju?

  1. Začínáme s GnuCash

  2. Začínáme s ls

  3. Začínáme s SSH v Linuxu

  1. Začínáme s Etcher.io

  2. Začínáme s regulárními výrazy

  3. Začínáme s Tmux