Erinevus lehekülje "Ansible" redaktsioonide vahel
(→Playbook) |
|||
255. rida: | 255. rida: | ||
- name: install postfix | - name: install postfix | ||
apt: name=postfix state=present | apt: name=postfix state=present | ||
+ | |||
+ | ===Ansible vault=== | ||
+ | |||
+ | Ansible vault pakub võimaluse mingeid olulisemaid paroole ja faile. | ||
+ | Tavaliselt kürpteeritakse group_vars kaustas olevad failid. Paroolifail, automaatseks | ||
+ | lahtikrüpteerimiseks tuleb süsteemis paigaldada /root/.ansible/pgpool-ansible/vault_password faili | ||
+ | |||
+ | Ühe yms faili krüpteerimiseks | ||
+ | |||
+ | ansible-vault encrypt defaults/main.yml | ||
+ | |||
+ | Seejärel küsib programm kaks korda parooli ja krüpteerib faili ära. Selle muutmiseks on käsk | ||
+ | |||
+ | ansible-vault edit defaults/main.yml | ||
+ | |||
+ | Editori seadmistamiseks mis käivitatakse on keskkonnamuutuja $EDITOR. Käsuga | ||
+ | |||
+ | ansible-vault encrypt_string 'this is a plaintext string' --name 'some_string' | ||
+ | |||
+ | Saab krüpteerida ka lihtsalt ridu. | ||
+ | |||
+ | ===Lingid=== | ||
Redaktsioon: 9. november 2018, kell 02:36
Sisukord
Paigaldus
# apt-get install ansible
Kõisse masinaisse tuleb paigaldada SSH võti
# ssh-keygen -t rsa'
Ja kopeerime järgneva käsuga ükshaaval kõigisse masinaisse
# ssh-copy-id -i .ssh/id_rsa.pub kautaja@vm1
Kliendi defineerimine toimub failis /etc/ansible/hosts näiteks lisame ühe kliendi gruppi test
[test] 10.20.0.20
Neid gruppe võib teha terve hulga, nt kõik masinad ära jaotada opsüsteemide järgi
[debian] vm1 vm2 vm3 [centos] confluence vm-server1 gitlab [ubuntu] trusty-mirror media-centre nas
Nimega defineerimise korral tuleb siis muidugi lisada hosts faili vastav seos
Käsurealt kasutamine
Ansible kasutab enamuse asjade tegemiseks mooduleid. Nende abil paigaldab ta tarkvara, kopeerib faile jne. Näiteks kasutame moodulit ping
Kõikide nodede korrasoleku kontroll
# ansible all -m ping
Küsime nodedelt hostname käsku
# ansible -m shell -a "hostname" all
Samamoodi võib käsurealt otse teha ka jõhkramaid toiminguid, nt midagi installida
# ansible all -s -m shell -a 'apt-get install nginx'
Kindlasgrupis käskude käivitamiseks
# ansible debian -m ping
Kõigi kasutatavate moodulite nimekirja leiab https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
Playbook
Playbookid on .yml failid, kus defineeritakse Ansible tegevused ja tegevuste järjekord. Näiteks lihtne playbook mis paigaldab ngxinxi apt moodulit kasutades ning paneb selle tööle.
--- - hosts: debian tasks: - name: Installs nginx web server apt: pkg=nginx state=installed update_cache=true notify: - start nginx handlers: - name: start nginx service: name=nginx state=started
Nende käivitamiseks
# ansible-playbook test.yml
Kindlas grupis serveritele käivitamiseks
# ansible-playbook -l debian test.yml
Keerukam lahendus, mis juba lisaks paigaldab vaikimisi nginx konfi ja tõmbab alla ka gitist veebiserveri sisu
--- - hosts: debian sudo: yes tasks: - name: paigaldame nginx apt: name=nginx state=installed update_cache=yes - name: loome nginxile konfiguratsiooni template: src=templates/nginx.conf.j2 dest=/etc/nginx/nginx.conf notify: restart nginx - name: paigaldame veebiserverisse sisu git: repo=https://github.com/jweissig/episode-47.git dest=/usr/share/nginx/html/ version=release-0.01 - name: start service: name=nginx state=started handlers: - name: restart nginx service: name=nginx state=restarted
Kolmas näide
--- - hosts: debian tasks: - name: "Install Apache, MySQL, and PHP5" apt: name=Mall:Item state=present with_items: - apache2 - mysql-server - python-mysqldb - php5 - php-pear - php5-mysql - name: "Turn on Apache and MySQL and set them to run on boot" service: name=Mall:Item state=started enabled=yes with_items: - apache2 - mysql - name: Create a test database mysql_db: name=testDb state=present - name: Create a new user for connections mysql_user: name=webapp password=mypassword priv=*.*:ALL state=present
Template kasutamine
Templatedega saab luua vaikekonfe, mis paigaldamise ajal täidetakse vastavalt masinale sobiva infoga. Näiteks haproxyle konfi puhul käiks see järgnevalt
Esimesena tuleb luua templaatide kataloog
mkdir templates
Seejärel tekitame haproxy konfiguratsiooni
nano templates/haproxy.cfg
Konfi lisame järgnevad read
global log 127.0.0.1 local0 notice maxconn 2000 user haproxy group haproxy defaults log global mode http option httplog option dontlognull retries 3 option redispatch timeout connect 5000 timeout client 10000 timeout server 10000 listen Mall:Haproxy app name 0.0.0.0:80 mode Mall:Haproxy mode stats Mall:Haproxy enable stats {% if haproxy_enable_stats == 'enable' %} stats uri /haproxy?stats stats realm Strictly\ Private {% for user in haproxy_stats_users %} stats auth Mall:User.username:Mall:User.password {% endfor %} {% endif %} balance Mall:Haproxy algorithm option httpclose option forwardfor {% for server in haproxy_backend_servers %} server Mall:Server.name Mall:Server.ip:Mall:Server.port Mall:Server.paramstring {% endfor %}
Järgmisena defineerime konfitemplates olevad muutujad playbooki
vars: haproxy_app_name: myapp haproxy_mode: http haproxy_enable_stats: enable haproxy_algorithm: roundrobin haproxy_backend_servers: - {name: server1, ip: 10.133.181.247, port: 80, paramstring: cookie A check} - {name: server2, ip: 10.133.186.46, port: 80, paramstring: cookie A check} haproxy_stats_users: - {username: joe, password: soap}
Ja kõige viimasena seome konfi ja template kokku
- name: Update HAProxy config template: src=templates/haproxy.cfg dest=/etc/haproxy/haproxy.cfg backup=yes
Moodulid
Ansible sisaldab lisaks suurt hulka mooduleid praktiliselt kõige tegemiseks. Moodulite nimekirja näeb
# ansible-doc -l
Näiteks saab importida mooduli abil postgresi dump faili
--- - hosts: postgres-server tasks: - name: Restore db server postgresql_db: name=example state=import target=/example.sql
Shell mooduli kasutamine IP aadressi saamiseks
- name: Get the host part of the IP shell: host Mall:Ansible fqdn | awk '{print $4}' register: host_ip
Hiljem võib seda töödelda
{{ host_ip.stdout.split('.')[3] }}
Samuti on võimalik apache veebiserverit seadistada spetsiifilise mooduli abil
- name: enabled mod_rewrite apache2_module: name=rewrite state=present
Postfixi installimisel küsimustele vastamine
--- - name: Set Postfix option hostname debconf: name=postifx question="postfix/mailname" value="sandbox" vtype="string" - name: Set Postfix option type as internet site debconf: name=postfix question="postfix/main_mailer_type" value="'Internet Site'" vtype="string" - name: install postfix apt: name=postfix state=present
Ansible vault
Ansible vault pakub võimaluse mingeid olulisemaid paroole ja faile. Tavaliselt kürpteeritakse group_vars kaustas olevad failid. Paroolifail, automaatseks lahtikrüpteerimiseks tuleb süsteemis paigaldada /root/.ansible/pgpool-ansible/vault_password faili
Ühe yms faili krüpteerimiseks
ansible-vault encrypt defaults/main.yml
Seejärel küsib programm kaks korda parooli ja krüpteerib faili ära. Selle muutmiseks on käsk
ansible-vault edit defaults/main.yml
Editori seadmistamiseks mis käivitatakse on keskkonnamuutuja $EDITOR. Käsuga
ansible-vault encrypt_string 'this is a plaintext string' --name 'some_string'
Saab krüpteerida ka lihtsalt ridu.
Lingid
https://github.com/randohinn/KnowHow/blob/master/docs/Vorgurakendused/ansible.rst
https://github.com/asjalik/ansible
http://docs.ansible.com/ansible/latest/proxmox_module.html
http://docs.ansible.com/ansible/latest/mysql_db_module.html
https://github.com/rhwlo/ansible-playbooks/blob/master/mailserver.yml
https://github.com/asjalik/ansible eestikeeles