From a43877c9a3dd58e3b47a22a68b747f719ee788ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20-=20Le=20Filament?= <remi@le-filament.com>
Date: Wed, 5 Jul 2023 15:29:01 +0200
Subject: [PATCH] [UPD] ansible-lint

---
 .ansible-lint     |   8 ++
 .yamllint         |  39 ++++++++++
 handlers/main.yml |  16 ++--
 meta/main.yml     |  34 ++++----
 tasks/main.yml    | 192 +++++++++++++++++++++++-----------------------
 vars/Debian.yml   |  22 +++---
 vars/RedHat.yml   |  32 ++++----
 7 files changed, 195 insertions(+), 148 deletions(-)
 create mode 100644 .ansible-lint
 create mode 100644 .yamllint

diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000..21ef1b8
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,8 @@
+---
+warn_list:  # or 'skip_list' to silence them completely
+    - command-instead-of-module  # systemctl used in place of systemd module
+    - git-latest  # Git checkouts must contain explicit version
+    - ignore-errors  # Use failed_when and specify error conditions instead of using ignore_errors
+    - no-changed-when  # Commands should not change things if nothing needs doing
+    - no-handler  # Tasks that run when changed should likely be handlers
+    - package-latest  # Package installs should not use latest
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 0000000..fbebdb8
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,39 @@
+---
+# Based on ansible-lint config
+extends: default
+
+rules:
+    braces:
+        max-spaces-inside: 1
+        level: error
+    brackets:
+        max-spaces-inside: 1
+        level: error
+    colons:
+        max-spaces-after: -1
+        level: error
+    commas:
+        max-spaces-after: -1
+        level: error
+    # comments enable
+    comments: enable
+    comments-indentation: enable
+    document-start: enable
+    empty-lines:
+        max: 3
+        level: error
+    hyphens:
+        level: error
+    indentation:
+        level: warning
+        indent-sequences: consistent
+        spaces: 4
+        check-multi-line-strings: true
+    key-duplicates: enable
+    line-length: disable
+    new-line-at-end-of-file: enable
+    new-lines:
+        type: unix
+    # trailing-spaces enable
+    trailing-spaces: enable
+    truthy: enable
diff --git a/handlers/main.yml b/handlers/main.yml
index 8d537de..4b6238c 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,15 +1,15 @@
 ---
 
-- name: restart docker daemon
+- name: Restart docker daemon
   ansible.builtin.command:
-    cmd: /usr/bin/systemctl reload-or-restart docker.service
+      cmd: /usr/bin/systemctl reload-or-restart docker.service
 
-- name: start inverseproxy docker
-  docker_compose:
-    project_src: /home/docker/inverseproxy
-    recreate: always
-    restarted: true
-    remove_orphans: true
+- name: Start inverseproxy docker
+  community.docker.docker_compose:
+      project_src: /home/docker/inverseproxy
+      recreate: always
+      restarted: true
+      remove_orphans: true
   async: 120
   poll: 10
   when: not ansible_check_mode
diff --git a/meta/main.yml b/meta/main.yml
index d4c963e..880f5a6 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,19 +1,19 @@
 ---
 galaxy_info:
