Some Example Ansible Loops

Having been using Ansible for a bit now I’ve found these loops quite useful.

Installing multiple packages:

- name: Install packages
  apt:
    state: present
    install_recommends: no
    name:
    - asterisk
    - asterisk-mysql

Copying files:

- name: Copy files
   synchronize: src={{item.src}} dest={{item.dest}}
   with_items:
    - { src: '/srv/deploy/fail2ban/asterisk.conf', dest: '/etc/fail2ban/filter.d' }
    - { src: '/srv/deploy/fail2ban/asterisk18.conf', dest: '/etc/fail2ban/filter.d' }
    - { src: '/srv/deploy/etc/odbc.ini', dest: '/etc/' }

Removing files:

- name: Remove files
  file:
    path: "{{item}}"
    state: absent
  with_items:
    - /usr/share/asterisk/moh/macroform-robot_dity.gsm
    - /usr/share/asterisk/moh/manolo_camp-morning_coffee.gsm
    - /usr/share/asterisk/moh/reno_project-system.gsm

Adding lines:

- name: Adding Lines
  lineinfile:
    path: '{{item.path}}'
    line: "{{item.line}}"
  with_items:
    - { path: '/etc/file1',line: "This line goes n File 1" }
    - { path: '/etc/file2',line: "This line goes n File 2" }

Replacing contents of lines:

- name: Filetweaks
  replace:
    path: '{{item.path}}'
    regexp: '{{item.regexp}}'
    replace: "{{item.replace}}"
  with_items:
    - { path: '/etc/init.d/asterisk', regexp: '#MAXFILES=1024', replace: 'MAXFILES=8192' }

A sequence of shell commands that ignores non-zero exits:

- name: Test shell loop
  shell: "{{item}}"
  ignore_errors: true
  args:
    warn: no
    executable: /bin/bash
  with_items:
    - "echo 1"
    - "echo 2"
    - "echo 3"
    - "echo 4"
    - "echo 5"
Post Tagged with ,
Comments are closed.