Ansible PlayBook - Task

> Infrastructure as code > Ansible

1 - About

A task is a call to an ansible module with arguments located in a play list. Variables can be used in arguments to modules.

Tasks are executed top to bottom one at a time, against all machines matched by the host pattern before moving on to the next task.

Task should be idempotent in order to be able to re-run the playbook safely. (ie check whether the desired final state has already been achieved, and if that's the case exit without performing any actions).


3 - Format

module: options
# or
action: module options

ie example

    src: templates/foo.j2
    dest: /etc/foo.conf
# or
action: template src=templates/foo.j2 dest=/etc/foo.conf

3.1 - File

4 - Management

4.1 - Omit parameters

- name: touch files with an optional mode
  file: dest={{ item.path }} state=touch mode={{ item.mode | default(omit) }}
    - path: /tmp/foo
    - path: /tmp/bar
    - path: /tmp/baz
      mode: "0444"

5 - Example

- hosts: webservers 
  remote_user: root 
    - name: First task -  A command execution
      command: /sbin/setenforce 1
      remote_user: yourname
      become: yes
      become_method: sudo # or su
      ignore_errors: True # Ignore the exit code
      vars: # To define system variables
         ansible_become: yes
         ansible_become_method: runas
         ansible_become_user: DOMAIN\user
         ansible_become_pass: Password01
         ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
    - name: template configuration file with var  {{ myVar }} that restart services only if the file change
        src: template.j2
        dest: /etc/httpd/conf.d/{{ myVar }}
        - restart memcached
        - restart apache


infra/ansible/task.txt · Last modified: 2019/03/19 13:32 by gerardnico