Pod koniec ubiegłego roku przedstawiłem na swoim blogu post na temat instalacji Ansible i jego podstawowej konfiguracji. Znając podstawy Ansible czas zapoznać się z bardziej zaawansowanymi operacjami, które przedstawiłem poniżej razem z przykładami komend i kodu w Ansible, w tym również operacje wykorzystujące dodatkowe narzędzia takie jak Anisble Galaxy.

Wyświetlenie dokumentacji dla modułów Link to heading

ansible-doc -l

Wyświetlenie listy urządzeń w Ansible Inventory Link to heading

ansible-inventory --list

Uruchomienie modułu ping Link to heading

W poleceniu uruchamiającym wybrany moduł można podać nazwę grupy urządzeń, na których ma on zostać wykonany (w tym przypadku są to odpowiednio grupy local, remote i all):

ansible local -m ping
ansible remote -m ping
ansible all -m ping

Przykład Inventory Link to heading

more /etc/ansible/hosts

[local]
localhost ansible_connection=local

[remote:vars]
ansible_password=secret_password_on_remote_host
ansible_sudo_pass=czechseb

[remote]
remote

Przykład definicji zmiennych dla grupy Link to heading

sudo cat /etc/ansible/group_vars/remote
ansible_port: 9022

Przykłady bezpośredniego (ad-hoc) wykonania komend Link to heading

ansible all -m raw -a "apt-get update" -b -K
ansible all -m raw -a "apt-get install python-simplejson" -b -K
ansible all -m raw -a "apt-get install python-simplejson" -u czechseb -b -K
ansible all -m raw -a "ip addr | grep inet"
ansible remote -m raw -a "reboot" -b -K

ansible remote -m apt -a "name=vim state=present" -b -K
ansible remote -m apt -a "name=vim state=present update-cache=yes" -b -K
ansible remote -m apt -a "name=vim state=present update_cache=yes" -b -K
ansible remote -m apt -a "name=vim state=absent update_cache=yes" -b -K

Wyświetlenie listy faktów dla urządzeń w wybranej grupie Link to heading

ansible remote -m setup

Uruchomienie playbook’a, wyświetlenie listy zadań i rozpoczęcie od wybranego zadania Link to heading

ansible-playbook create_local_file_and_directory_copy_file_on_remote_and_change.yml
ansible-playbook create_local_file_and_directory_copy_file_on_remote_and_change.yml --list-tasks
ansible-playbook create_local_file_and_directory_copy_file_on_remote_and_change.yml --start-at-task "copy file done to remote"

Uruchomienie playbook’a na innym repozytorium urządzeń niż domyślne Link to heading

ansible-playbook site.yml -i roles/common/inventory

Przygotowanie szkieletu plików i folderów dla roli za pomocą Ansible Galaxy Link to heading

ansible-galaxy init web-server

Sprawdzenie playbook’a Link to heading

ansible-playbook --check site.yml

Wyświetlenie różnic w konfiguracji na urządzeniu a tej wdrażanej w ramach playbook’a Link to heading

ansible-playbook site.yml --diff

Pokazania plików konfiguracyjnych Ansible Link to heading

ansible-config view

Nadpisanie zmiennych przy wywołaniu playbook’a Link to heading

ansible-playbook site.yml -e "customVariable=123"
ansible-playbook site.yml -e "customVariable='external string value'"

Uruchomienie zadań posiadających wybrany tag Link to heading

ansible-playbook site.yml --tags only-common

Szyfrowanie pliku ze zmiennymi Link to heading

ansible-vault encrypt roles/nginx/vars/main.yml

Pytanie o hasło w trakcie uruchomienia playbook’a celem odszyfrowania plików Link to heading

ansible-playbook site.yml --ask-vault-pass

Instalacja roli za pomocą Ansible Galaxy Link to heading

ansible-galaxy install tigr1991.nginx