IT notes

Ansible ad-hoc

To send a command to all the servers within a playbook: $ ansible all -a "service chronyd restart" -u devops --become What’s an ad-hoc command? An ad-hoc command is something that you might type in to do something really quick, but don’t want to save for later. http://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html

Ansible Patterns

To match hosts only starting with certain string a regex could be used for example to match hosts starting with the word fabrik: --- - hosts: ~fabrik.* become: True tasks: - name: uname shell: uname -a register: uname - debug: var: uname.stdout notice the ~

wait_for_connection

Reboot and wait until server is reachable/usable: - name: Something that may reboot shell: echo "true" register: should_reboot - name: Rebooting ... shell: sleep 2 && /sbin/shutdown -r now "Reboot required" async: 1 poll: 0 ignore_errors: true register: rebooting when: should_reboot.stdout == "true" - name: Wait for rebooted servers to come back wait_for_connection: connect_timeout: 20 sleep: 5 delay: 5 timeout: 60 when: rebooting|changed For checking/testing if a remote host/service is up:

ansible ImportError: No module named boto3

When using ansible 2.4.0.0 (macOS) to fix this problem update your library: pip install --upgrade --user boto3 notice the –user it will update, your local $HOME/Library/Python/2.7/lib/python/site-packages By using --upgrade it will recreate the site-packages. Or create PYTHONPATH system variable: export PYTHONPATH=/usr/local/lib/python2.7/site-packages paramiko In case you get this error: Unicode-objects must be encoded before hashing", "unreachable": true Try: pip install --upgrade --user paramiko==2.0.6 To upgrade,reinstall ansible just in case: