Ansible: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Ptomusk (talk | contribs)
Ptomusk (talk | contribs)
Line 28: Line 28:
Süsteemne seadistusfail on ''/etc/ansible/ansible.cfg'', kuid iga kasutaja võib isiklike seadete hoidmiseks tekitada faili  ''.ansible.cfg'' enda kodukataloogi. Kasutaja kodukataloogis olevad seaded on süsteemse seadistusfaili suhtes ülemuslikud.<ref name="ansible_man">ansible-playbook man page, http://linux.die.net/man/1/ansible-playbook</ref>
Süsteemne seadistusfail on ''/etc/ansible/ansible.cfg'', kuid iga kasutaja võib isiklike seadete hoidmiseks tekitada faili  ''.ansible.cfg'' enda kodukataloogi. Kasutaja kodukataloogis olevad seaded on süsteemse seadistusfaili suhtes ülemuslikud.<ref name="ansible_man">ansible-playbook man page, http://linux.die.net/man/1/ansible-playbook</ref>


'''Järgnevad muudatused tuleb sisse viia kas kasutaja seadistusfailis või süsteemses seadistusfailis.'''<br/>
'''Need muudatused on (rangelt) soovituslik sisse viia kas kasutaja seadistusfailis või süsteemses seadistusfailis.'''<br/>
: '''NB: Järgnevad muudatused asuvad sektsioonis''' '''''[defaults]'''''''!'''
Seadistatavaid sihtmasinaid kirjeldava faili teekonna muutmine
hostfile=~/ansible/hosts
Kasutatava protokolli muutmine [[SSH]]'ks et vähendada turvariske.<ref name="ansible_and_salt"/> ''Autori isikliku kogemuse põhjal on [[Python]]'i [[paramiko]] teek kapriisne ning ei pruugi sobida keerukamateks lahendusteks''.
Kasutatava protokolli muutmine [[SSH]]'ks et vähendada turvariske.<ref name="ansible_and_salt"/> ''Autori isikliku kogemuse põhjal on [[Python]]'i [[paramiko]] teek kapriisne ning ei pruugi sobida keerukamateks lahendusteks''.
  transport=ssh
  transport=ssh
Juhul kui teil ei ole seadistatud [[OpenSSH:_võtmetega_autentimine|SSH võtmega autentimine]] on vajalik muuta ssh ühenduse seadistust, lubamaks parooliga autentimist.
Juhul kui teil ei ole seadistatud [[OpenSSH:_võtmetega_autentimine|SSH võtmega autentimine]] on vajalik muuta ssh ühenduse seadistust, lubamaks parooliga autentimist.
: '''NB: Järgnevad muudatused asuvad sektsioonis''' '''''[ssh_connection]'''''''!'''
   ssh_args=-o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r
   ssh_args=-o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r
Seadistatavaid sihtmasinaid kirjeldava faili teekonna muutmine
Kasutaja sedistusfaili eeldatav sisu pärast muudatusi
[defaults]
transport=ssh
  hostfile=~/ansible/hosts
  hostfile=~/ansible/hosts
[ssh_connection]
ssh_args=-o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r


Tekitame eelmainitud kataloogi ja faili
Tekitame eelmainitud kataloogi ja faili

Revision as of 02:03, 12 January 2014

Tutvustus

Ansible on vabavaraline (GPL)[1] konfiguratsiooni ja seadistuse haldamise tarkvaraplatvorm.[2]

Konfiguratsiooni hoidmiseks kasutatakse YAML'i faile mis võivad olla omavahel hierarhiliselt seotud.[3] Ansible on kirjutatud Python'is ning seadistuse vahendamiseks kasutatakse SSH protokolli (Python'i paramiko teeki või OS'i ssh käsku rakendades). Hallatava masina eelduseks on sissetulevate SSH ühenduste lubamine ja Python'i interpretaatori olemasolu (vähemalt versioon 2.4), eraldiseisvat klienti või agenti ei ole.[4]

