Erinevus lehekülje "Ansible" redaktsioonide vahel
139. rida: | 139. rida: | ||
debug: msg="ip of testmachine is {{ ip_test.stdout }}" | debug: msg="ip of testmachine is {{ ip_test.stdout }}" | ||
+ | |||
+ | '''Template kasutamine''' | ||
+ | |||
+ | 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 {{haproxy_app_name}} 0.0.0.0:80 | ||
+ | mode {{haproxy_mode}} | ||
+ | stats {{haproxy_enable_stats}} | ||
+ | {% if haproxy_enable_stats == 'enable' %} | ||
+ | stats uri /haproxy?stats | ||
+ | stats realm Strictly\ Private | ||
+ | {% for user in haproxy_stats_users %} | ||
+ | stats auth {{user.username}}:{{user.password}} | ||
+ | {% endfor %} | ||
+ | {% endif %} | ||
+ | balance {{haproxy_algorithm}} | ||
+ | option httpclose | ||
+ | option forwardfor | ||
+ | {% for server in haproxy_backend_servers %} | ||
+ | server {{server.name}} {{server.ip}}:{{server.port}} {{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 kige 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 sisaldab lisaks suurt hulka mooduleid praktiliselt kõige tegemiseks. Moodulite nimekirja näeb |
Redaktsioon: 23. august 2017, kell 01:31
Install
# apt-get install ansible
Kõisse masinaisse tuleb paigaldada SSH võti
# ssh-keygen -t rsa
Kliendid vaja defineerida
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 [fedora] netflix [centos] confluence vm-server1 gitlab [ubuntu] trusty-mirror media-centre nas
Käsurealt kasutamine
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'
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
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: linode remote_user: yourusername become: yes become_method: sudo 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
Ip aadressi muutujaks tegemine playbookis
- name: get IP of testmachine shell: "dig +short testmachine.test.dom| awk '{ print ; exit }'" register: ip_test always_run: yes changed_when: False debug: msg="ip of testmachine is Mall:Ip test.stdout"
Template kasutamine
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 kige 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
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