Ansible
Krishna Neupane
Getting started
Hosts
$ sudo mkdir /etc/ansible $ sudo vim /etc/ansible/hosts [example] 192.0.2.101 192.0.2.102
Running a playbook
$ ansible-playbook playbook.yml
Playbook files
Tasks
- hosts: all user: root sudo: no vars: aaa: bbb tasks: - ... handlers: - ...
Includes
tasks: - include: db.yml handlers: - include: db.yml user=timmy
Handlers
handlers: - name: start apache2 action: service name=apache2 state=started tasks: - name: install apache action: apt pkg=apache2 state=latest notify: - start apache2
Vars
- host: lol vars_files: - vars.yml vars: project_root: /etc/xyz tasks: - name: Create the SSH directory. file: state=directory path=${project_root}/home/.ssh/ only_if: "$vm == 0"
Roles
- host: xxx roles: - db - { role:ruby, sudo_user:$user } - web # Uses: # roles/db/tasks/*.yml # roles/db/handlers/*.yml
Task: Failures
- name: my task command: ... register: result failed_when: "'FAILED' in result.stderr" ignore_errors: yes changed_when: "result.rc != 2"
Env vars
vars: local_home: "{{ lookup('env','HOME') }}"
Structure
roles/ common/ tasks/ handlers/ files/ # 'copy' will refer to this templates/ # 'template' will refer to this meta/ # Role dependencies here vars/ defaults/ main.yml
For More please Visit Ansible Documentation
Follow me on : Medium Linkedin Researchgate