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

Jak nainstalovat Ansible na CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

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 sshpass
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

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.


Cent OS
  1. Jak nainstalovat Apache Hadoop na CentOS 7, Ubuntu 18.04 a Debian 9

  2. Jak nainstalovat Redis na CentOS 7 / RHEL 7 &Ubuntu 18.04 / Ubuntu 16.04

  3. Jak nainstalovat SSHFS na CentOS/RHEL/Ubuntu

  1. Jak nainstalovat Ansible na Debian 11

  2. Jak nainstalovat Ansible na CentOS 7

  3. Jak nainstalovat Ansible na CentOS 8

  1. Jak nainstalovat phpMyAdmin na RHEL 8 / CentOS 8

  2. Jak nainstalovat P7Zip na RHEL 8 / CentOS 8

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