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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
$ 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