[[oktatas:linux:konfiguraciokezeles:ansible:playbook|< Playbook]]
====== Ansible-playbook kezdés ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2019
* [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: http://szit.hu
===== Az ansible-playbook =====
Az ansible-playbook esetén egy YAML típusú fájlban leírjuk
a célgépek kívánt állapotát, majd az ansible-playbook paranccsal
elindítjuk a célgépek megfelelő állapotba hozását. A gépek
állapotát leíró fájlt nevezhetjük playbook-nak.
===== Előkészítés =====
A playbook használata során használhatjuk a központi ///etc/ansible/ansible.cfg//
konfigurációs fájlt, vagy írhatunk saját konfigurációs fájlt a //~/.ansible.cfg//
állományban, de a helyi könyvtárban is létrehozhatunk egyet. Mi ez utóbbit fogjuk
követni.
Hozzunk létre egy munkakönyvtárat:
$ mkdir szerverek
Globális konfigurációs fájl helyett itt fogunk egyet létrehozni.
(Van aki egyszerűen lemásolja a /etc/anisble könyvtárat a munkakönyvtárba.)
$ cd szerverek
$ nano ansible.cfg
Az ansible.cfg tartalma:
[defaults]
inventory = hosts
A konfigurációs fájlban közöltük, hogy az aktuális könyvtárban
fogunk létrehozni egy hosts fájlt, ezt használjuk.
Hozzuk létre hosts fájlt:
$ nano hosts
Tartalma:
gep1
gep2
gep3
Ha név alapján nem érhetők el a szerverek, akkor használjunk IP címet.
===== Playbook készítése =====
A playbook egy YAML formátumú állomány, amelyben leírjuk a távoli gép
elérni kívánt állapotát.
A playbook-t mindig a célgépek csoportnevének megadásával kezdjük. Ezt követően adjunk meg
a feladatokat. A feladatokat nevükkel kezdjük. Az alábbi példa egy
távoli Debianos, gep1 nevű gépen telepíti az apache webszervert.
---
- hosts: gepek1
remote_user: janos
tasks:
- name: Webszerver telepítése
apt:
name: apache2
state: present
update_cache: yes
become: yes
===== Indítás =====
A telepítés a három gépre ezek után:
ansible-playbook setup_apache.yml
A parancsnak megadható hosts fájl, a -i kapcsolóval:
ansible-playbook -i hostfile setup_apache.yml
Megadhatunk egyetlen gépet is:
ansible-playbook -i "gep1," setup.yml
A vessző nagyon fontos, mivel ebből derül ki, hogy egy listáról van szó,
nem fájlnévről.
IP címet is megadhatunk:
ansible-playbook -i "192.168.10.3," setup.yml
Az idézőjelek is elhagyhatók:
ansible-playbook -i 192.168.10.3, setup.yml
===== Csomagkezelés =====
- name: .deb csomag telepítése
apt:
deb: /tmp/csomag.deb
- name: Nem szükséges függőségek törlése
apt:
autoremove: yes
- name: A vmi nevű csomag törlése
apt:
name: vmi
state: absent
===== Csoportok és felhasználók =====
Célunk, hogy felvegyünk egy dev nevű csoportot, majd egy kati nevű
felhasználót, akit elhelyezünk a dev csoportban.
---
- hosts: all
remote_user: janos
tasks:
- name: Dev csoport
group:
name: dev
state: present
become: yes
- name: Felhasználó felvétele
user:
name: kati
comment: Pereces Katalin
shell: /bin/bash
password: "{{'titok' | password_hash('sha512', 'soso')}}"
become: yes
Felhasználó törlése:
---
- hosts: all
remote_user: janos
tasks:
- name: Felhasználó törlése
user:
name: kati
state: absent
remove: yes
become: yes
===== Fájlok másolása =====
==== Másolás távoli gépre ====
A kontrollgépről szeretnénk egy állomány a gépekre másolni.
---
- hosts: all
remote_user: janos
tasks:
- name: Fájl feltöltése (másolása) a gépekre
copy:
src: /home/janos/adat.txt
dest: /srv/adat.txt
become: yes
==== A távoli gépeken belül fájlok másolása ====
Tulajdonképpen egy plusz sort kell beillesztenem:
---
- hosts: all
remote_user: janos
tasks:
- name: Fájl másolása a gépeken
copy:
src: /home/janos/adat.txt
dest: /srv/adat.txt
remote_src: yes
become: yes
===== Fájlok attribútumai =====
Fájlok attribútumait, csak az ansible 2.3 verziójától lehet ilyen formában állítani;
a Debian 9 verziója, viszont csak a 2.2 tartalmazza. Ha használni akarjuk, akkor
telepítsünk újabbat.
---
- hosts: all
remote_user: janos
tasks:
- name: Fájl attribútum beállítása
file:
path: /srv/adat.txt
attr: +i
become: yes
Ha el akarjuk venni az i-t:
attr: -i
===== Tetszőleges parancs végrehajtása =====
---
- hosts: all
remote_user: janos
tasks:
- name: Parancs végrehajtása
command: "chattr +i adat.txt"
become: yes
===== Végrehajtás helyi gépen =====
---
hosts: localhost
gather_facts: no
tasks:
- name: ide jöhetnek a műveletek
...