Ansible- Wstęp

Na co dzień mam do czynienia z nienadzorowaną instalacją stacji roboczych i serwerów opartych o system Windows. Do realizacji zadań wykorzystuję Microsoft Deployment Toolkit oraz PDQ Deploy.

Pewnego dnia postanowiłem nauczyć się wykonywania deploymentu dla serwerów opartych o system Linux. Przeglądając internet w poszukiwaniu rozwiązań wspierających zarządzanie oprogramowaniem/usługami trafiłem na różne rozwiązania, takie jak: Puppet, Chef, SaltStack oraz Ansible. Po odrzuceniu rozwiązań, które potrzebowały do działania zainstalowanego agenta po stronie stacji klienckiej i z tego powodu nie nadawały się do tego typu przedsięwzięcia. Ostatecznie wybrałem rozwiązanie, które miało dla mnie najlepszą dokumentacją- Ansible.

Czym jest…

Ansible jest narzędziem do automatyzacji wdrażania aplikacji i zarządzania konfiguracją. Głównie wykorzystywane jest jako narzędzie typu push, krótko mówiąc wydajemy nim komendy, które wykonywane są na stacjach zarządzanych (klient). Nie korzysta z żadnych agentów i nie wymaga dodatkowych niestandardowych infrastruktur bezpieczeństwa, więc jest łatwy w obsłudze. Używa bardzo prostego języka YAML, który służy do pisania przejrzystych playbook’ów. By zacząć pracę nie potrzeba zbyt wiele. Jeżeli mamy program do obsugi terminali (Putty, mRemoteNG), edytor tekstowy (vim, nano) i dodatkowo systemem kontroli wersji (GIT, Subversion), aby śledzić zmiany zawartości to w zasadzie mamy wszystko by zacząć.

Do łączenia stacji zarządzającej z klientami nie są potrzebne hasła roota zapisywane w pliku konfiguracyjnym, wystarczy proste połączenie SSH przy pomocy wygenerowanego wcześniej klucza. Można również użyć innych opcji, takich jak Kerberos lub systemy zarządzania tożsamością.

Jak działa ?

Z maszyny zarządzającej wydajemy komendy, które wykonujemy na pojedynczych hostach bądź grupach hostów, zdefiniowanych wcześniej. Polecenia mogą być wydawane pojedynczo lub jako zbiór komend zdefiniowanych w playbook’u.

 

Przykład:

Wykonanie komendy ping na grupie serwerów test:

ansible -m ping test

Zwróci:

Wykonanie playbooka main.yml z określoną grupą docelową oraz czynnościami, które ma wykonać:

ansible-playbook main.yml

Zwróci: