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

Jak nastavit Ansible Automation Tool v CentOS 7

Dobrý den, vítejte u našeho článku o nástroji Ansible Automation Tool, který je podobný Chef or Puppet. Především se Ansible snadno instaluje, snadno konfiguruje a je snadno pochopitelný. V IT je velmi důležité udržovat vaše systémy a procesy velmi jednoduché. Ansible se používá pro správu konfigurace, která pomáhá při konfiguraci vašich webových a aplikačních serverů a usnadňuje verzování vašich souborů a můžete ji také použít ke správě různých konfigurací ve vašem vývojovém, pracovním a produkčním prostředí. Používá se také pro nasazení aplikací. Dokáže plně automatizovat nasazení vícevrstvých aplikací, které mohou zpracovávat více skupinových serverů a databází.

Ansible používá SSH pro připojení k serverům a spouštění nakonfigurovaných Tasks připojením ke klientům přes SSH, není třeba nastavovat žádného speciálního agenta. Vše, co potřebujete, je python a uživatel, který se může přihlásit a spouštět skripty, pak Ansible začne shromažďovat fakta o stroji, jako je nainstalovaný operační systém a balíčky a jaké další služby běží atd. Poté Ansible spustí playbooky ve formátu souboru YAML , playbooky jsou shluky příkazů, které mohou provádět více úkolů.

Předpoklady

V tomto tutoriálu nainstalujeme a nakonfigurujeme Ansible na CentOS 7 a budeme spravovat jeho dva uzly, abychom porozuměli jeho funkčnosti.

V našem testovacím prostředí budeme používat tři virtuální počítače Linux CentOS 7, jeden pro ovládání, kde je nainstalován server Ansible, a dva uzly, které bude tento řídicí stroj spravovat přes SSH. Pro úspěšnou instalaci Ansible se ujistěte, že máte Python 2.6 nebo 2.7 nainstalovaný na řídicím i klientském uzlu.

Pojďme se připojit k vašemu řídicímu serveru pomocí uživatele root nebo uživatele bez tohoto oprávnění s právy sudo, abyste mohli začít s Ansible.

Nastavení úložiště EPEL

Nejprve musíme povolit úložiště 'epel' pro CentOS 7 na řídicím serveru, protože balíček Ansible není k dispozici ve výchozích úložištích yum.

Chcete-li povolit úložiště EPEL na CentOS 7/RHEL 7, zadejte:

# yum install epel-release

Instalace Ansible

Nyní můžeme nainstalovat Ansible na CentOS 7 pomocí příkazu 'yum', který jej nainstaluje včetně jeho požadovaných závislostí výběrem klávesy 'y' a pokračujte podle obrázku.

# yum install ansible

Jakmile úspěšně nainstalujete Ansible, můžete ověřit a zkontrolovat jeho nainstalovanou verzi pomocí níže uvedeného příkazu.

# ansible --version

Autentizace SSH pomocí klíčů s uzly

Abychom mohli provést jakékoli nasazení/správu z 'localhost' do vzdáleného hostitele, musíme nejprve vygenerovat klíče na serveru Ansible a zkopírovat veřejný klíč do klientských uzlů. Spusťte níže uvedený příkaz na svém serveru Ansible a vygenerujte jeho veřejné a soukromé klíče.

# ssh-keygen -t rsa -b 4096

Po vygenerování klíče SSH jej nyní zkopírujte na vzdálený server pomocí následujícího příkazu k umístění klíčů SSH na vzdálené hostitele.

# ssh-copy-id root@node1_ip

Pokud používáte jakýkoli vlastní port ssh, uveďte jej pomocí parametru '-p' ve vašem příkazu. Budete požádáni o heslo vašeho klientského uzlu, jakmile zadáte správné heslo vašeho klientského uzlu, bude úspěšně autorizován.

# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
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
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Můžete také ručně přidat veřejný klíč rsa vašeho řídicího serveru do uzlů clinet. Chcete-li tak učinit, přihlaste se ke svému klientskému uzlu a postupujte podle níže uvedených kroků.

Nejprve zkopírujte klíč ze souboru '/root/.ssh/id_rsa.pub' a uložte jej na klientský uzel v domovském adresáři vašeho serveru nebo jiného uživatele, kterého chcete ověřit.

