89 lines
2.8 KiB
Markdown
89 lines
2.8 KiB
Markdown
# euro-ansible
|
|
|
|
## Installing ansible
|
|
|
|
Ansible ir jālādē tikai uz ierīces kurā atrodas ansible playbooki.
|
|
Uz gala iekārtas vajadzīgs arī python, bet tas parasti jau ir ielādēts.
|
|
|
|
Mana metode ansible instalēšanai (Ubuntu):
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install pipx
|
|
pipx ensurepath
|
|
pipx install --include-deps ansible
|
|
```
|
|
(Source: https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html )
|
|
|
|
## Ansible struktūra (Vismaz šajā situācijā)
|
|
|
|
### `/inventory.yml`
|
|
Inventory failā pieraksta (Un sagrupē!) visus aktuālos serverus, to IP adreses,
|
|
kā arī, dažreiz aktuālos variables.
|
|
|
|
Šajā piemērā inventory fails ir YAML formātā, kas ir daudz salasāmāks.
|
|
Bet ir iespējams ka inventory fails var būt dots INI formātā.
|
|
|
|
Skat. https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html
|
|
|
|
### `/roles/`
|
|
Šajā mapē nosaka atsevišķas serveru "lomas".
|
|
Parasti visu sadala atsevišķās lomās
|
|
|
|
### `/main.yml`
|
|
Faktiski šajā failā nosaka kādi roles attiecās uz kādiem hostiem.
|
|
Bet, ja nemaldos, var arī vienkārši pa taisno rakstīt taskus, kas, laikam,
|
|
ir tas ko šī uzdevuma veidotāji vēlējās.
|
|
|
|
### Tasks/Modules (`/roles/common/tasks/*`)
|
|
|
|
Ansible playbook faili ir sadalīti *task*os.
|
|
Katrā *task*ā var izsaukt vienu, vai vairākus moduļus (izmantojot `block`),
|
|
lai izpildītu kādu uzdevumu.
|
|
|
|
Piemēram `apt` modulis, lai ielādētu package, vai
|
|
`copy` modulis, lai pārkopētu failu uz hostu, u.tml.
|
|
|
|
Katram modulim ir kaut kādi savi iestatījumi,
|
|
tāpēc ir svarīgi skatīties dokumentāciju moduļiem.
|
|
|
|
### Handlers and Notify
|
|
|
|
Situācijā, kad izmaina kādu failu, iespējams vajag restartēt kādu servisu.
|
|
Šim nolūkam izmanto *handlers* un *notify*.
|
|
|
|
|
|
#### Handlers
|
|
Handleri, šajā situācijā, atrodās iekš `/roles/common/handlers/main.yml`
|
|
|
|
Šis fails ir strukturēts tā pat kā parasti playbook *task* faili,
|
|
bet šajā situācijā katrs *task* darbojās kā "handler",
|
|
kuru var izsaukt no jebkura taska, ja tajā kaut kas ir mainījies.
|
|
|
|
(Handleri netiek laisti, ja tos neizsauc UN ja nav izmaiņu!)
|
|
|
|
**Kā izsauc handleri?**
|
|
Pie kāda task var piesaistīt handler, tam pieliekot `notify: <handnler name>`
|
|
(Piemērs iekš `/roles/common/tasks/syslog.yml`)
|
|
|
|
**Kad handleri tiek laisti?**
|
|
Vai handleris tikts laists, tiek noteikts pēc attiecīgā taska exit statusa!
|
|
Katram *task*am ir beigu statuss. Parasti - OK/CHANGED/SKIPPED
|
|
|
|
Ja task beidzās kā `CHANGED`, tad handleris tiks palaists,
|
|
bet ja ir `OK` vai `SKIPPED`, tad, nē.
|
|
|
|
Visi handleri tiek palaisti pašā playbook beigās!
|
|
Ja ir vajadzība visus, līdz šim izsauktos, handlerus palaist ātrāk,
|
|
tad jāizmanto ansible `flush_handlers` task.
|
|
|
|
```yml
|
|
- name: Flush handlers
|
|
meta: flush_handlers
|
|
```
|
|
|
|
## Kā laizt ansible?
|
|
|
|
```bash
|
|
ansible-playbook
|
|
```
|