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 00: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