- Omogućava predvidivost operacija
- Eliminiše ručno ponavljanje operacija
- Omogućava usitnjavanje problema
- Ali ne obavezno i pojednostavljuje rešavanje problema
- Jednostavna sintaksa
- Lista operacija koje se izvršavaju
- Operacije su shell komande ili moduli
- Opciono grupisane po rolama
- Promenljive definisane na raznim nivoima
- Handler operacije koje čekaju na neki događaj
- Sa kontrolne mašine (vaš laptop) se pokreću operacije nad nodovima
- Nodovi se navode u inventaru, opciono grupisani
- Bez agenta na nodovima – ssh i python su zahtevi
- Autentifikacija SSH ključevima ili šifrom
- Rezultat je odmah vidljiv u JSON formatu
- Veliki broj (800+) gotovih modula
- Mogu biti napisani u raznim jezicima
- Idempotentnost je značajna osobina
$ cat ansible.cfg
[defaults]
inventory = hosts
remote_user = root
command_warnings = False
$ cat hosts
[local]
localhost
[mday]
mns-mday-[1:2]
$ cat playbooks/01-hello.yml
#!/usr/bin/env ansible-playbook
---
- name: Say hello
hosts: all
gather_facts: False
tasks:
- debug: msg="Hello World. My name is {{ inventory_hostname }}"
$ playbooks/01-hello.yml -l mday
PLAY [Say hello]
********************************************************
TASK [debug]
************************************************************
ok: [mns-mday-1] => {
"msg": "Hello World. My name is mns-mday-1"
}
ok: [mns-mday-2] => {
"msg": "Hello World. My name is mns-mday-2"
}
PLAY RECAP
**************************************************************
mns-mday-1 : ok=1 changed=0 unreachable=0 failed=0
mns-mday-2 : ok=1 changed=0 unreachable=0 failed=0
Dva izbora:
- By the book reusability
- Sam svoj majstor...
$ git clone https://github.com/ansible/ansible-examples.git
$ cd ansible-examples/wordpress-nginx_rhel7
$ cp ~/ansible.cfg ~/hosts .
$ ansible-playbook site.yml
$ git clone https://github.com/mnspodrska/ansible-examples.git
- 01-hello.yml - Da se upoznamo...
- 02-install.yml - Malo da zapetljamo
- 03-lineinfile.yml - Interaktivni search&replace linija fajla
- 04-diff.yml - Prikazuje razlike između fajlova na udaljenim mašinama uz mogućnost promene sadržaja
- 05-users.yml - Dodavanje SSH korisnika pomoću YAML dict-a
- 06-email.yml - Korišćenje template-a za personalizovane mejlove
- 07-stdout.yml - Demonstrira ružnu stranu Ansible prikaza stdout-a
- 08-stdout-human.yml - Na primeru prikaza stdout-a za ljude pokazuje kako je Ansible lako prilagoditi
- 09-script.yml - Idempotencija je važna, ali ne i obavezna ili uvek potrebna… Nekada je potrebno izvršiti gotovu skriptu na većem broju nodova
- 10-stateful-nginx-config.yml
- Instalira nginx
- Priprema inicijalnu konfiguraciju i sadržaj lokalno na kontrolnoj mašini
- Omogućava naknadnu izmenu inicijalne konfiguracije i sadržaja lokalno, uz upload na sve nodove i restart kad je potrebno
- Pravi bekap izmenjene konfiguracije i briše stare bekape