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