Ansible

Table of Contents

1. Some of Ansible concepts

1.3. Modules

1.3.1. ansible.builtin.git

The Git module use HEAD as default branch which triggers ansible-lint warnings, use version: commit_hash or version: main

latest[git]: Result of the command may vary on subsequent runs.

2. Random tasks

Collection of tasks I’ve written over time

2.1. ASCII art

# https://github.com/ansible/ansible-lint/issues/497#issuecomment-477141267
# https://ansible.readthedocs.io/projects/lint/rules/no-changed-when/
- name: Alan | Bash | Create ASCII art for .bashrc template
  ansible.builtin.shell: |
    set -o pipefail
    figlet "{{ ansible_facts['hostname'] }}" | sed -e 's;^;#  ;' -e 's; *$;;'
  args:
    executable: /bin/bash
  register: ascii_art
  changed_when: ascii_art.rc != 0

2.2. Backup cronjob

- name: Alan | cron | Newsboat weekly backup
  tags: newsboat
  when: ansible_facts['hostname'] == 'framboise'
  ansible.builtin.cron:
    user: alan
    name: "Backup Newsboat {{ item.name }} every sunday at 15h{{ item.minute }}"
    minute: "{{ item.minute }}"
    hour: '15'
    weekday: '0'
    job: "/usr/bin/rsync -auq --delete {{ item.src }} {{ item.dest }}"
    state: present
  loop:
    - name: "configuration"
      minute: "10"
      src: "deneb:.config/newsboat/"
      dest: "/home/alan/backup/newsboat/config/"

    - name: "data"
      minute: "12"
      src: "deneb:.local/share/newsboat/"
      dest: "/home/alan/backup/newsboat/data/"

2.3. Install Fedora RPM Fusion

---
- name: System | RPM Fusion | Install distribution-gpg-keys package required for next task
  ansible.builtin.dnf:
    name: distribution-gpg-keys
    state: present

- name: System | RPM Fusion | Import RPM Fusion keys
  ansible.builtin.rpm_key:
    key: "{{ item }}"
    state: present
  loop:
    - "/usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-free-fedora-{{ ansible_facts['distribution_major_version'] }}"
    - "/usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-nonfree-fedora-{{ ansible_facts['distribution_major_version'] }}"

- name: System | RPM Fusion | Enable RPM Fusion
  ansible.builtin.dnf:
    name: "{{ item }}"
    state: present
  loop:
    - "https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-{{ ansible_facts['distribution_major_version'] }}.noarch.rpm"
    - "https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-{{ ansible_facts['distribution_major_version'] }}.noarch.rpm"

3. References