Ansible Tutorial pro začátečníky: Příručka, příkazy a příklad
Co je Ansible?
Možná je open source nástroj pro automatizaci a orchestraci pro poskytování softwaru, správu konfigurace a nasazení softwaru. Ansible může snadno spouštět a konfigurovat systémy podobné Unixu Windows systémy poskytující infrastrukturu jako kód. Obsahuje vlastní deklarativní programovací jazyk pro konfiguraci a správu systému.
Ansible je oblíbený pro svou jednoduchost instalace, snadné použití v oblasti připojení ke klientům, nedostatek agenta pro klienty Ansible a množství dovedností. Funguje připojením přes SSH ke klientům, takže nepotřebuje speciálního agenta na straně klienta a odesláním modulů klientům se moduly spouštějí lokálně na straně klienta a výstup se posílá zpět na server Ansible.
Protože používá SSH, může se velmi snadno připojit ke klientům pomocí SSH-Keys, což celý proces zjednodušuje. Podrobnosti klienta, jako jsou názvy hostitelů nebo IP adresy a porty SSH, jsou uloženy v souborech nazývaných inventární soubory. Jakmile vytvoříte soubor inventáře a naplníte jej, může jej ansible použít.
Proč používat Ansible?
Zde jsou některé důležité výhody/výhody používání Ansible
- Jednou z nejvýznamnějších výhod Ansible je, že jej může používat každý zdarma.
- K instalaci a používání Ansible nepotřebuje žádné speciální schopnosti správce systému a oficiální dokumentace je velmi obsáhlá.
- Jeho modularita týkající se zásuvných modulů, modulů, inventářů a playbooků činí z Ansible perfektního společníka pro organizaci velkých prostředí.
- Ansible je velmi lehký a konzistentní a neexistují žádná omezení týkající se operačního systému nebo základního hardwaru.
- Je také velmi bezpečný díky svým schopnostem bez agenta a díky použití bezpečnostních funkcí OpenSSH.
- Další výhodou, která podporuje přijetí Ansible, je jeho plynulá křivka učení určená komplexní dokumentací a snadnou strukturou a konfigurací.
Historie Ansible
Zde jsou důležité orientační body z historie ansible:
- V únoru 2012 začal projekt Ansible. Poprvé jej vyvinul Michael DeHaan, tvůrce Cobbler a Func, Fedora Unified Network Controller.
- Původně se jmenovala AnsibleWorks Inc, společnost financující nástroj ansible získala v roce 2015 RedHat a později spolu s RedHat přešla pod záštitu IBM.
- V současnosti je Ansible součástí distribucí jako Fedora Linux, RHEL, Centos a Oracle Linux.
Důležité termíny používané v Ansible
-
Ansible server
Počítač, na kterém je nainstalován Ansible a ze kterého budou spouštěny všechny úlohy a playbooky
-
Modul
Modul je v podstatě příkaz nebo sada podobných příkazů Ansible, které mají být provedeny na straně klienta
-
Úkol
Úloha je část, která se skládá z jediného postupu, který má být dokončen
-
Role
Způsob organizace úkolů a souvisejících souborů, které budou později vyvolány v playbooku
-
Skutečnost
Informace načtené z klientského systému z globálních proměnných pomocí operace shromáždit fakta
-
Inventář
Soubor obsahující data o dostupných klientských serverech. Definováno v pozdějších příkladech jako soubor hostitelů
-
Hrát
Provedení playbooku
-
Psovod
Úloha, která je volána pouze v případě, že je přítomen oznamovatel
-
Oznamovatel
Sekce přiřazená úloze, která volá handler, pokud se výstup změní
-
štítek
Název nastavený na úkol, který lze později použít k zadání pouze tohoto konkrétního úkolu nebo skupiny úkolů.
Možnost instalace v Linuxu
Jakmile porovnáte a zvážíte své možnosti a rozhodnete se pro Ansible, dalším krokem je nainstalovat ji do vašeho systému. Projdeme si jednotlivé kroky instalace Linux distribuce, nejoblíbenější, v dalším malém tutoriálu.
Nainstalujte Ansible na systémy Centos/RedHat
Krok 1) Nainstalujte EPEL repo
[root@ansible-server ~]# sudo yum install epel-release
Krok 2) Nainstalujte balíček ansible
[root@ansible-server ~]# sudo yum install -y ansible
Nainstalujte ansible na Ubuntu/systémy Debian
Krok 1) Proveďte aktualizaci balíčků
$ sudo apt update
Krok 2) Nainstalujte balíček software-properties-common
$ sudo apt install software-properties-common
Krok 3) Nainstalujte archiv osobních balíčků ansible
$ sudo apt-add-repository ppa:ansible/ansible
Krok 4) Nainstalujte ansible
$ sudo apt update $ sudo apt install ansible
Povolené ad-hoc příkazy
Jedním z nejjednodušších způsobů použití Ansible je použití ad-hoc příkazů. Ty lze použít, když chcete zadat nějaké příkazy na serveru nebo na více serverech. Příkazy ad-hoc se neukládají pro budoucí použití, ale představují rychlý způsob interakce s požadovanými servery.
Pro tento výukový program Ansible bude nakonfigurován jednoduchý soubor hostitelů se dvěma servery, který bude obsahovat hostitel1 a hostitel2.
Můžete se ujistit, že hostitelé jsou přístupní ze serveru ansible zadáním příkazu ping na všech hostitelích.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping host1 | SUCCESS => { "changed": false, "ping": "pong" } host2 | SUCCESS => { "changed": false, "ping": "pong" }
Vysvětlení:
- Stav příkazu, v tomto případě SUCCESS
- Hostitel, na kterém byl příkaz spuštěn
- Příkaz zadaný prostřednictvím parametru -m, v tomto případě ping
- Pomocí parametru -i můžete ukázat na soubor hosts.
V případě potřeby můžete zadat stejný příkaz pouze na konkrétním hostiteli.
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2 host2 | SUCCESS => { "changed": false, "ping": "pong" }
Vysvětlení:
- Parametr Limit lze použít k zadávání příkazů pouze na konkrétních hostitelích v souboru hostitele
- Název hostitele definovaný v souboru inventáře
Pokud potřebujete rychle zkopírovat soubor na více cílů, můžete použít kopírovací modul v ansible, který používá SCP. Takže příkaz a jeho výstup vypadají níže:
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile" host1 | SUCCESS => { "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/testfile", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1562216392.43-256741011164877/source", "state": "file", "uid": 0 } host2 | SUCCESS => { "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/tmp/testfile", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1562216392.6-280302911361278/source", "state": "file", "uid": 0 }
Vysvětlení:
- Kopírovat modul definován
- Argumenty modulu jsou v tomto případě zdrojová absolutní cesta a cílová absolutní cesta.
- Výstup příkazu Ansible odrážející úspěšnost příkazu kopírování a další podrobnosti, jako jsou kontrolní součty sha1 nebo md5 pro kontrolu integrity souboru a metadata, jako je vlastník, velikost nebo oprávnění. Mít balíček nainstalovaný na hromadě serverů je snadné. Ansible má několik modulů, které komunikují s použitými instalačními programy, jako je yum, apt, dnf atd.
V dalším příkladu zjistíte, jak nainstalovat balíček prostřednictvím modulu yum na dva hostitele Centos.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present' host1 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.xservers.ro\n * epel: fedora.mirrors.telekom.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: remi.schlundtech.de\n * remi-safe: remi.schlundtech.de\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] } host2 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: mirror.netsite.dk\n * elrepo: mirrors.leadhosts.com\n * epel: mirrors.nav.ro\n * extras: centos.mirrors.telekom.ro\n * remi-php70: mirrors.uni-ruse.bg\n * remi-safe: mirrors.uni-ruse.bg\n * updates: centos.mirror.iphh.net\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n ncdu x86_64 1.14-1.el7 epel 51 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package\n\nTotal download size: 51 k\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nInstalled:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] }
Vysvětlení:
- V tomto příkladu je použit modul Yum
- Definuje argumenty modulu a v tomto případě zvolíte název balíčku a jeho stav. Pokud například stav chybí, bude balíček prohledán a pokud bude nalezen, bude odstraněn
- Při žluté barvě uvidíte výstup příkazu ansible se změněným stavem, což v tomto případě znamená, že balíček byl nalezen a nainstalován.
- Stav instalačního příkazu yum vydaného přes ansible. V tomto případě byl nainstalován balíček ncdu.x86_64 0:1.14-1.el7.
Všechny možnosti yum instalačního programu lze samozřejmě použít prostřednictvím ansible, včetně aktualizace, instalace, nejnovější verze nebo odstranění.
V níže uvedeném příkladu byl vydán stejný příkaz k odstranění dříve nainstalovaného balíčku ncdu.
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent' host1 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] } host2 | SUCCESS => { "changed": true, "msg": "", "rc": 0, "results": [ "Loaded plugins: fastestmirror\nResolving Dependencies\n--> Running transaction check\n---> Package ncdu.x86_64 0:1.14-1.el7 will be erased\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nRemoving:\n ncdu x86_64 1.14-1.el7 @epel 87 k\n\nTransaction Summary\n================================================================================\nRemove 1 Package\n\nInstalled size: 87 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Erasing : ncdu-1.14-1.el7.x86_64 1/1 \n Verifying : ncdu-1.14-1.el7.x86_64 1/1 \n\nRemoved:\n ncdu.x86_64 0:1.14-1.el7 \n\nComplete!\n" ] }
Vysvětlení:
- Výstup příkazu yum ukazuje, že balíček byl odstraněn.
Další užitečnou a základní funkcí, kterou ansible používá k interakci se serverem klienta, je shromažďování některých faktů o systému. Stahuje tedy informace o hardwaru, softwaru a verzích ze systému a každou hodnotu ukládá do proměnné, kterou lze později použít.
Pokud potřebujete podrobné informace o systémech, které mají být upraveny pomocí ansible, lze použít následující příkaz. Modul nastavení shromažďuje fakta ze systémových proměnných.
Ansible Playbooks
Ansible Playbooks jsou způsob odesílání příkazů vzdáleným systémům prostřednictvím skriptů. Ansible playbooky se používají ke konfiguraci složitých systémových prostředí pro zvýšení flexibility spuštěním skriptu na jednom nebo více systémech. Ansible playbooky bývají spíše konfiguračním jazykem než programovacím jazykem.
Příkazy Ansible playbook používají formát YAML, takže není potřeba mnoho syntaxe, ale musí být respektováno odsazení. Jak už název napovídá, playbook je sbírka her. Prostřednictvím playbooku můžete některým hostitelům určit konkrétní role a jiným hostitelům jiné role. Tímto způsobem můžete organizovat více serverů ve velmi rozmanitých scénářích, vše v jedné příručce.
Abychom měli všechny podrobnosti přesné, než budeme pokračovat s příklady Ansible playbooku, musíme nejprve definovat úkol. Jedná se o rozhraní k ansible modulům pro role a playbooky.
Nyní se pojďme naučit hru Ansible prostřednictvím příkladu s jednou hrou s jednou hrou, která obsahuje více úkolů, jak je uvedeno níže:
--- - hosts: group1 tasks: - name: Install lldpad package yum: name: lldpad state: latest - name: check lldpad service status service: name: lldpad state: started
Ve výše uvedeném příkladu Ansible playbooku je skupina hostitelů v souboru hostitele zaměřena na instalaci balíčku lldpad pomocí modulu yum a poté je spuštěn servisní modul lldpad vytvořený po instalaci pomocí servisního modulu používaného většinou k interakci se souborem systemd.
Vysvětlení:
- Skupina hostitelů, na kterých poběží playbook
- Modul Yum se v této úloze používá pro instalaci lldpad
- Servisní modul slouží ke kontrole, zda je služba po instalaci spuštěna
Každý ansible playbook pracuje se souborem inventáře. Soubor inventáře obsahuje seznam serverů rozdělených do skupin pro lepší kontrolu podrobností jako IP adresa a SSH port pro každého hostitele.
Soubor inventáře, který můžete použít pro tento příklad Ansible playbooku, vypadá níže. Existují dvě skupiny, pojmenované skupina1 a skupina2, z nichž každá obsahuje hostitel1 a hostitel2.
[group1] host1 ansible_host=192.168.100.2 ansible_ssh_port=22 [group2] host2 ansible_host=192.168.100.3 ansible_ssh_port=22
Vysvětlení:
- Název skupiny
- Název hostitele s IP adresou a portem ssh, v tomto případě výchozí, 22.
Další užitečný příklad Ansible playbooku obsahující tentokrát dvě hry pro dva hostitele je další. Pro první skupinu hostitelů, group1, bude selinux povolen. Pokud je povolena, na obrazovce hostitele se zobrazí zpráva.
U druhé skupiny hostitelů bude balíček httpd nainstalován pouze v případě, že ansible_os_family je RedHat a ansible_system_vendor je HP.
Ansible_os_family a ansible_system_vendor jsou proměnné shromážděné pomocí volby collect_facts a lze je použít jako v tomto podmíněném příkladu.
--- - hosts: group1 tasks: - name: Enable SELinux selinux: state: enabled when: ansible_os_family == 'Debian' register: enable_selinux - debug: Imsg: "Selinux Enabled. Please restart the server to apply changes." when: enable_selinux.changed == true - hosts: group2 tasks: - name: Install apache yum: name: httpd state: present when: ansible_system_vendor == 'HP' and ansible_os_family == 'RedHat'
Vysvětlení:
- Příklad klauzule when, V tomto případě, kdy je typ OS Debian. Proměnná ansible_os_family se shromažďuje pomocí funkce collect_facts.
- Výstup úlohy je registrován pro budoucí použití pod názvem enable_selinux
- Další příklad klauzule when. V tomto případě se uživateli hostitele zobrazí zpráva, pokud byl SELinux skutečně povolen dříve.
- Další příklad klauzule when sestávající ze dvou pravidel
Kromě úkolů existují také některé konkrétní úkoly nazývané handlery. Obslužné rutiny musí mít v celé knize jedinečné jméno. Ty fungují stejně jako běžný úkol, ale obsluha může být upozorněna prostřednictvím oznamovatele.
Pokud není handler během běhu playbooku upozorněn, nespustí se. Pokud však obsluhu upozorní více než jedna úloha, spustí se pouze jednou po dokončení všech úloh.
V níže uvedeném příkladu můžete vidět, jak má konkrétní úkol sekci oznámení, která vyzývá k jinému úkolu. Pokud se změní výstup první úlohy, bude zavolána úloha handleru. Nejlepším příkladem je změnit konfigurační soubor a poté tuto konkrétní službu restartovat.
--- - hosts: group2 tasks: - name: sshd config file modify port lineinfile: path: /etc/ssh/sshd_config regexp: 'Port 28675' line: '#Port 22' notify: - restart sshd handlers - name: restart sshd service: sshd name: sshd state: restarted
V tomto případě, pokud se změní první úloha, „sshd config file Modify port“, což znamená, že pokud port není 28675 na prvním místě, pak bude upraven a úloha upozorní obsluhu se stejným názvem, aby byla spuštěna. a restartuje službu sshd.
Vysvětlení:
- Příklad oznamovatele
- Příklad psovoda
Ansible role
Při práci s rozsáhlými učebnicemi je jednodušší rozdělit úkoly do rolí. To také pomáhá při opětovném použití rolí v budoucnu. Role jsou sbírkou úloh, které lze přesouvat z jedné příručky do druhé, lze ji spouštět nezávisle, ale pouze prostřednictvím souboru příručky.
Role jsou uloženy v samostatných adresářích a mají konkrétní adresářovou strukturu.
[root@ansible-server test2]# tree . `-- role1 |-- defaults | `-- main.yml |-- handlers | `-- main.yml |-- meta | `-- main.yml |-- README.md |-- tasks | `-- main.yml |-- tests | |-- inventory | `-- test.yml `-- vars `-- main.yml 7 directories, 8 files
Soubor yaml v adresáři defaults obsahuje seznam výchozích proměnných, které mají být použity spolu s playbookem. Adresář handlerů se používá k ukládání handlerů. Meta-adresář má obsahovat informace o autorovi a závislostech rolí. V adresáři úloh je hlavní soubor yaml pro roli.
Adresář testy obsahuje ukázkový soubor yaml playbook a ukázkový soubor inventáře a většinou se používá pro účely testování před vytvořením skutečné role.
Adresář vars obsahuje soubor yaml, ve kterém budou definovány všechny proměnné používané rolí. Šablony adresářů a soubory adresářů by měly obsahovat soubory a šablony, které budou použity úkoly v roli.
Chcete-li vytvořit strom adresářů pro roli, měli byste použít následující příkaz s posledním parametrem, názvem role:
[root@ansible-server test2]# ansible-galaxy init role1
Ansible také dobře funguje se šablonami. Jako jazyk pro šablonování používá Jinja2.
V dalším příkladu zjistíte, jak vypadá základní šablona jinja2 a použijete ji v roli.
Za běhu, řekněme, v jakém datovém centru se váš server nachází, můžete pomocí proměnné „resolver_ip_addresses“ vybrat z více než jednoho jmenného serveru, z nichž každý odpovídá datovému centru.
{% for resolver in resolver_ip_addresses %} nameserver {{ resolver }} {% endfor %} options timeout:1 options attempts:5 options rotate
V tomto příkladu jsou v adresáři playbook definovány některé proměnné, včetně proměnné s názvem resolver_ip_addresses s různými hodnotami v závislosti na datovém centru.
- name: Set resolver for server template: src: dns.j2 dest: /etc/resolv.conf group: root owner: root mode: "0644" tag: resolver
Vysvětlení:
- Název šablony, která se má použít. Šablona se nachází v adresáři šablon v cestě role
- Cílová cesta názvu souboru, který má být nahrazen šablonou, na straně klienta.
- Oprávnění cílového souboru
Úlohy rolí mohou mít také pole značky, které má přiřazený název. Více než jeden úkol může sdílet stejnou značku. Při spuštění ansible playbooku můžete také zadat značku, takže tyto úlohy budou provedeny.
Případová studie Ansible
V této části budeme analyzovat případovou studii základní příručky ansible, která má tři role. Účelem toho je uvést praktický příklad toho, o čem jsme hovořili dříve. Některé příklady použité dříve v této příručce Ansible budou upraveny a použity v této příručce.
Níže je uvedena adresářová struktura playbooku. Soubor Yaml, který bude použit, bude p4.yml.
[root@ansible-server test_ansible]# ls -lrth total 16K -rw-r--r--. 1 root root 0 Jul 3 10:13 testfile -rw-r--r--. 1 root root 203 Jul 3 13:30 p1.yml -rw-r--r--. 1 root root 125 Jul 3 15:00 hosts -rw-r--r--. 1 root root 488 Jul 3 16:40 p2.yml -rw-r--r--. 1 root root 188 Jul 4 17:33 p4.yml drwxr-xr-x. 5 root root 47 Jul 4 17:35 roles [root@ansible-server test_ansible]# cd roles [root@ansible-server roles]# ls -lrth total 12K drwxr-xr-x. 9 root root 4.0K Jul 4 12:52 httpd drwxr-xr-x. 9 root root 4.0K Jul 4 13:55 selinux drwxr-xr-x. 9 root root 4.0K Jul 4 16:54 resolver
Příručka má tři role, jedna se nazývá resolver, která nastavuje konkrétní jmenný server na serverech zkopírováním souboru ze serveru do cíle /etc/resolv.conf. Další se nazývá httpd a nainstaluje balíček httpd s modulem yum a třetí povolí SELinux a upozorní přihlášeného uživatele, aby restartoval systém. Každá role byla vytvořena pomocí příkazu ansible-galaxy.
Role řešitele, úkol main.yml:
Httpd role, main.yml úkol:
Role Selinuxu, úkol main.yml:
Níže je definována příručka p4.yml. Poběží na všech hostitelích, pokud není v příkazovém řádku uvedeno jinak, poběží jako uživatel root na portu 22 (SSH), před spuštěním rolí shromáždí fakta a poběží všechny tři výše uvedené role. Každou roli lze spustit nezávisle zadáním značky v příkazovém řádku ansible-playbook s parametrem –t.
--- - hosts: all user: root port: 22 gather_facts: True roles: - { role: selinux, tags: selinux } - { role: httpd, tags: httpd } - { role: resolver, tags: resolver }
Spuštění playbooku p4.yml na dvou hostitelích a interpretace výstupu. Stejný příkaz lze spustit s parametrem –check pro chod nasucho. V případě, že chcete použít ověřování heslem, použijte parametr -k.
Vysvětlení:
- Příkaz Ansible-playbook, který spouští p4.yml
- Příručka přeskočí roli SELinux, protože je již povolena.
- Ansible zjistil, že balíček httpd je již nainstalován, takže se vrátí ok.
- Překladač byl nastaven a stav překladače rolí se změnil.
Ansible Commands Cheat Sheet
Nainstalujte EPEL repo na systémy Centos/RHEL
[root@ansible-server ~]# sudo yum install epel-release
Nainstalujte balíček ansible na systémy Centos/RHEL
[root@ansible-server ~]# sudo yum install -y ansible
Proveďte aktualizaci balíčků na Debian/Ubuntu systémy
$ sudo apt update
Nainstalujte balíček software-properties-common na Debian/Ubuntu systémy
$ sudo apt install software-properties-common
Nainstalujte ansible osobní archiv balíčků na Debian/Ubuntu systémy
$ sudo apt-add-repository ppa:ansible/ansible
Nainstalujte ansible na Debian/Ubuntu systémy
$ sudo apt update $ sudo apt install ansible
Zadejte příkaz ping na všech serverech definovaných v souboru inventáře s názvem hosts
[root@ansible-server test_ansible]# ansible -i hosts all -m ping
Zadejte příkaz ping pouze na hostiteli2
[root@ansible-server test_ansible]# ansible -i hosts all -m ping --limit host2
Zkopírujte soubor „testfile“ na všechny hostitele v souboru inventáře
[root@ansible-server test_ansible]# ansible -i hosts all -m copy -a "src=/root/test_ansible/testfile dest=/tmp/testfile"
Nainstalujte balíček ncdu na všechny hostitele
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=present'
Odeberte balíček ncdu ze všech hostitelů
[root@ansible-server test_ansible]# ansible -i hosts all -m yum -a 'name=ncdu state=absent'
Vytvořte adresářovou strukturu pro roli s názvem role1.
[root@ansible-server test2]# ansible-galaxy init role1
Dry-run p4.yml playbook
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml --check
Spusťte p4.yml playbook s ověřením hesla pro všechny hostitele
[root@ansible-server test_ansible]# ansible-playbook -i hosts p4.yml -k
Shrnutí
Ve světě s technologií, která se neustále mění rychlým tempem a zároveň neuvěřitelně rychle roste, musí správci systému a vývojoví inženýři přemýšlet o různých přístupech, jak automatizovat rutinní úlohy a organizovat velké skupiny serverů.
Zatímco je mnoho alternativa k Ansible (Chef, Puppet) tam venku, které dělají totéž s určitými rozdíly, se Ansible dokázal povznést nad všechny z nich svou jednoduchostí, vylepšeným zabezpečením a především svou hladkou křivkou učení. Díky těmto kvalitám a rychlému přijetí Ansible jsme vytvořili tutoriál plný příkladů, abyste mohli mít ještě hladší první zkušenost s prací s Ansible.
V tomto tutoriálu základy Ansible jsme popsali ansible a mluvili trochu o jeho historii. Zmínili jsme silné stránky Ansible a výhody, které ansible může přinést automatizaci a orchestraci infrastruktur různých velikostí. Definovali jsme základní ansible používané termíny a definovali strukturu Ansible playbooků. Důkladné příklady doprovázely všechny informace s podrobným vysvětlením.