Wykład ze styczniowego spotkania grupy UW@IT pt. "Ansible w praktyce".
Ansible jest narzędziem wykorzystywanym do automatyzacji codziennych działań związanych z tworzeniem oraz utrzymaniem infrastruktury IT.
2. Potrzeba automatyzacji
• Duża infrastruktura i problem skali
• Skomplikowany proces instalacji i konfiguracji
środowiska
• Disaster recovery
• Usługi w chmurze / OnDemand
UW@IT 21.01.2015
10. Przykładowe moduły
• commands: command, raw, script, shell
• cloud: azure, digital_ocean, docker, ec2, rax
• database: (mysql|postgres)_(db|user), redis
• files: copy, fetch, file, lineinfile, template, unarchive
• monitoring: nagios, monit, zabbix
• packaging: apt, gem, homebrew, macports, npm, pip, yum itd.
• source control: bzr, git, subversion
• system: cron, filesystem, group, mount, service, user
• i wiele wiele innych, plus bardzo łatwo pisać swoje moduły
UW@IT 21.01.2015
11. Playbooks
• Struktura opisująca konfigurację oraz pożądany stan hostów,
którymi zarządzamy
• Odpowiednik cookbook z chef
• Pliki w formacie YAML, „human-readable”
• Możemy korzystać z pythonowego systemu szablonów Jinja2
• Wiele sposobów na ich organizację, dzięki czemu służą w
prostych oraz skomplikowanych środowiskach
• To właśnie tu możemy zobaczyć całe piękno i filozofię ansible!
UW@IT 21.01.2015
15. Playbook - directory layout
production.ini - Nasze inventory dla środowiska produkcyjnego
staging.ini oraz testowego (staging)
group_vars/ - Zmienne dla całych grup hostów. W naszym
application przypadku dla grup application oraz database
database
host_vars/ - Zmienne zdefiniowane tylko dla konkretnego
app01 hosta
library/ - Jeśli korzystamy z własnych modułów to jest
my-module/ to idealny katalog na ich umieszczenie
site.yml - Nasze playbooki
application.yml
database.yml
roles/ - Katalog, w którym będziemy przechowywać nasze
chruby/ wszystkie role. Poprzez rolę możemy tu rozumieć
nginx/ funkcje jakie będzie posiadał nasz serwer.
our-application/ Dla przykładu serwer może mieć funkcje bazy
postgresql/ danych postgresql lub serwer www nginx.
ruby-install/
UW@IT 21.01.2015
26. O czym jeszcze warto
wspomieć?
• Var Promts
• Variables, Loops, Conditionals, Jinja2
• Tags
• Facts Caching
• Asynchronous Actions and Polling
• Rolling Update, Maximum Failure Percentage, Delegation, Run
Once
• Ansible Galaxy
UW@IT 21.01.2015