[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7

Uložte a ukončete soubor a budete mít přístup k oběma klientským uzlům z řídicího serveru, aniž byste požadovali heslo root.

[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90

[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.

[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.

Vytvoření inventáře vzdálených hostitelů

Po nastavení autentizace pomocí klíčů SSH mezi serverem Ansible a jeho klientskými uzly nyní nakonfigurujete tyto vzdálené hostitele na řídicím serveru Ansible úpravou souboru '/etc/ansible/hosts'. Tento soubor obsahuje inventář vzdálených hostitelů, ke kterým se Ansible potřebuje připojit přes SSH pro správu systémů.

Otevřete soubor pomocí libovolného editoru a nakonfigurujte jej.

[root@centos-7 ~]# vim /etc/ansible/hosts

Zde v konfiguračním souboru máme oba klientské uzly nakonfigurovány tak, aby používaly port '2178', pokud používáte výchozí port ssh, pak jednoduše zadáte IP adresu hostitele.

Po uložení souboru spusťte následující příkaz ansible s volbami '-m' pro modul pro ověření připojení ze serveru Ansible ke vzdáleným serverům.

# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73

Můžete také použít příkaz belo k pingu na všechny své nakonfigurované hostitele.

[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}

72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}

Provádění vzdálených příkazů

Ve výše uvedených příkladech jsme právě použili modul ping pro ping na vzdálené hostitele. K dispozici jsou různé moduly pro provádění příkazů na vzdálených hostitelích. Nyní použijeme modul 'command' s příkazem 'ansible' k získání informací o vzdáleném počítači, jako jsou informace o názvu hostitele systému, volné místo na disku a doba provozu, jak je znázorněno.

# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83

Podobně můžete spouštět mnoho příkazů shellu pomocí ansible na jediném klientském hostiteli i na skupině vašich podobných hostitelů, jako pokud máte nakonfigurovanou skupinu „webových serverů“ ve vašem souboru ansible hostitelského inventáře, spustíte příkaz takhle.

# ansible -m command -a "uptime" web-servers

Vytváření příruček v Ansible

Playbooks jsou skripty pro správu konfigurace Ansible používané ke správě konfigurací a nasazení na vzdálených počítačích. Příručky obsahují sadu zásad, které chcete, aby byly implementovány vaše vzdálené systémy.

Pojďme vytvořit váš první playbook s názvem souboru jako 'httpd.yml', poté nakonfigurujeme hostitele pro provozování webového serveru Apache. Zde si vyberete konfigurace, na které počítače ve vaší infrastruktuře chcete cílit a jaký vzdálený uživatel bude provádět úkoly, jak je uvedeno v konfiguračním souboru.

[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
  remote_user: root
  tasks:
  - name: Installing Latest version of Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: (Enable it on System Boot)
    service: name=httpd enabled=yes
    notify:
      - start apache
  handlers:
    - name: start apache
      service: name=httpd state=started

Uložte a zavřete soubor a poté vytvořte ukázkový html soubor, který bude umístěn ve výchozím kořenovém adresáři dokumentu vzdálených hostitelů.

[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible

Apache Web Server is installed by Ansible

Congratulations, Apache is managed through Ansible

Porozumění konfiguracím příručky

Protože jsme vytvořili naši první příručku, je nyní důležité pochopit, jak funguje. Všechny soubory YAML by měly začínat (tři pomlčky) '---', což označuje začátek dokumentu. Pak je řádek hostitelů seznamem jedné nebo více skupin nebo vzorů hostitelů oddělených dvojtečkami. Můžete zmínit vzdálený uživatelský účet spolu s hostitelem.

---
- hosts: 72.25.10.83
  remote_user: root

Pak máme sadu úkolů, kde každá hra obsahuje seznam úkolů, ty jsou prováděny v pořadí, jeden po druhém, proti všem strojům odpovídajícím hostitelskému vzoru, než se přejde k dalšímu úkolu.

tasks:
- name: Installing Latest version of Apache
  yum: pkg=httpd state=latest
- name: Copying the demo file
  template: src=/etc/ansible/index.html dest=/var/www/html
            owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
  service: name=httpd enabled=yes

Každý úkol by měl mít název, který je součástí výstupu. Toto je výstup pro nás, takže je hezké mít přiměřeně dobrý popis každého kroku úkolu. Takže náš první úkol nainstaluje nejnovější verzi apache, druhý zkopíruje demo html (/etc/ansible/index.html) do /var/www/html adresáře vzdálených hostitelů a třetí povolí automatické spuštění služby apache během spouštění systému.

Poté se na konci každého bloku úkolů v playbooku spouštějí akce „upozornění“ a budou spuštěny pouze jednou, i když je upozorní více různých úkolů.

notify:
  - start apache

Položka 'notify' obsahuje položku nazvanou „start apache“. Jedná se o odkaz na handler, který může provádět určité funkce, když je volán z úlohy. Níže definujeme obslužný program „start apache“.

handlers:
  - name: start apache
    service: name=httpd state=started

Obslužné rutiny jsou seznamy úloh, které se spouštějí pouze tehdy, když jim úloha sdělila, že v klientském systému došlo ke změnám. Protože máme handler, který spustí službu Apache po instalaci balíčku.

Spuštění příručky v Ansible

Po nastavení konfigurace playbooku můžete playbook spustit pomocí níže uvedeného příkazu.

# ansible-playbook -l 72.25.10.83 httpd.yml

Poté otevřete prohlížeč a přejděte na IP adresu vašeho vzdáleného hostitele uvedenou v ansible inventáři.

http://your_client_node_ip/

Takže pokud se vám zobrazí výše uvedená stránka, znamená to, že jste úspěšně nainstalovali apache s Ansible playbook. Stejným způsobem můžete vytvořit mnoho příruček pro instalaci složitých aplikací na více hostitelů.

Závěr

Ansible je docela zajímavý a velmi snadný, lehký. Snadno se dostanete do provozu za 5 minut. Úspěšně jste tedy nainstalovali Ansible na CentOS 7 a naučili se jeho základní použití k vytvoření jednoduché příručky pro automatizaci instalace Apache. Doufám, že vám to pomohlo při automatizaci vašich úkolů.


Cent OS
  1. Jak nainstalovat Ansible na CentOS 8 Linux

  2. Jak nainstalovat Ansible na CentOS 7

  3. Jak nainstalovat Ansible na CentOS 8

  1. Jak nastavit klíče SSH na CentOS 8

  2. Jak nastavit klíče SSH na CentOS 7

  3. Jak nastavit klíče SSH na CentOS 8

  1. Nainstalujte a používejte Ansible (Automation Tool) v CentOS 7

  2. Jak nainstalovat Ansible (Automation Tool) na Debian 10 (Buster)

  3. Jak nainstalovat Ansible (Automation Tool) na Rocky Linux 8