Automatyzacja zadań z Ansible (cz. 2)

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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Time limit is exhausted. Please reload CAPTCHA.