Tarkvara loojaks on Michael DeHaan, kes eelnevalt on loonud Cobbler'i ning olnud Puppet'i arendaja.[5]

Nimetus "Ansible" on pärit O.S.Card'i raamatust Enderi mäng, kus kirjeldatakse samanimelist valguse kiirusest kiiremat suhtlusprotokolli.[6]

Ansible'ile on võimalik osta ka ärikliendi tuge.[7]

Erinevused levinud alternatiividega

Ansible peamine erinevus oma konkurentidega Puppet ja Chef on agendi kui sellise puudumine. Klientide seadistamiseks kasutatakse juba (enamus juhtudel) olemasolevaid vahendeid - SSH ja Python. [8]

SaltStack on Ansible'ga vägagi sarnane, ent erineb klientidega suhtlemise osas, kasutades 0mq'd ning täiendades seda enda poolt AES krüpteeringuga (milles võib aeg-ajalt esineda vigasid[9]). Ansible poolt kasutatav SSH ei lisa süsteemi täiendavaid ründevektoreid.[10]

Kasutamine

Paigaldamine

Ansible paigaldamiseks on võimalik tõmmata see otse projekti GitHub'i repost või paigaldada operatsioonisüüsteemi pakihaldustarkvara abil.[4]

Ansible paigaldamine APT'i abil
 sudo apt-get install ansible
Versiooni (ja paigaldatuse kontroll)
 ansible --version

Esmane seadistamine

Süsteemne seadistusfail on /etc/ansible/ansible.cfg, kuid iga kasutaja võib isiklike seadete hoidmiseks tekitada faili .ansible.cfg enda kodukataloogi. Kasutaja kodukataloogis olevad seaded on süsteemse seadistusfaili suhtes ülemuslikud.[11]

Need muudatused on (rangelt) soovituslik sisse viia kas kasutaja seadistusfailis või süsteemses seadistusfailis.

NB: Järgnevad muudatused asuvad sektsioonis [defaults]''!

Seadistatavaid sihtmasinaid kirjeldava faili teekonna muutmine

hostfile=~/ansible/hosts

Kasutatava protokolli muutmine SSH'ks et vähendada turvariske.[10] Autori isikliku kogemuse põhjal on Python'i paramiko teek kapriisne ning ei pruugi sobida keerukamateks lahendusteks.

transport=ssh

Juhul kui teil ei ole seadistatud SSH võtmega autentimine on vajalik muuta ssh ühenduse seadistust, lubamaks parooliga autentimist.

NB: Järgnevad muudatused asuvad sektsioonis [ssh_connection]''!
 ssh_args=-o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r

Kasutaja sedistusfaili eeldatav sisu pärast muudatusi

[defaults]
transport=ssh
hostfile=~/ansible/hosts
[ssh_connection]
ssh_args=-o PasswordAuthentication=yes -o ControlMaster=auto -o ControlPersist=60s -o ControlPath=/tmp/ansible-ssh-%h-%p-%r

Tekitame eelmainitud kataloogi ja faili

mkdir ~/ansible && touch ~/ansible/hosts

Lisame sihtmasinate faili mõned kirjed:

[main]
192.168.1.1
children:webservers

[webservers]
192.168.56.1

Kirjete selgitus:

[main] - Loogiline grupp sihtmasinaid
192.168.1.1 - Sihtmasin mis kuulub gruppi main
children:webservers - Kõik grupi webservers masinad kuuliuvad ka gruppi main
[webservers] - Loogiline grupp sihtmasinaid
192.168.56.1 - Sihtmasin mis kuulub gruppi webservers (ja main)

Süsteemide seadistuse kirjeldamine

Loome kataloogi kus hoida seadistuse kirjelduse kogumeid ehk Ansible mõistes playbook'e

mkdir ~/ansible/playbooks

Tekitame põhifaili kus hoida üldist seadistust

touch ~/ansible/playbooks/main.yml
NB: Näidete kopeerimisel tuleb olulist tähelepanu pöörata taanetele, kuna need on YAML'i süntaksi osa![12]

