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
ansible-doc -l
Wyświetlenie listy urządzeń w Ansible Inventory
ansible-inventory --list
Uruchomienie modułu ping
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
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
sudo cat /etc/ansible/group_vars/remote ansible_port: 9022
Przykłady bezpośredniego (ad-hoc) wykonania komend
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
ansible remote -m setup
Uruchomienie playbook’a, wyświetlenie listy zadań i rozpoczęcie od wybranego zadania
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
ansible-playbook site.yml -i roles/common/inventory
Przygotowanie szkieletu plików i folderów dla roli za pomocą Ansible Galaxy
ansible-galaxy init web-server
Sprawdzenie playbook’a
ansible-playbook --check site.yml
Wyświetlenie różnic w konfiguracji na urządzeniu a tej wdrażanej w ramach playbook’a
ansible-playbook site.yml --diff
Pokazania plików konfiguracyjnych Ansible
ansible-config view
Nadpisanie zmiennych przy wywołaniu playbook’a
ansible-playbook site.yml -e "customVariable=123" ansible-playbook site.yml -e "customVariable='external string value'"
Uruchomienie zadań posiadających wybrany tag
ansible-playbook site.yml --tags only-common
Szyfrowanie pliku ze zmiennymi
ansible-vault encrypt roles/nginx/vars/main.yml
Pytanie o hasło w trakcie uruchomienia playbook’a celem odszyfrowania plików
ansible-playbook site.yml --ask-vault-pass
Instalacja roli za pomocą Ansible Galaxy
ansible-galaxy install tigr1991.nginx