Ansible je bezplatný nástroj pro správu konfigurace a podporuje správu konfigurací systémů typu Unix a Microsoft Windows. Ansible spravuje uzly přes SSH nebo PowerShell a python, které se na ně mají nainstalovat.
Ansible pomáhá provádět konfiguraci, správu a nasazení softwaru na stovkách uzlů pomocí SSH, celou operaci lze provést jediným příkazem ansible
. V některých případech však může být nutné provést několik příkazů pro nasazení.
Tato příručka vám pomůže nainstalovat Ansible na CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
Architektura
Pokud použijete další nástroje pro správu konfigurace, jako je loutka, kuchař a CFEngine, serverový software je nainstalován na jednom počítači a klientské počítače jsou spravovány prostřednictvím agenta. Kdežto v Ansible jsou uzly spravovány řízením stroje (server Ansible) přes SSH, takže na počítačích s uzly nebude spuštěn žádný agent.
Ansible nasazuje moduly do uzlů přes SSH a tyto moduly jsou dočasně uloženy v uzlech a komunikují se serverem Ansible prostřednictvím protokolu JSON. Moduly nejsou nic jiného než skript napsaný v Pythonu, Perlu, Ruby , bash atd.
Systémové požadavky
Ovládání stroje
Ansible můžete spustit na jakémkoli počítači, který má nainstalovaný Python 2.6 nebo 2.7 (systém Windows není pro řídicí počítač podporován).
Podporuje Red Hat, Debian, CentOS, OS X, jakékoli BSD.
Klientské uzly
Klientské počítače by měly mít alespoň Python 2 (verze 2.6 nebo novější) nebo Python 3 (verze 3.5 nebo novější)
Pokud máte povolen SELinux na vzdálených uzlech, budete muset nainstalovat libselinux-python
balíček na uzlech před použitím jakýchkoli funkcí souvisejících s kopírováním/souborem/šablonou v Ansible
Životní prostředí
Název hostitele | IP adresa | OS | Účel |
---|---|---|---|
server.itzgeek.local | 192.168.1.10 | CentOS 7 / Ubuntu 18.04 / Debian 9 | Řízení stroje |
node1.itzgeek.local | 192.168.1.20 | CentOS 7 | Spravovaný uzel 1 |
node2.itzgeek.local | 192.168.1.30 | Ubuntu 18.04 | Spravovaný uzel 2 |
Instalovat Ansible na CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 a Debian 9
Nastavení řídicího stroje
Chcete-li nainstalovat Ansible, budeme muset Povolit úložiště EPEL na CentOS 7 / RHEL 7 .
### CentOS 7 ### yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ### RHEL 7 ### subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms ### Ubuntu 18.04 / Ubuntu 16.04 ### sudo apt-get update sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update ### Debian 9 ### sudo apt-get install dirmngr sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list sudo apt-get update
Nainstalujte Ansible.
### CentOS 7 / RHEL 7 & Fedora 28 ### yum install -y ansible ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get install -y ansible
Jakmile je Ansible nainstalován, ověřte verzi Ansible provedením níže uvedeného příkazu.
ansible --version
Výstup:
ansible 2.6.3 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Nastavení spravovaných uzlů
Klientské počítače by měly mít alespoň Python 2 (verze 2.6 nebo novější) nebo Python 3 (verze 3.5 nebo novější).
### CentOS 7 / RHEL 7 & Fedora ### yum install -y python ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get install -y python
SELinux (CentOS / RHEL / Fedora)
Pokud máte povolený SELinux na spravovaných uzlech, budete muset nainstalovat níže uvedený balíček na uzly před použitím funkcí souvisejících s kopírováním/souborem/šablonou v Ansible.
yum install -y libselinux-python
Ověření SSH
Jak již bylo řečeno, Ansible používá pro vzdálenou komunikaci nativní OpenSSH. Ansible podporuje obě možnosti bez hesla a heslo ověřování pro provádění příkazů na spravovaných uzlech.
Autentizace pomocí klíče SSH (Autentizace bez hesla)
Pokud jde o autentizaci ssh, ve výchozím nastavení používá k autentizaci se vzdáleným počítačem klíče ssh (autentizace bez hesla).
ČTĚTE :Jak nastavit přihlášení SSH bez hesla na CentOS 7 / RHEL 7
Ačkoli výše uvedený odkaz je pro CentOS, kroky v něm budou fungovat také pro Ubuntu / Debian.Jakmile nastavíte komunikaci bez hesla, ověřte ji.
ssh [email protected] ssh [email protected]
Nyní byste měli být schopni se přihlásit ke vzdálenému počítači bez hesla.
Ověření hesla
V případě potřeby lze také použít ověření heslem zadáním možnosti --ask-pass
. Tato možnost vyžaduje sshpass do zapnutého řídicího stroje.
### CentOS 7 / RHEL 7 & Fedora ### yum install -y sshpass ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo apt-get update sudo apt-get install -y sshpassZde jsem pro toto demo použil komunikaci bez hesla mezi řídícím uzlem ansible a spravovanými uzly.
Uživatelské jméno serveru Ansible =root
Uživatelské jméno spravovaného uzlu =raj
Vytvořit Ansible Inventory
Upravte (nebo vytvořte) /etc/ansible/hosts soubor. Tento soubor obsahuje inventář vzdálených hostitelů, ke kterým se Ansible připojí prostřednictvím SSH za účelem jejich správy.
### CentOS 7 / RHEL 7 & Fedora ### vi /etc/ansible/hosts ### Ubuntu 18.04 / 16.04 & Debian 9 ### sudo nano /etc/ansible/hosts
Vložte jeden nebo více vzdálených systémů a seskupte je. Zde jsem přidal oba stroje do skupiny demo-servers.
Skupiny se používají ke klasifikaci systémů pro konkrétní použití. Pokud neurčíte žádnou skupinu, budou se chovat jako neseskupení hostitelé.
[demo-servers] 192.168.1.20 192.168.1.30
První příkaz
Nyní je čas zkontrolovat všechny naše uzly pouhým pingem z řídicího stroje, k tomu použijeme příkaz ansible s možnostmi -m (načíst modul) a vše (všechny servery).
# all servers - Works when both server's and client's user name are same (Passwordless) ansible all -m ping # all servers - "raj" is managed node's user (Passwordless) ansible all -u raj -m ping OR # Only demo-servers group - "raj" is managed node's user (Passwordless) ansible demo-servers -u raj -m ping OR # If you use password authendication ansible -m ping all -u raj --ask-pass
Výstup:
192.168.1.20 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.30 | SUCCESS => { "changed": false, "ping": "pong" }
Ve výše uvedeném příkladu jsme použili modul ping s ansible příkaz ping pro všechny nebo skupinu vzdálených hostitelů.
Stejně tak můžeme použít různé moduly s ansible dostupné moduly naleznete zde .
Zde jsem pro toto demo použil komunikaci bez hesla mezi řídícím uzlem ansible a spravovanými uzly.Uživatelské jméno serveru Ansible =root
Uživatelské jméno spravovaného uzlu =raj
Všechny mé příkazy ansible tedy budou mít
-u raj
Vzdálené spouštění příkazů
Tentokrát použijeme příkaz modul s ansible příkaz k získání informací o vzdáleném počítači.
Spustíme například hostname příkaz s příkaz modul pro získání názvu hostitele vzdálených hostitelů najednou.
ansible -m command -a "hostname" -u raj demo-servers
Výstup:
192.168.1.30 | SUCCESS | rc=0 >> node2.itzgeek.local 192.168.1.20 | SUCCESS | rc=0 >> node1.itzgeek.local
Podrobnosti o oddílu získáme příkazem níže.
ansible -m command -a "df -hT" -u raj demo-servers
Výstup:
192.168.1.30 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on udev devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 395M 1.5M 393M 1% /run /dev/sda4 ext4 94G 4.9G 84G 6% / tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/loop0 squashfs 87M 87M 0 100% /snap/core/4486 /dev/loop3 squashfs 3.4M 3.4M 0 100% /snap/gnome-system-monitor/36 /dev/loop1 squashfs 1.7M 1.7M 0 100% /snap/gnome-calculator/154 /dev/loop2 squashfs 141M 141M 0 100% /snap/gnome-3-26-1604/59 /dev/loop4 squashfs 21M 21M 0 100% /snap/gnome-logs/25 /dev/loop5 squashfs 88M 88M 0 100% /snap/core/5328 /dev/loop6 squashfs 13M 13M 0 100% /snap/gnome-characters/69 /dev/sda1 vfat 93M 4.6M 88M 5% /boot/efi tmpfs tmpfs 395M 28K 395M 1% /run/user/120 tmpfs tmpfs 395M 36K 395M 1% /run/user/1000 /dev/loop7 squashfs 15M 15M 0 100% /snap/gnome-logs/40 192.168.1.20 | SUCCESS | rc=0 >> Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 50G 1.1G 49G 3% / devtmpfs devtmpfs 1.4G 0 1.4G 0% /dev tmpfs tmpfs 1.5G 0 1.5G 0% /dev/shm tmpfs tmpfs 1.5G 8.5M 1.4G 1% /run tmpfs tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 188M 827M 19% /boot /dev/mapper/centos-home xfs 46G 33M 46G 1% /home tmpfs tmpfs 287M 0 287M 0% /run/user/1000 tmpfs tmpfs 287M 0 287M 0% /run/user/0
Chcete-li zkontrolovat dostupnost a podrobnosti o zatížení na obou uzlech.
ansible -m command -a "uptime" -u raj demo-servers
Výstup:
192.168.1.30 | SUCCESS | rc=0 >> 16:36:45 up 56 min, 3 users, load average: 0.00, 0.00, 0.00 192.168.1.20 | SUCCESS | rc=0 >> 16:36:45 up 1:09, 2 users, load average: 0.05, 0.04, 0.05
Můžete také zkontrolovat obsah konkrétního souboru.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers
Výstup:
192.168.1.30 | SUCCESS | rc=0 >> # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run "systemd-resolve --status" to see details about the uplink DNS servers # currently in use. # # Third party programs must not access this file directly, but only through the # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way, # replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 127.0.0.53 192.168.1.20 | SUCCESS | rc=0 >> # Generated by NetworkManager search itzgeek.local nameserver 8.8.8.8 nameserver 192.168.1.1
Výstup můžete také uložit do libovolného souboru přesměrováním jako níže.
ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file cat /tmp/ouput_file
Tímto způsobem můžete spouštět mnoho příkazů shellu pomocí ansible.
Nyní jste úspěšně nainstalovali Ansible na CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .
ČTĚTE VÍCE :Jak vytvořit Ansible Playbooks pro IT automatizaci
To je vše.