Lisame sellese faili järgnevad read

---
- hosts: main
  user: student
  gather_facts: no
  sudo: yes
  tasks:
  - name: Copy MOTD
    copy: src=~/ansible/files/motd.txt dest=/etc/motd backup=yes

- include: ~/ansible/playbooks/apache.yml

...

Kirjete selgitus:

--- - YAML'i süntaksis faili algus
- hosts: main - Selles failis määratletud seadistused rakendadatkse sihtmasinatele, mis kuuluvad gruppi main
user: student - Kasutajanimi, kellena sihtmasinasse sisse logitakse, ehk SSH kasutaja
gather_facts: no - Sihtmasinate kohta käiva info kogumise keelamine: käesoleva näite raames ei ole see vajalik ning säästab käivitamisel aega
sudo: yes - Seadistuse elluviimiseks eskaleerutakse juurkasutaja õigustesse
tasks: - Sellele reale järgnevad seadistussammude kirjeldused
- name: Copy MOTD - Konkreetse seadistussammu nimi on Copy MOTD
(Igal seadistussammul peab olema nimi ning sellele on võimalik soovi korral viidata)
copy: src=~/ansible/files/motd.txt dest=/etc/motd backup=yes - Kopeerida kohaliku masina fail ~/ansible/files/motd.txt sihtmasinasse, nimega /etc/motd ning varundada praegune sihtmasinas eksisteeriv fail[13]
- include: ~/ansible/playbooks/apache.yml - Impordi seadistusfail ~/ansible/playbooks/apache.yml ja rakenda ka selles olevad seadistused
... - YAML'i süntaksis faili lõpp

Loome kataloogi kus hoida sihtmasinatesse kopeeritavaid faile

mkdir ~/ansible/files

Loome MOTD faili, mida sihtmasinatesse kopeerida

echo "This is the Ansible MOTD" > ~/ansible/files/motd.txt

Tekitame faili, milles hoida Apache veebiserveri seadistust

touch ~/ansible/playbooks/apache.yml
NB: Näidete kopeerimisel tuleb olulist tähelepanu pöörata taanetele, kuna need on YAML'i süntaksi osa![12]

Lisame sellese faili järgnevad read

 ---
 - hosts: webservers
   user: student
   gather_facts: no
   sudo: yes
   tasks:
   - name: install apache and php packages
     apt: pkg=$item state=latest update_cache=yes
     with_items:
     - apache2
     - php5
     - php5-cli
     - php-pear
     notify: restart apache
   - name: install oci8
     command: 'echo -e "instantclient,/usr/lib/oracle/11.2/client64/lib\n" | pecl install oci8' creates=/usr/lib/php5/20090626/oci8.so
     notify: restart apache
   - name: configure oci8
     copy: src=../files/etc/php5/conf.d/oci8.ini dest=/etc/php5/conf.d/oci8.ini
     notify: restart apache
   - name: set php memory limit
     ini_file: dest=/etc/php5/apache2/php.ini option=memory_limit value=512M section=PHP
     notify: restart apache
 
   handlers:
   - name: restart apache
     service: name=apache2 enabled=yes state=restarted
 
 ...

Kirjete selgitus:

Süsteemide seadistamine

Käivitame playbooki:

 ansible-playbook -k -K ~/ansible/playbooks/apache.yml

Sisestame ssh ja sudo parooli ning mõne aja pärast saame tagasisidet teostatud toimingute kohta:

 SSH password: 
 sudo password: 
 PLAY [webservers] ********************* 
 TASK: [install apache and php packages] ********************* 
 changed: [192.168.56.1] => (item=apache2,php5,php5-cgi,php5-cli,php5-curl,php5-ldap)
 PLAY RECAP ********************* 
 192.168.56.1                   : ok=1    changed=1    unreachable=0    failed=0

Kokkuvõte

Kasulikk materjale

Kasutatud kirjandus

Autorid

Silver Vesi AK31
Peeter Tomusk AK41