Compare commits
7 Commits
19609edf42
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| c3cc24e064 | |||
| 8903eb7b58 | |||
| 5ed897365f | |||
| 20ece6c64a | |||
| ccab96403b | |||
| cbbb8b0d9a | |||
| 607e1ec577 |
73
README.md
73
README.md
@@ -16,7 +16,7 @@ pipx install --include-deps ansible
|
|||||||
|
|
||||||
## Ansible struktūra (Vismaz šajā situācijā)
|
## Ansible struktūra (Vismaz šajā situācijā)
|
||||||
|
|
||||||
#### `/inventory.yml`
|
### /inventory.yml
|
||||||
Inventory failā pieraksta (Un sagrupē!) visus aktuālos serverus, to IP adreses,
|
Inventory failā pieraksta (Un sagrupē!) visus aktuālos serverus, to IP adreses,
|
||||||
kā arī, dažreiz aktuālos variables.
|
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
|
Skat. https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html
|
||||||
|
|
||||||
#### `/roles/`
|
### /roles/
|
||||||
Šajā mapē nosaka atsevišķas serveru "lomas".
|
Š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`
|
Role sākās no `tasks/main.yml`. Piem., `/roles/common/tasks/main.yml`
|
||||||
Faktiski šajā failā nosaka kādi roles attiecās uz kādiem hostiem.
|
|
||||||
|
### /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,
|
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.
|
Ansible playbook faili ir sadalīti *task*os.
|
||||||
Katrā *task*ā var izsaukt vienu, vai vairākus moduļus (izmantojot `block`),
|
Katrā *task*ā var izsaukt vienu, vai vairākus moduļus (izmantojot `block`),
|
||||||
@@ -46,13 +48,12 @@ Piemēram `apt` modulis, lai ielādētu package, vai
|
|||||||
Katram modulim ir kaut kādi savi iestatījumi,
|
Katram modulim ir kaut kādi savi iestatījumi,
|
||||||
tāpēc ir svarīgi skatīties dokumentāciju moduļiem.
|
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.
|
Situācijā, kad izmaina kādu failu, iespējams vajag restartēt kādu servisu.
|
||||||
Šim nolūkam izmanto *handlers* un *notify*.
|
Šim nolūkam izmanto *handlers* un *notify*.
|
||||||
|
|
||||||
|
**Kas? Ko?**
|
||||||
##### Handlers
|
|
||||||
Handleri, šajā situācijā, atrodās iekš `/roles/common/handlers/main.yml`
|
Handleri, šajā situācijā, atrodās iekš `/roles/common/handlers/main.yml`
|
||||||
|
|
||||||
Šis fails ir strukturēts tā pat kā parasti playbook *task* faili,
|
Šis fails ir strukturēts tā pat kā parasti playbook *task* faili,
|
||||||
@@ -66,13 +67,13 @@ Pie kāda task var piesaistīt handler, tam pieliekot `notify: <handnler name>`
|
|||||||
(Piemērs iekš `/roles/common/tasks/syslog.yml`)
|
(Piemērs iekš `/roles/common/tasks/syslog.yml`)
|
||||||
|
|
||||||
**Kad handleri tiek laisti?**
|
**Kad handleri tiek laisti?**
|
||||||
Vai handleris tikts laists, tiek noteikts pēc attiecīgā taska exit statusa!
|
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
|
Katram *task*am ir beigu statuss. Parasti - OK/CHANGED/SKIPPED
|
||||||
|
|
||||||
Ja task beidzās kā `CHANGED`, tad handleris tiks palaists,
|
Ja task beidzās kā `CHANGED`, tad handleris tiks palaists,
|
||||||
bet ja ir `OK` vai `SKIPPED`, tad, nē.
|
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,
|
Ja ir vajadzība visus, līdz šim izsauktos, handlerus palaist ātrāk,
|
||||||
tad jāizmanto ansible `flush_handlers` task.
|
tad jāizmanto ansible `flush_handlers` task.
|
||||||
|
|
||||||
@@ -80,10 +81,47 @@ tad jāizmanto ansible `flush_handlers` task.
|
|||||||
- name: Flush handlers
|
- name: Flush handlers
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
```
|
```
|
||||||
|
### 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?
|
## Kā laizt ansible?
|
||||||
|
|
||||||
@@ -101,6 +139,11 @@ Pēc tam var karināt klāt dažādus "karogus":
|
|||||||
- `-k` - prasīs kādu SSH login paroli izmantot (ja vajag)
|
- `-k` - prasīs kādu SSH login paroli izmantot (ja vajag)
|
||||||
- `-K` - prasīs kādu SUDO paroli izmantot (ja vajadzīga)
|
- `-K` - prasīs kādu SUDO paroli izmantot (ja vajadzīga)
|
||||||
- `--check`, `-C` - tā saucamais "dry-run", kur parāda tikai kas mainīsies,
|
- `--check`, `-C` - tā saucamais "dry-run", kur parāda tikai kas mainīsies,
|
||||||
un vai būs kādas kļūdas, bet reāli neko nemainīs (nestrādās ar dažiem moduļiem)
|
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ā)
|
- `--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
|
||||||
|
```
|
||||||
|
|||||||
10
main.yml
10
main.yml
@@ -1,10 +1,10 @@
|
|||||||
- name: run common tasks
|
- name: run common tasks
|
||||||
hosts: all
|
hosts: all # uz kādu grupu/hostiem attiecās (all ir automātiski veidota grupa kas satur visus hostus)
|
||||||
become: true
|
become: true # vai izmantos sudo lai visu laistu kā root
|
||||||
become_user: root
|
become_user: root # uz kādu lietotāju pāriet ar sudo
|
||||||
gather_facts: true
|
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:
|
roles:
|
||||||
- common
|
- common # lomas mapes nosaukums, tā kā tas rakstīts /roles/ mapē
|
||||||
|
|
||||||
#- name: run host-specific tasks
|
#- name: run host-specific tasks
|
||||||
# hosts: all
|
# hosts: all
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
- name: Install basic packages
|
- name: Install basic packages
|
||||||
ansible.builtin.package:
|
ansible.builtin.package: # Šis ir moduļa FQCN (Fully Qualified Collection Name), bet var arī rakstīt vienkārši "package"
|
||||||
name:
|
name:
|
||||||
- vim
|
- vim
|
||||||
- htop
|
- htop
|
||||||
@@ -18,10 +19,19 @@
|
|||||||
dest: /etc/hosts
|
dest: /etc/hosts
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644 # Mode nosaka piekļuves atļaujas `chmod` stilā. Vienīgi jāliek sākumā ekstra nulle lai ansible saprot, ka tas ir oktāls skaitlis. Vai arī neraksta nulli, bet liek pēdiņās.
|
||||||
|
|
||||||
- name: Import syslog.yml
|
- name: Import syslog.yml
|
||||||
import_tasks: syslog.yml
|
import_tasks: syslog.yml # import_tasks atļauj importēt taskus no cita faila
|
||||||
|
|
||||||
|
# - name: Import snmp.yml
|
||||||
|
# import_tasks: snmp.yml
|
||||||
|
#
|
||||||
|
# - name: Import ldap.yml
|
||||||
|
# import_tasks: ldap.yml
|
||||||
|
#
|
||||||
|
# - name: Import share.yml
|
||||||
|
# import_tasks: share.yml
|
||||||
|
|
||||||
- name: Import webserver.yml
|
- name: Import webserver.yml
|
||||||
import_tasks: webserver.yml
|
import_tasks: webserver.yml
|
||||||
|
|||||||
0
roles/common/tasks/snmp.yml
Normal file
0
roles/common/tasks/snmp.yml
Normal file
@@ -7,9 +7,10 @@
|
|||||||
state: present
|
state: present
|
||||||
|
|
||||||
- name: Remove default website
|
- name: Remove default website
|
||||||
ansible.builtin.file:
|
ansible.builtin.file: # file moduli izmanto, lai veidotu failus un mapes.
|
||||||
path: /var/www/html
|
path: /var/www/html
|
||||||
state: absent
|
state: absent # Var arī dzēst :D
|
||||||
|
# Tur var arī likt "directory" vai "file" un kā tālāk redzams noteikt piekļuves atļaujas.
|
||||||
|
|
||||||
- name: Create default site directory
|
- name: Create default site directory
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
- name: Copy default index
|
- name: Copy default index
|
||||||
ansible.builtin.template:
|
ansible.builtin.template: # Template strādā līdzīgi kā nākošais copy task, izņemot tas ka šis uztveris failu kā jinja2 template failu.
|
||||||
src: var/www/default/index.html
|
src: var/www/default/index.html
|
||||||
dest: /var/www/default/index.html
|
dest: /var/www/default/index.html
|
||||||
owner: www-data
|
owner: www-data
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /etc/nginx/sites-enabled/default
|
path: /etc/nginx/sites-enabled/default
|
||||||
src: /etc/nginx/sites-available/default
|
src: /etc/nginx/sites-available/default
|
||||||
state: link
|
state: link # izmanto arī lai veidotu symlinks
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: 0644
|
mode: 0644
|
||||||
|
|||||||
Reference in New Issue
Block a user