111 lines
3.6 KiB
Markdown
111 lines
3.6 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 (piem. webservers, dnsservers....)
|
|
|
|
Role sākās no `tasks/main.yml`. Piem., `/roles/common/tasks/main.yml`
|
|
|
|
### /main.yml
|
|
Faktiski šajā failā nosaka kādas lomas attiecās uz kādiem hostiem/grupām.
|
|
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*.
|
|
|
|
**Kas? Ko?**
|
|
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?**
|
|
Visi handleri tiek palaisti pašā playbook beigās!
|
|
Un, 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ē.
|
|
|
|
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
|
|
```
|
|
### Templates
|
|
|
|
### Vault
|
|
|
|
### Tags
|
|
|
|
### Variable files
|
|
|
|
## Kā laizt ansible?
|
|
|
|
Pamats kas vajadzīgs:
|
|
```sh
|
|
ansible-playbook -i <inventory file> <playbook file>
|
|
|
|
# Example:
|
|
# ansible-playbook -i inventory.yml main.yml
|
|
```
|
|
|
|
Pēc tam var karināt klāt dažādus "karogus":
|
|
|
|
- `-u` - ar kādu lietotāju slēgsies klāt (ssh)
|
|
- `-k` - prasīs kādu SSH login paroli izmantot (ja vajag)
|
|
- `-K` - prasīs kādu SUDO paroli izmantot (ja vajadzīga)
|
|
- `--check`, `-C` - tā saucamais "dry-run", kur parāda tikai kas mainīsies,
|
|
un vai būs kādas kļūdas, bet uz gala sistēmas neko nemainīs (nestrādās ar dažiem moduļiem)
|
|
- `--diff`, `-D` - visos taskos parāda kas ir mainījies (piemēram, failiem `diff` formātā)
|
|
|