Compare commits

..

5 Commits

Author SHA1 Message Date
c3cc24e064 Update README.md 2025-09-04 20:10:02 +03:00
8903eb7b58 WIP 2025-09-02 18:49:58 +03:00
5ed897365f WIP 2025-09-02 18:45:46 +03:00
20ece6c64a WIP 2025-09-02 18:41:04 +03:00
ccab96403b WIP 2025-09-02 18:36:46 +03:00
2 changed files with 59 additions and 16 deletions

View File

@@ -16,7 +16,7 @@ pipx install --include-deps ansible
## Ansible struktūra (Vismaz šajā situācijā)
#### `/inventory.yml`
### /inventory.yml
Inventory failā pieraksta (Un sagrupē!) visus aktuālos serverus, to IP adreses,
kā arī, dažreiz aktuālos variables.
@@ -25,16 +25,18 @@ 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/`
### /roles/
Šajā mapē nosaka atsevišķas serveru "lomas".
Parasti visu sadala atsevišķās lomās
Parasti visu sadala atsevišķās lomās (piem. webservers, dnsservers....)
#### `/main.yml`
Faktiski šajā failā nosaka kādi roles attiecās uz kādiem hostiem.
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.
ir tas ko šī uzdevuma veidotāji vēlējās...
#### Tasks/Modules (`/roles/common/tasks/*`)
### 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`),
@@ -46,7 +48,7 @@ Piemēram `apt` modulis, lai ielādētu package, vai
Katram modulim ir kaut kādi savi iestatījumi,
tāpēc ir svarīgi skatīties dokumentāciju moduļiem.
#### Handlers and Notify
### 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*.
@@ -79,11 +81,47 @@ tad jāizmanto ansible `flush_handlers` task.
- name: Flush handlers
meta: flush_handlers
```
#### Templates
### Templates
Dažreiz ir vajadzība kādu failu dinamiski aizpildīt ar kādu informāciju.
Piemēram, šajā uzdevumā webserver gadījumā.
#### Vault
Tam var izmantot ansible templates:
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_templating.html
Principā izmanto ansible `template` moduli tā pat kā `copy` moduli.
Template modulis vienkārši pirms kopēšanas uz sistēmu to failu interpretēs
kā jinja 2 template failu. (Aipildīs viskautkādus variables utt.)
Templates arī parasti tur citā mapē atsevišķi no failiem
### Vault
Dažreiz vajag kādu failu vai variable šifrēt, lai tas nav pieejams plain tekstā,
piemēram, git repozitorijā.
Tam izmanto `ansible-vault`.
Failus var aizšifrēt ar `ansible-vault encrypt <filename>`
un tad rediģēt tādā pašā veidā vainu atšiftrējot
### Tags
Šis gan jau nebūs vajadzīgs
Drīzāk quality-of-life feature.
Noder lai ārtāk palaistu ansible lai atjauninātu tikai mazu daļu.
(Piem. BIND zone failu)
Atļauj noteiktus taskus atzīmēt ar "tag", un
Pēc tam laižot ansible var noteikt ar `--tags` kādus tagus laist.
https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_tags.html
### Variable files
#### Tags
## Kā laizt ansible?
@@ -103,4 +141,9 @@ Pēc tam var karināt klāt dažādus "karogus":
- `--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ā)
- `-J` - prasīs ansible vault paroli
Viss kopā:
```sh
ansible-playbook -i inventory.yml main.yml -u madars -k -K -C -D -J
```

View File

@@ -1,10 +1,10 @@
- name: run common tasks
hosts: all
become: true
become_user: root
gather_facts: true
hosts: all # uz kādu grupu/hostiem attiecās (all ir automātiski veidota grupa kas satur visus hostus)
become: true # vai izmantos sudo lai visu laistu kā root
become_user: root # uz kādu lietotāju pāriet ar sudo
gather_facts: true # Faktiski nav vajadzīgs, vienkārši pirms playbook sākas, savāc daudz dažādus faktus par sistēmu, un saliek tos variabļos.
roles:
- common
- common # lomas mapes nosaukums, tā kā tas rakstīts /roles/ mapē
#- name: run host-specific tasks
# hosts: all