-  author: Rémi
-  description: Role for deploying and configuring docker daemon and Traefik
-  company: Le Filament (https://le-filament.com)
-  license: AGPL-3.0-or-later
-  min_ansible_version: 2.1
-  platforms:
-    - name: EL
-      versions:
-        - 7
-    - name: Ubuntu
-      versions:
-        - bionic
-        - focal
-  galaxy_tags:
-    - docker
-    - traefik
-    - inverseproxy
+    author: lefilament
+    description: Role for deploying and configuring docker daemon and Traefik
+    company: Le Filament (https://le-filament.com)
+    license: AGPL-3.0-or-later
+    min_ansible_version: "2.1"
+    platforms:
+        - name: EL
+          versions:
+              - "7"
+        - name: Ubuntu
+          versions:
+              - bionic
+              - focal
+    galaxy_tags:
+        - docker
+        - traefik
+        - inverseproxy
diff --git a/tasks/main.yml b/tasks/main.yml
index ed8c063..6e3c48e 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,161 +1,161 @@
 ---
 - name: Include OS-specific variables.
-  include_vars: "{{ ansible_os_family }}.yml"
+  ansible.builtin.include_vars: "{{ ansible_os_family }}.yml"
 
 - name: Install apt-transport-https package
-  apt:
-    name: apt-transport-https
-    install_recommends: false
-    state: latest
+  ansible.builtin.apt:
+      name: apt-transport-https
+      install_recommends: false
+      state: latest
   when: ansible_os_family == "Debian"
 
 - name: Install OS packages
-  package:
-    name: "{{ packages_to_install }}"
-    state: latest
+  ansible.builtin.package:
+      name: "{{ packages_to_install }}"
+      state: latest
   async: 120
   poll: 10
   when: not ansible_check_mode
 
 - name: Check installed OS packages
-  package:
-    name: "{{ packages_to_install }}"
-    state: latest
+  ansible.builtin.package:
+      name: "{{ packages_to_install }}"
+      state: latest
   when: ansible_check_mode
 
 - name: Create /etc/docker repo
-  file:
-    name: /etc/docker
-    state: directory
-    owner: root
-    group: root
-    mode: '0755'
-
-- name: securize docker daemon
-  template:
-    src: daemon.json.j2
-    dest: /etc/docker/daemon.json
-    owner: root
-    group: root
-    mode: '0644'
+  ansible.builtin.file:
+      name: /etc/docker
+      state: directory
+      owner: root
+      group: root
+      mode: '0755'
+
+- name: Securize docker daemon
+  ansible.builtin.template:
+      src: daemon.json.j2
+      dest: /etc/docker/daemon.json
+      owner: root
+      group: root
+      mode: '0644'
   notify: restart docker daemon
 
 - name: Create .docker repo
-  file:
-    name: /root/.docker
-    state: directory
-    owner: root
-    group: root
-    mode: '0750'
+  ansible.builtin.file:
+      name: /root/.docker
+      state: directory
+      owner: root
+      group: root
+      mode: '0750'
   when: docker_registry_auth is defined
 
-- name: add specific repo auth
-  copy:
-    content: "{{ docker_registry_auth }}"
-    dest: /root/.docker/config.json
-    owner: root
-    group: root
-    mode: '0644'
+- name: Add specific repo auth
+  ansible.builtin.copy:
+      content: "{{ docker_registry_auth }}"
+      dest: /root/.docker/config.json
+      owner: root
+      group: root
+      mode: '0644'
   when: docker_registry_auth is defined
 
 - name: Create docker repo
-  file:
-    name: /home/docker/backups
-    state: directory
-    owner: root
-    group: root
-    mode: '0755'
+  ansible.builtin.file:
+      name: /home/docker/backups
+      state: directory
+      owner: root
+      group: root
+      mode: '0755'
 
 ## Install Proxy docker
 - name: Create Inverse Proxy docker structure on server in /home/docker/inverseproxy
-  file:
-    name: /home/docker/inverseproxy
-    state: directory
-    owner: root
-    group: root
-    mode: '0755'
+  ansible.builtin.file:
+      name: /home/docker/inverseproxy
+      state: directory
+      owner: root
+      group: root
+      mode: '0755'
   tags: docker_proxy
 
 - name: Install proxy docker
-  template:
-    src: inverseproxy.yaml.j2
-    dest: /home/docker/inverseproxy/docker-compose.yaml
-    owner: root
-    group: root
-    mode: '0644'
+  ansible.builtin.template:
+      src: inverseproxy.yaml.j2
+      dest: /home/docker/inverseproxy/docker-compose.yaml
+      owner: root
+      group: root
+      mode: '0644'
   tags: docker_proxy
   notify:
-    - start inverseproxy docker
+      - Start inverseproxy docker
 
 - name: Copy Traefik configuration file
-  template:
-    src: traefik.toml.j2
-    dest: "/home/docker/inverseproxy/traefik.toml"
-    owner: root
-    group: root
-    mode: '0644'
+  ansible.builtin.template:
+      src: traefik.toml.j2
+      dest: "/home/docker/inverseproxy/traefik.toml"
+      owner: root
+      group: root
+      mode: '0644'
   tags: docker_proxy
   notify:
-    - start inverseproxy docker
+      - Start inverseproxy docker
 
 - name: Copy Docker Facts Collection script on server
-  template:
-    src: collect_docker_facts.sh.j2
-    dest: /root/collect_docker_facts.sh
-    owner: root
-    group: root
-    mode: '0700'
-
-- name: add cron job to check Docker versions every day
-  cron:
-    name: collect docker facts
-    minute: "1"
-    hour: "2"
-    job: /root/collect_docker_facts.sh
+  ansible.builtin.template:
+      src: collect_docker_facts.sh.j2
+      dest: /root/collect_docker_facts.sh
+      owner: root
+      group: root
+      mode: '0700'
+
+- name: Add cron job to check Docker versions every day
+  ansible.builtin.cron:
+      name: collect docker facts
+      minute: "1"
+      hour: "2"
+      job: /root/collect_docker_facts.sh
 
 # Flush handlers in order to be able to restart docker daemon with new config and retrieve vars
 - name: Flush handlers
-  meta: flush_handlers
+  ansible.builtin.meta: flush_handlers
 
 - name: Enable service docker
   ansible.builtin.service:
-    name: docker
-    enabled: yes
+      name: docker
+      enabled: true
 
 - name: Start service docker, if not started
   ansible.builtin.service:
-    name: docker
-    state: started
+      name: docker
+      state: started
 
 - name: Retrieve subuid for dockremap
-  command: grep dockremap /etc/subuid
+  ansible.builtin.command: grep dockremap /etc/subuid
   register: dockremap_subuid_output
   when: docker_userns_remap
 
 - name: Retrieve subgid for dockremap
-  command: grep dockremap /etc/subgid
+  ansible.builtin.command: grep dockremap /etc/subgid
   register: dockremap_subgid_output
   when: docker_userns_remap
 
 - name: Save uid to hostvars for dockremap user
-  lineinfile:
-    name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
-    regexp: "dockremap_subuid:"
-    line: "dockremap_subuid: {{ dockremap_subuid_output.stdout.split(':')[1] }}"
-    create: true
-    mode: '0664'
+  ansible.builtin.lineinfile:
+      name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
+      regexp: "dockremap_subuid:"
+      line: "dockremap_subuid: {{ dockremap_subuid_output.stdout.split(':')[1] }}"
+      create: true
+      mode: '0664'
   connection: local
   become: false
   delegate_to: localhost
   when: docker_userns_remap and dockremap_subuid_output.stdout is defined and not ansible_check_mode
 
 - name: Save gid to hostvars for dockremap user
-  lineinfile:
-    name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
-    regexp: "dockremap_subgid:"
-    line: "dockremap_subgid: {{ dockremap_subgid_output.stdout.split(':')[1] }}"
-    create: true
-    mode: '0664'
+  ansible.builtin.lineinfile:
+      name: "{{ inventory_dir }}/host_vars/{{ inventory_hostname }}"
+      regexp: "dockremap_subgid:"
+      line: "dockremap_subgid: {{ dockremap_subgid_output.stdout.split(':')[1] }}"
+      create: true
+      mode: '0664'
   connection: local
   become: false
   delegate_to: localhost
diff --git a/vars/Debian.yml b/vars/Debian.yml
index 31c2c6d..a98252f 100644
--- a/vars/Debian.yml
+++ b/vars/Debian.yml
@@ -1,13 +1,13 @@
 ---
 packages_to_install:
-  - build-essential
-  - ca-certificates
-  - curl
-  - docker.io
-  - docker-compose
-  - git
-  - python3-dev
-  - python3-docker
-  - python3-pip
-  - python3-setuptools
-  - software-properties-common
+    - build-essential
+    - ca-certificates
+    - curl
+    - docker.io
+    - docker-compose
+    - git
+    - python3-dev
+    - python3-docker
+    - python3-pip
+    - python3-setuptools
+    - software-properties-common
diff --git a/vars/RedHat.yml b/vars/RedHat.yml
index 191baf6..f65e35f 100644
--- a/vars/RedHat.yml
+++ b/vars/RedHat.yml
@@ -1,19 +1,19 @@
 ---
 packages_to_remove:
-  - docker
-  - docker-client
-  - docker-client-latest
-  - docker-common
-  - docker-engine
-  - docker-latest
-  - docker-latest-logrotate
-  - docker-logrotate
+    - docker
+    - docker-client
+    - docker-client-latest
+    - docker-common
+    - docker-engine
+    - docker-latest
+    - docker-latest-logrotate
+    - docker-logrotate
 packages_to_install:
-  - device-mapper-persistent-data
-  - docker-ce
-  - gcc
-  - lvm2
-  - python3-devel
-  - python3-docker
-  - python3-pip
-  - python3-setuptools
+    - device-mapper-persistent-data
+    - docker-ce
+    - gcc
+    - lvm2
+    - python3-devel
+    - python3-docker
+    - python3-pip
+    - python3-setuptools
-- 
GitLab