Automatyzacja zadań w obszarze IT jest niezwykle istotna, gdy skala środowiska rośnie i często ulega zmianom. Do tych zadań można wykorzystać wiele dostępnych rozwiązań takich jak Puppet, Chef czy Ansible. Poniżej w kilku krokach przedstawię jak zainstalować Ansible oraz w jaki sposób rozpocząć z nim pracę.
Instalacja Ansible
Pracę z Ansible można rozpocząć instalując go za pomocą narzędzia pip dostępnego w Python’ie. W poniższym przykładzie wykorzystano również środowiska wirtualne, co przedstawiałem w innym poście na moim blogu:
$ mkdir ansible $ cd ansible $ virtualenv venv $ source venv/bin/activate $ pip install ansible
Konfiguracja podstawowa
Celem rozpoczęcia pracy konieczne jest utworzenie pliku konfiguracyjnego zawierającego listę maszyn, które będą konfigurowane przez Ansible. W poniższym przykładzie oprócz adresu IP ustawiony został port dla SSH oraz nazwa użytkownika, dla którego będzie inicjowana sesja SSH.
$ sudo mkdir /etc/ansible/ $ sudo vi /etc/ansible/hosts $ cat /etc/ansible/hosts 136.243.182.167 ansible_port=22 ansible_user=username
Sprawdzenie komunikacji z serwerem
Po skonfigurowaniu maszyn warto sprawdzić komunikacje z serwerami za pomocą polecenia, gdzie opcja -m służy do wskazania jaki moduł ma zostać wykonany (w tym przypadku moduł ping):
$ ansible all -m ping 136.243.182.167 | SUCCESS => { "changed": false, "failed": false, "ping": "pong" }
Wykonanie komend shell’owych
Ansible umożliwia również wykonywanie standardowych komend shell’owych za pomocą opcji -a:
$ ansible all -a "du -sh /home/username" $ ansible all -a "ps -ef"
Pierwszy Playbook
Konfiguracja procedury wdrożenia zapisania w języku opracowanym w Ansible w formacie YAML określana jest jako tzw. Playbook. Poniżej przykład prostego Playbook’a można wykorzystać do sprawdzenia komunikacji z serwerem zdefiniowanym w /etc/ansible/hosts:
--- - hosts: 136.243.182.167 tasks: - name: test connection ping:
Uruchomienie Playbook’a
$ ansible-playbook playbook-test-connection.yml PLAY [136.243.182.167] ********************************************************************************************************************************************************************************************** TASK [Gathering Facts] ******************************************************************************************************************************************************************************************** ok: [136.243.182.167] TASK [test connection] ******************************************************************************************************************************************************************************************** ok: [136.243.182.167] PLAY RECAP ******************************************************************************************************************************************************************************************************** 136.243.182.167 : ok=2 changed=0 unreachable=0 failed=0