ansible notes
From thelinuxwiki
Contents |
installation
pip install ansible
variables
types
ansible.builtin.type_debug filter – show input data type
Adding variables to inventory
Connecting to hosts
Ansible Vault
Find out how to encrypt sensitive content in your inventory such as passwords and keys.
variable ansible_connection
listing connection types/plugins
$ ansible-doc -t connection -l kubectl Execute tasks in pods running on Kubernetes libvirt_lxc Run tasks in lxc containers via libvirt chroot Interact with local chroot psrp Run tasks over Microsoft PowerShell Remoting Protocol network_cli Use network_cli to run command on network appliances vmware_tools Execute tasks inside a VM via VMware Tools ssh connect via ssh client binary httpapi Use httpapi to run command on network appliances docker Run tasks in docker containers ...
playbooks
examples
- name: My first play hosts: myhosts tasks: - name: Print wall message ansible.builtin.command: /usr/bin/wall hello
- name: output test hosts: myhosts tasks: - name: run uname thru awk ansible.builtin.shell: /usr/bin/uname -a | awk '{print $NF}' register: results - debug: var: results.stdout
$ ansible-playbook -i inventory.ini shelltest.yaml PLAY [output test] ********************************************************************************************************************************
TASK [run uname thru awk] ************************************************************************************************************************* changed: [10.0.0.15]
TASK [debug] ************************************************************************************************************************************** ok: [10.0.0.15] => { "results.stdout": "GNU/Linux" }
PLAY RECAP **************************************************************************************************************************************** 10.0.0.15 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
programming
conditionals
loops
jinja2
output
parsing json
use community.general.json_query which uses jmespath
Selecting JSON data: JSON queries
writing to files
- name: output to file lineinfile: insertafter: EOF dest: "out.txt" line: "foo bar"
modules and plugins
Using Ansible modules and plugins
Difference between Modules and Plugins in Ansible
collections
Using collections Collections are a distribution format for Ansible content that can include playbooks, roles, modules, and plugins. As modules move from the core Ansible repository into collections, the module documentation will move to the collections pages.
use cases
network/security automation
platform modules (Maintained by Ansible Network Team)
checkpoint modules (gaia / mgmt)
fortinet
cloud
kvm
Ansible libvirt dynamic inventory