From a7239e6d7ef8857b6d69fb7873e4225cc4142432 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:41:47 +0200
Subject: [PATCH] [UPD] ansible-lint

---
 .ansible-lint     |   7 +++
 .yamllint         |  39 +++++++++++++++
 handlers/main.yml |   6 ++-
 meta/main.yml     |  32 ++++++------
 tasks/main.yml    | 124 ++++++++++++++++++++++++----------------------
 vars/Debian.yml   |   4 +-
 vars/RedHat.yml   |   2 +-
 7 files changed, 134 insertions(+), 80 deletions(-)
 create mode 100644 .ansible-lint
 create mode 100644 .yamllint

diff --git a/.ansible-lint b/.ansible-lint
new file mode 100644
index 0000000..8d40d06
--- /dev/null
+++ b/.ansible-lint
@@ -0,0 +1,7 @@
+---
+warn_list:  # or 'skip_list' to silence them completely
+    - 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 daa89d8..6c6de22 100644
--- a/handlers/main.yml
+++ b/handlers/main.yml
@@ -1,4 +1,6 @@
 ---
 
-- name: restart filebeat
-  service: name=filebeat state=restarted
+- name: Restart filebeat
+  ansible.builtin.service:
+      name: filebeat
+      state: restarted
diff --git a/meta/main.yml b/meta/main.yml
index b1e9b8a..5a5eea9 100644
--- a/meta/main.yml
+++ b/meta/main.yml
@@ -1,18 +1,18 @@
 ---
 galaxy_info:
-  author: Rémi
-  description: This role configures filebeat to push logs to ELK stack
-  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:
-        - focal
-  galaxy_tags:
-    - filebeat
-    - log
-    - elk
+    author: lefilament
+    description: This role configures filebeat to push logs to ELK stack
+    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:
+              - focal
+    galaxy_tags:
+        - filebeat
+        - log
+        - elk
diff --git a/tasks/main.yml b/tasks/main.yml
index 4290b50..af1d9c4 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -1,96 +1,102 @@
 ---
 
 - name: Include OS-specific variables.
-  include_vars: "{{ ansible_os_family }}.yml"
+  ansible.builtin.include_vars: "{{ ansible_os_family }}.yml"
 
 # INSTALLATION
 - name: Add Filebeat GPG key to APT
-  get_url:
-    url: "{{ elastic_gpg_key_url }}"
-    dest: /etc/apt/trusted.gpg.d/elastic.asc
-    mode: '0644'
+  ansible.builtin.get_url:
+      url: "{{ elastic_gpg_key_url }}"
+      dest: /etc/apt/trusted.gpg.d/elastic.asc
+      mode: '0644'
   when: ansible_os_family == "Debian"
 
 - name: Add FileBeat repo to APT repositories
-  apt_repository:
-    repo: deb {{ elastic_packages_url }}/apt stable main
-    update_cache: true
+  ansible.builtin.apt_repository:
+      repo: deb {{ elastic_packages_url }}/apt stable main
+      update_cache: true
   when: ansible_os_family == "Debian"
 
 - name: Add FileBeat repo to YUM repositories
-  yum_repository:
-    file: elastic
-    name: elastic-7.x
-    description: Elastic repository for 7.x packages
-    baseurl: "{{ elastic_packages_url }}/yum"
-    gpgkey: "{{ elastic_gpg_key_url }}"
-    gpgcheck: true
+  ansible.builtin.yum_repository:
+      file: elastic
+      name: elastic-7.x
+      description: Elastic repository for 7.x packages
+      baseurl: "{{ elastic_packages_url }}/yum"
+      gpgkey: "{{ elastic_gpg_key_url }}"
+      gpgcheck: true
   when: ansible_os_family == "RedHat"
 
 - 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: make sure filebeat is enabled if log_collection = true
-  service: name=filebeat enabled=yes state=started
+- name: Make sure filebeat is enabled if log_collection = true
+  ansible.builtin.service:
+      name: filebeat
+      enabled: true
+      state: started
   when: log_collection
 
-- name: make sure filebeat is disabled if log_collection = false
-  service: name=filebeat enabled=no state=stopped
+- name: Make sure filebeat is disabled if log_collection = false
+  ansible.builtin.service:
+      name: filebeat
+      enabled: true
+      state: stopped
   when: not log_collection
 
 # CONFIGURATION (only if log_collection = true)
 - name: Push logstash certificate
-  copy:
-    content: "{{ logstash_tls_crt }}"
-    dest: "/etc/ssl/certs/logstash.crt"
-    owner: root
-    group: root
-    mode: '0644'
+  ansible.builtin.copy:
+      content: "{{ logstash_tls_crt }}"
+      dest: "/etc/ssl/certs/logstash.crt"
+      owner: root
+      group: root
+      mode: '0644'
   when: log_collection
-  notify: restart filebeat
+  notify: Restart filebeat
 
-- name: push Filebeat configuration file
-  template:
-    src: filebeat.yml.j2
-    dest: /etc/filebeat/filebeat.yml
-    owner: root
-    group: root
-    mode: '0600'
+- name: Push Filebeat configuration file
+  ansible.builtin.template:
+      src: filebeat.yml.j2
+      dest: /etc/filebeat/filebeat.yml
+      owner: root
+      group: root
+      mode: '0600'
   when: log_collection
-  notify: restart filebeat
+  notify: Restart filebeat
 
-- name: push Filebeat modules configuration file
-  copy:
-    src: "{{ item }}.yml"
-    dest: /etc/filebeat/modules.d/{{ item }}.yml
-    owner: root
-    group: root
-    mode: '0644'
+- name: Push Filebeat modules configuration file
+  ansible.builtin.copy:
+      src: "{{ item }}.yml"
+      dest: /etc/filebeat/modules.d/{{ item }}.yml
+      owner: root
+      group: root
+      mode: '0644'
   with_items:
-    - iptables
-    - system
+      - iptables
+      - system
   when: log_collection
-  notify: restart filebeat
+  notify: Restart filebeat
 
-- name: push Filebeat traefik module configuration file
-  template:
-    src: "{{ item }}.yml.j2"
-    dest: /etc/filebeat/modules.d/{{ item }}.yml
-    owner: root
-    group: root
-    mode: '0644'
+- name: Push Filebeat traefik module configuration file
+  ansible.builtin.template:
+      src: "{{ item }}.yml.j2"
+      dest: /etc/filebeat/modules.d/{{ item }}.yml
+      owner: root
+      group: root
+      mode: '0644'
   with_items:
-    - traefik
+      - traefik
   when: inventory_hostname in groups.docker and log_collection
-  notify: restart filebeat
+  notify: Restart filebeat
diff --git a/vars/Debian.yml b/vars/Debian.yml
index 7367aca..a0b16e2 100644
--- a/vars/Debian.yml
+++ b/vars/Debian.yml
@@ -1,4 +1,4 @@
 ---
 packages_to_install:
-  - apt-transport-https
-  - filebeat
+    - apt-transport-https
+    - filebeat
diff --git a/vars/RedHat.yml b/vars/RedHat.yml
index cdf9f8f..b0810a1 100644
--- a/vars/RedHat.yml
+++ b/vars/RedHat.yml
@@ -1,3 +1,3 @@
 ---
 packages_to_install:
-  - filebeat
+    - filebeat
-- 
GitLab