Tutoriál Ansible pro začátečníky: Příručka a příkazy
⚡ Chytré shrnutí
Ansible je open source automatizační engine bez agentů, který konfiguruje servery přes SSH, spouští ad-hoc příkazy a orchestruje komplexní nasazení pomocí playbooků YAML, rolí a opakovaně použitelných šablon napříč Linuxem a... Windows infrastruktura.
Ansible je jedním z nejrozšířenějších open source automatizačních nástrojů v moderním devops, ceněný pro svůj bezagentový design a jednoduché a čitelné konfigurační soubory. Tento tutoriál Ansible pro začátečníky vysvětluje, co je Ansible, jak ho nainstalovat a jak používat ad-hoc příkazy, playbooky, role a šablony, a to prostřednictvím praktických příkladů.
Co je Ansible?
Možná je open source automatizační a orchestrační nástroj pro poskytování softwaru, správu konfigurace a nasazení softwaru. Konfiguruje unixové systémy a Windows systémy podobné, poskytující infrastrukturu jako kód prostřednictvím vlastního deklarativního jazyka. Ansible je často srovnáván s nástroji založenými na agentech, jako je Loutka.
Ansible je oblíbený pro svou jednoduchou instalaci, snadné připojení klientů a bezagentový design. Připojuje se ke klientům přes SSH, takže na straně klienta není potřeba žádný speciální agent. Ansible odesílá moduly každému klientovi, moduly běží lokálně a jejich výstup se vrací na server Ansible.
Protože Ansible využívá SSH, snadno se připojuje ke klientům pomocí SSH klíčů, což celý proces zjednodušuje. Podrobnosti o klientech, jako jsou názvy hostitelů nebo IP adresy a SSH porty, jsou uloženy v souborech nazývaných inventární soubory. Jakmile vytvoříte a naplníte inventární soubor, Ansible jej může použít.
Proč používat Ansible?
Zde jsou některé důležité výhody používání Ansible:
- Jednou z nejvýznamnějších výhod Ansible je, že je zdarma pro každého.
- K instalaci a používání nejsou nutné žádné speciální dovednosti správce systému a oficiální dokumentace je velmi komplexní.
- Díky modularitě napříč pluginy, moduly, inventáři a playbooky je Ansible vynikajícím společníkem pro orchestraci rozsáhlých prostředí.
- Ansible je lehký a konzistentní, bez omezení operačního systému nebo podkladového hardwaru.
- Je velmi bezpečný díky svému bezagentovému designu a použití bezpečnostních funkcí OpenSSH.
- Ansible má hladkou křivku učení, podpořenou důkladnou dokumentací a snadno se učící strukturou a konfigurací.
Tyto silné stránky, zejména ve srovnání s jinými alternativy k Ansible, vysvětlují jeho rychlé přijetí. Před instalací je dobré pochopit, jak se projekt vyvíjel.
Historie Ansible
Zde jsou důležité mezníky v historii Ansible:
- Projekt Ansible začal v únoru 2012. Poprvé ho vyvinul Michael DeHaan, tvůrce Cobbleru a Func (Fedora Unified Network Controller).
- Společnost financující Ansible, původně s názvem AnsibleWorks Inc, byla v roce 2015 odkoupena společností RedHat a později spolu s ní přešla pod... IBM deštník.
- Dnes je Ansible součástí distribucí jako Fedora Linux, RHEL, CentOS a… Oracle Linux.
Důležité termíny používané v Ansible
V tomto tutoriálu k Ansible se objevují následující pojmy, které je dobré znát před zahájením:
Ansible server
Počítač, na kterém je nainstalován Ansible a ze kterého se spouštějí všechny úlohy a playbooky.
Modul
Modul je příkaz nebo sada podobných příkazů Ansible, určený ke spuštění na straně klienta.
Úkol
Úkol je část, která se skládá z jediného postupu, který má být dokončen.
Role
Způsob organizace úloh a souvisejících souborů tak, aby je bylo možné později volat v playbooku.
Skutečnost
Informace načtené z globálních proměnných klientského systému prostřednictvím operace gather_facts.
Inventář
Soubor obsahující data o klientských serverech Ansible. V dalších příkladech je definován jako soubor hosts.
Hra
Provedení scénáře.
Psovod
Úloha, která je volána pouze tehdy, když je přítomen oznamovatel.
Oznamovatel
Sekce přiřazená úloze, která volá obslužnou rutinu, pokud se výstup změní.
štítek
Název nastavený pro úlohu, který lze později použít ke spuštění pouze této konkrétní úlohy nebo skupiny úloh.
Možnost instalace v Linuxu
Jakmile zvážíte své možnosti a rozhodnete se pro Ansible, dalším krokem je jeho instalace do vašeho systému. Následující krátký návod zahrnuje instalaci na nejoblíbenějších... Linux distribuce.
Nainstalujte Ansible na systémy Centos/RedHat
Krok 1) Nainstalujte si repozitář EPEL.
[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 si osobní archiv balíčků Ansible.
$ sudo apt-add-repository ppa:ansible/ansible
Krok 4) Nainstalujte si Ansible.
$ sudo apt update $ sudo apt install ansible
Povolené ad-hoc příkazy
Jedním z nejjednodušších způsobů používání Ansible jsou ad-hoc příkazy. Ty jsou užitečné, když chcete zadat příkaz na jednom serveru nebo na skupině serverů. Ad-hoc příkazy se neukládají pro budoucí použití, ale představují rychlý způsob interakce se servery, které si vyberete.
Pro tento tutoriál Ansible je nakonfigurován jednoduchý soubor hosts pro dva servery, který obsahuje host1 a host2.
Dosažitelnost hostitelů ze serveru Ansible můžete ověřit vydáním příkazu ping příkaz 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 vydaný pomocí parametru -m, v tomto případě ping
- Pomocí parametru -i můžete ukázat na soubor hosts.
Stejný příkaz můžete v případě potřeby vydat i na jednom 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 do více cílů, použijte modul copy, který se spoléhá na SCP. Příkaz a jeho výstup vypadají takto:
[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 nainstalujete balíček s modulem 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.
Samozřejmě lze prostřednictvím Ansible použít všechny možnosti instalačního programu yum, včetně aktualizace, instalace, nejnovější verze a odebrání.
V níže uvedeném příkladu je stejný příkaz vydán 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ší zásadní funkcí Ansible je jeho schopnost shromažďovat fakta o systému. Shromažďuje informace o hardwaru, softwaru a verzi a každou hodnotu ukládá do proměnné, kterou můžete později znovu použít.
Pokud potřebujete podrobné informace o systémech, které Ansible upraví, modul nastavení tyto údaje shromáždí ze systémových proměnných.
Ansible Playbooks
Ansible Playbooks jsou způsob, jak odesílat příkazy do vzdálených systémů pomocí skriptů. Playbooky konfigurují složitá systémová prostředí a zvyšují flexibilitu spuštěním jednoho skriptu na jednom nebo více systémech. Chovají se spíše jako konfigurační jazyk než jako programovací jazyk.
Příkazy playbooku používají formát YAML, takže je potřeba jen málo syntaxe, ale je nutné respektovat odsazení. Jak název napovídá, playbook je kolekce her. Prostřednictvím playbooku můžete některým hostitelům přiřadit specifické role a jiným hostitelům různé role, čímž orchestrujete mnoho serverů v jednom souboru.
Než budeme pokračovat s příklady playbooků, je dobré definovat úlohu. Úlohy jsou rozhraním k modulům Ansible pro role a playbooky.
Nyní si představte Ansible playbook s jednou hrou, která obsahuje více úkolů, jak je znázorněno 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 playbooku jsou hostitelé skupiny group1 v souboru hosts určeni pro instalaci balíčku lldpad pomocí modulu yum. Služba lldpad vytvořená po instalaci se poté spustí pomocí modulu service, který většinou interaguje 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, což poskytuje lepší kontrolu nad detaily, jako je IP adresa a SSH port pro každý hostitel.
Soubor inventáře pro tento příklad playbooku vypadá takto. Existují dvě skupiny, skupina1 a skupina2, z nichž každá obsahuje hostitele hostitele1 a hostitele2.
[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.
Následující příklad playbooku Ansible obsahuje dvě přehrávání pro dvě skupiny hostitelů. Pro první skupinu, group1, je SELinux povolen a po jeho povolení se na obrazovce hostitele zobrazí zpráva.
Pro druhou skupinu se balíček httpd nainstaluje 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é získané pomocí volby gather_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ě úloh existují také speciální úlohy nazývané obslužné rutiny. Obslužná rutina musí mít v celém playbooku jedinečný název. Obslužné rutiny fungují jako běžné úlohy, ale lze je upozornit prostřednictvím notifikátoru.
Pokud obslužná rutina není během běhu playbooku upozorněna, nespustí se. Pokud však obslužnou rutinu upozorní více než jedna úloha, spustí se pouze jednou po dokončení všech úloh.
V níže uvedeném příkladu má konkrétní úloha sekci notify, která volá jinou úlohu. Pokud se změní výstup první úlohy, je volána úloha obslužné rutiny. Běžným příkladem je změna konfiguračního souboru a následné restartování dotčené služby.
---
- 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 první úloha „sshd config file modify port“ změní, což znamená, že port již není 28675, port se změní a úloha upozorní obslužnou rutinu se stejným názvem, která restartuje službu sshd.
Vysvětlení:
- Příklad oznamovatele
- Příklad psovoda
Ansible role
Při práci s rozsáhlými playbooky je snazší rozdělit úlohy do rolí. Role také usnadňují pozdější opětovné použití práce. Role je soubor úloh, které lze přesouvat z jednoho playbooku do druhého a spouštět nezávisle, i když pouze prostřednictvím souboru playbooku.
Role jsou uloženy v samostatných adresářích a řídí se specifickou adresářovou strukturou.
[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 výchozí proměnné používané s playbookem. Adresář handlers ukládá obslužné rutiny a adresář meta obsahuje informace o závislostech autora a role. Adresář tasks obsahuje hlavní soubor YAML pro roli.
Adresář tests obsahuje ukázkový YAML playbook a ukázkový soubor inventáře a většinou se používá k testování před vytvořením skutečné role.
Adresář vars obsahuje soubor YAML, kde jsou definovány všechny proměnné používané rolí. Adresáře templates a files obsahují šablony a soubory používané úlohami v roli.
Chcete-li vytvořit adresářový strom pro roli, použijte následující příkaz s názvem role jako posledním parametrem:
[root@ansible-server test2]# ansible-galaxy init role1
Ansible také dobře funguje se šablonami a jako šablonovací jazyk používá Jinja2.
Následující příklad ukazuje, jak vypadá základní šablona Jinja2 a jak ji použít v roli.
Za běhu si můžete například v závislosti na tom, ve kterém datovém centru se váš server nachází, vybrat z několika nameserverů, z nichž každý odpovídá jednomu datovému centru, a to pomocí proměnné resolver_ip_addresses.
{% for resolver in resolver_ip_addresses %}
nameserver {{ resolver }}
{% endfor %}
options timeout:1
options attempts:5
options rotate
V tomto příkladu adresář playbooku definuje několik proměnných, včetně 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 s tagem s přiřazeným názvem. Stejný tag může sdílet více úloh a při spuštění playbooku můžete zadat tag tak, aby se provedly pouze úlohy s tagy.
Případová studie Ansible
V této části analyzujeme případovou studii základního postupu pro Ansible, který má tři role. Cílem je poskytnout praktický příklad dosud probraných konceptů. Některé dřívější příklady z tohoto tutoriálu jsou v tomto postupu upraveny a znovu použity.
Níže je uvedena struktura adresářů playbooku. Použitý soubor YAML je 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
Playbook má tři role. Role resolver nastavuje konkrétní nameserver na serverech zkopírováním souboru do cílového adresáře /etc/resolv.conf. Role httpd instaluje balíček httpd s modulem yum a třetí role povoluje SELinux a upozorňuje přihlášeného uživatele na restart systému. Každá role byla vytvořena příkazem ansible-galaxy.
Role řešitele, úkol main.yml:
Httpd role, main.yml úkol:
Role Selinuxu, úkol main.yml:
Níže je uveden playbook p4.yml. Spouští se na všech hostitelích, pokud není na příkazovém řádku uvedeno jinak, spouští se jako uživatel root na portu 22 (SSH), před spuštěním rolí shromažďuje informace a spouští všechny tři role. Každou roli lze spustit nezávisle zadáním jejího tagu na 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 }
Pak můžete na obou hostitelích spustit playbook p4.yml a interpretovat výstup. Stejný příkaz lze spustit s parametrem –check pro zkušební spuštění a s parametrem -k, pokud chcete použít ověřování heslem.
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
Vydání a ping příkaz 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
Vydání a ping příkaz 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
















