GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat a nakonfigurovat Ansible na CentOS 8 / RHEL 8

Ansible je nástroj pro správu a správu konfigurace softwaru s otevřeným zdrojovým kódem pro operační systémy Unix a Microsoft Windows.

Na rozdíl od Puppet, Chef a CFEngine je serverový software nainstalován na jednom počítači a klientské stroje jsou spravovány prostřednictvím softwaru agenta. V Ansible jsou uzly spravovány řízením uzlu (server Ansible) přes SSH, takže na počítačích se spravovanými uzly (klientské servery) nebude spuštěn žádný software agenta.

Ansible může provádět nasazení, správu konfigurace softwaru na 100s uzlech pomocí SSH, celá operace se normálně provádí jedním 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 8 / RHEL 8.

Životní prostředí

Název hostitele IP adresa OS Účel
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 Řízení stroje
node1.itzgeek.local 192.168.0.20 CentOS 8 Spravovaný uzel 1
node2.itzgeek.local 192.168.0.30 CentOS 7 Spravovaný uzel 2

Nainstalujte Ansible na CentOS 8 / RHEL 8

Nastavení řídicího uzlu

Chcete-li nainstalovat Ansible, budeme muset povolit úložiště EPEL a Ansible na CentOS 8 a RHEL 8.

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

Nainstalujte Ansible pomocí příkazu yum.

yum 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.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Nastavení spravovaného uzlu

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 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

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.

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

Ověření SSH

Jak již bylo řečeno, Ansible používá pro vzdálenou komunikaci nativní OpenSSH. Ansible podporuje jak ověřování bez hesla, tak ověřování heslem pro provádění příkazů na spravovaných uzlech.

Zde jsem pro toto demo použil komunikaci bez hesla mezi ansible řídícím uzlem (root) a spravovanými uzly (root). Ukážu vám však, jak používat Ansible s ověřováním heslem.

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 8 / RHEL 8

ČTĚTE :Jak nastavit přihlášení SSH bez hesla na CentOS 7 / RHEL 7

Jak víte, zřizování softwaru nebo změny konfigurace, které provádíte na uzlech, vyžadují oprávnění root nebo ekvivalentní oprávnění root (sudo). Pro snazší nastavení tedy nastavte komunikaci mezi uživatelem root serveru Ansible a uživatelem root uzlů bez hesla.

Ověření hesla

V případě potřeby lze také použít ověřování heslem zadáním možnosti –ask-pass. Tato možnost vyžaduje sshpass k řídicímu počítači.

yum install -y sshpass 

Vytvořit Ansible Inventory

Soubor /etc/ansible/hosts obsahuje inventář vzdálených hostitelů, ke kterým se Ansible připojí prostřednictvím SSH/Winrm (Windows) za účelem jejich správy. V tuto chvíli pouze uvidíme, jak spravovat konfigurace vzdáleného uzlu Linuxu.

Upravte soubor inventáře.

vi /etc/ansible/hosts

Vložte do něj jednu nebo více IP adres nebo názvu hostitele vzdáleného systému. Servery můžete seskupit pomocí [GROUP_NAME]. Zde jsem přidal oba stroje do skupiny demoservers.

Skupiny se používají ke klasifikaci systémů pro konkrétní použití. Pokud neurčíte žádnou skupinu, budou se chovat jako neseskupení hostitelé.

[demoservers]
192.168.0.20
192.168.0.30

Zkontrolujte Ansible Connectivity

Zkontrolujme konektivitu uzlů pomocí pingu (modulu) z řídícího stroje. K tomu použijeme příkaz ansible s volbami -m (načíst modul) a all (všechny servery) nebo demoservery (skupina uzlů).

Tento modul ping se často používá k řešení problémů s připojením Ansible.
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

ansible -m ping all -u raj --ask-pass

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

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 viděli, jak použít modul ping s příkazem ansible k odeslání příkazu ping všem nebo skupinám vzdálených hostitelů s autentizací bez hesla a heslem.

Stejně tak můžeme používat různé moduly s příkazem ansible. Dostupné moduly naleznete zde.

Provést příkaz na uzlech

Tentokrát použijeme příkazový modul s příkazem ansible k získání informací o vzdáleném počítači.

Níže uvedené příkazy jsou napsány za předpokladu, že máte komunikaci bez hesla mezi řídicím uzlem a spravovanými uzly. K provádění příkazů používám skupinu demoservers.

Zkontrolujte název hostitele

V našem prvním příkladu provedeme příkaz hostname s příkazovým modulem, abychom najednou získali název hostitele vzdálených uzlů.

ansible -m command -a "hostname" demoservers

Výstup:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Zkontrolujte dobu provozu

Chcete-li zkontrolovat dobu provozu uzlů.

 ansible -m command -a "uptime" demoservers

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

Čtení vzdálených souborů

Můžete také zobrazit obsah konkrétního souboru.

ansible -m command -a "cat /etc/hosts" demoservers

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

Přesměrování výstupu souboru

Můžete také uložit výstup (na serveru Ansible) do libovolného souboru pomocí přesměrování.

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

Proveďte změny konfigurace v uzlu

Modul lineinfile můžeme použít k úpravě souborů na vzdálených uzlech. Například pro přidání dalších jmenných serverů můžeme použít níže uvedený příkaz.

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

Změny můžete ověřit pomocí níže uvedeného příkazu.

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

Závěr

To je vše. Nyní jste úspěšně nainstalovali Ansible na CentOS 8 / RHEL 8. Můžete pokračovat ve vytváření příruček Ansible pro automatizaci vašich úkolů.


Cent OS
  1. Jak nainstalovat Ansible na CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

  2. Jak nainstalovat Ansible na CentOS 7

  3. CentOS / RHEL 7 :Jak nainstalovat a nakonfigurovat telnet

  1. Jak nainstalovat phpMyAdmin na RHEL 8 / CentOS 8

  2. Jak nainstalovat Ansible na CentOS 8

  3. Jak nainstalovat a nakonfigurovat Sambu v CentOS / RHEL

  1. Jak nainstalovat P7Zip na RHEL 8 / CentOS 8

  2. Jak nainstalovat ntfs-3g na RHEL 8 / CentOS 8

  3. Jak nainstalovat PHP-mbstring na RHEL 8 / CentOS 8