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ā)
|
||||
|
||||
#### `/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,13 +48,12 @@ 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*.
|
||||
|
||||
|
||||
##### Handlers
|
||||
**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,
|
||||
@@ -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`)
|
||||
|
||||
**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
|
||||
|
||||
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.
|
||||
|
||||
@@ -80,10 +81,47 @@ tad jāizmanto ansible `flush_handlers` task.
|
||||
- name: 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?
|
||||
|
||||
@@ -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 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 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ā)
|
||||
- `-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
|
||||
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
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
|
||||
- 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:
|
||||
- vim
|
||||
- htop
|
||||
@@ -18,10 +19,19 @@
|
||||
dest: /etc/hosts
|
||||
owner: 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
|
||||
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
|
||||
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
|
||||
|
||||
- name: Remove default website
|
||||
ansible.builtin.file:
|
||||
ansible.builtin.file: # file moduli izmanto, lai veidotu failus un mapes.
|
||||
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
|
||||
ansible.builtin.file:
|
||||
@@ -20,7 +21,7 @@
|
||||
mode: 0755
|
||||
|
||||
- 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
|
||||
dest: /var/www/default/index.html
|
||||
owner: www-data
|
||||
@@ -40,7 +41,7 @@
|
||||
ansible.builtin.file:
|
||||
path: /etc/nginx/sites-enabled/default
|
||||
src: /etc/nginx/sites-available/default
|
||||
state: link
|
||||
state: link # izmanto arī lai veidotu symlinks
|
||||
owner: root
|
||||
group: root
|
||||
mode: 0644
|
||||
|
||||
Reference in New Issue
Block a user