Tento návod popisuje krok za krokem instalaci a konfiguraci Ansible na Redhat Enterprise Linux 8.
Ansible je přední systém správy konfigurace s otevřeným zdrojovým kódem. Usnadňuje administrátorům a provozním týmům ovládat tisíce serverů z centrálního počítače, aniž by na ně instalovali agenty.
V tomto tutoriálu se naučíte:
- Přehled Ansible
- Nainstalujte a nakonfigurujte Python
- Nastavte SSH bez hesla
- Nainstalujte Ansible
- Testování a správa Ansible
Požadavky na software a použité konvence
Kategorie | Požadavky, konvence nebo použitá verze softwaru |
---|---|
Systém | Red Hat Enterprise Linux 8 |
Software | Python3, Ansible |
Jiné | Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz. |
Konvence | # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel |
Přehled Ansible
Ansible je radikálně jednoduchý stroj pro automatizaci IT, který automatizuje poskytování cloudu, správu konfigurace, nasazení aplikací, orchestraci v rámci služeb a mnoho dalších potřeb IT.
Ansible, navržený pro vícevrstvé nasazení již od prvního dne, modeluje vaši IT infrastrukturu tím, že popisuje, jak jsou všechny vaše systémy vzájemně propojeny, místo aby pouze spravoval jeden systém najednou.
Nepoužívá žádné agenty a žádnou další vlastní bezpečnostní infrastrukturu, takže je snadné jej nasadit – a co je nejdůležitější, používá velmi jednoduchý jazyk (YAML, ve formě Ansible Playbooks), který vám umožní popsat vaše automatizační úlohy způsobem, který se blíží obyčejná angličtina. Ansible funguje tak, že se připojí k vašim uzlům a vytlačí do nich malé programy, nazývané „moduly Ansible“.
Tyto programy jsou napsány jako zdrojové modely požadovaného stavu systému. Ansible pak tyto moduly spustí (ve výchozím nastavení přes SSH) a po dokončení je odstraní.
Vaše knihovna modulů může být umístěna na libovolném počítači a nejsou vyžadovány žádné servery, démony ani databáze. Obvykle budete pracovat se svým oblíbeným terminálovým programem, textovým editorem a pravděpodobně systémem správy verzí, abyste mohli sledovat změny svého obsahu.
Nainstalujte a nakonfigurujte Python
Výchozí verze Pythonu v RHEL 8 je Python 3.6. Ale Python 2 zůstává dostupný v RHEL 8. Pokud z nějakého důvodu Python 3.6 chybí v instalaci Red Hat Enterprise Linux 8, budete jej muset nainstalovat ručně.
Python 3.6 lze nainstalovat na RHEL 8 spuštěním příkazu níže na vašem terminálu. Python musí být nainstalován jak na Ansible Server, tak na všech hostitelích/klientech, ke kterým se připojí.
# yum install python3 Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04. Dependencies resolved. ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: python36 x86_64 3.6.6-17.el8+2102+a4bbd900 rhel-8-for-x86_64-appstream-beta-rpms 22 k Enabling module streams: python36 3.6 Transaction Summary ====================================================================================================================================================== Install 1 Package Total download size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm 6.0 kB/s | 22 kB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.0 kB/s | 22 kB 00:03 warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 3.2 kB/s | 3.3 kB 00:01 Importing GPG key 0xF21541EB: Userid : "Red Hat, Inc. (beta key 2) <[email protected]>" Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta Is this ok [y/N]: y ... Installed: python36-3.6.6-17.el8+2102+a4bbd900.x86_64 Complete!
Abyste mohli používat Python 3, stačí napsat python3
v terminálu.
Měli byste si uvědomit, že pro použití Pythonu 3 je příkaz python3 a python2 pro Python 2. Co když jsou vaše aplikace nakonfigurovány tak, aby odkazovaly na python, který není dostupný v celém systému. Zobrazí se níže uvedená chyba bash.
# python -bash: python: command not found
Pomocí mechanismu alternativ můžete povolit příkaz python bez verze v celém systému a nastavit jej na konkrétní verzi. Chcete-li nastavit Python 3 jako výchozí, spusťte následující příkaz.
# alternatives --set python /usr/bin/python3
Spuštění pythonu -V by mělo zobrazit nakonfigurovanou výchozí verzi Pythonu:
#python -V Python 3.6.6
nebo spuštěním Pythonu na konzoli:
# python Python 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
Nastavit SSH bez hesla
Vytvořte uživatele ansible
na všech hostitelích:
# useradd ansible ; echo "" | passwd --stdin ansible
Proveďte nezbytný záznam v souboru sudoers /etc/sudoers
pro přístupného uživatele pro přístup sudo bez hesla:
ansible ALL=(ALL) NOPASSWD: ALL
Nyní vygenerujte klíč SSH na serveru Ansible:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server The key's randomart image is: +---[RSA 2048]----+ | | | . | | o E o | | + * + o| | . S * o * | | . += + +| | ==o@ +.| | OBoO+=| | +o++*BB| +----[SHA256]-----+
Zkopírujte jej na vzdálené servery jako uživatel:
$ ssh-copy-id ansible@rhel8-ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys ansible@rhel8-ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@rhel8-ansible-client'" and check to make sure that only the key(s) you wanted were added.
Nainstalovat Ansible
Jakmile je Python nainstalován, pokračujte v instalaci Pip, což je správce balíčků Pythonu, který použijeme k instalaci Ansible:
# yum -y install python3-pip Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04. Package python3-pip-9.0.3-4.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
Jakmile budeme mít pip3
nainstalovaný, použijte jej k instalaci Ansible do systému Ansible Management jako uživatel ansible.
$ pip3 install ansible --user
Ansible nainstalovaný můžete vidět pomocí následujícího příkazu:
$ ansible --version ansible 2.7.6 config file = None configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible executable location = /home/ansible/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
Testování a správa
Vytvořte soubor inventáře Ansible, výchozí je /etc/ansible/hosts
ale můžete zkopírovat soubor hosts do domovského adresáře ansible uživatele. Můžete také vytvořit skupinu vzdálených hostitelů, jak je uvedeno níže v souboru hostitelů.
[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110
K testování Ansible můžete použít modul ping a po úspěšném spuštění uvidíte níže uvedený výstup.
$ ansible -i hosts 192.168.1.109 -m ping 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" }
Volba -i se používá k poskytnutí cesty k souboru inventáře. Měli byste získat stejný výstup pro název skupiny „app“.
$ ansible -i hosts app -m ping 192.168.1.108 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.110 | SUCCESS => { "changed": false, "ping": "pong" }
Závěr
Jednoduchost a schopnost Ansible snížit složitost ostatních nástrojů z něj udělaly spolehlivého žadatele pro vaše prostředí. Jeho hlavním zájmem je bezpečnost a spolehlivost. Pro přenos používá OpenSSH a jazyk je navržen s ohledem na auditovatelnost i pro ty, kteří s programem neznají. Ansible je dostatečně vhodný pro správu jak malých nastavení s několika instancemi, tak i podnikových prostředí.