[[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 ...