From 37cde904c097879331fd978032bf3898f16413ee Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Sun, 18 Jan 2026 21:28:30 +0100 Subject: Add yamllint role and use it as dependency for ansible Since my ansible setup depends on yamllint for linting, it's ok to have this as an implicit dependency for this role, but it can also be used separately --- roles/ansible/meta/main.yml | 1 + roles/yamllint/defaults/main.yml | 2 ++ roles/yamllint/meta/argument_specs.yml | 10 ++++++++++ roles/yamllint/meta/main.yml | 18 ++++++++++++++++++ roles/yamllint/tasks/main.yml | 19 +++++++++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 roles/yamllint/defaults/main.yml create mode 100644 roles/yamllint/meta/argument_specs.yml create mode 100644 roles/yamllint/meta/main.yml create mode 100644 roles/yamllint/tasks/main.yml diff --git a/roles/ansible/meta/main.yml b/roles/ansible/meta/main.yml index de825587..3611082e 100644 --- a/roles/ansible/meta/main.yml +++ b/roles/ansible/meta/main.yml @@ -2,6 +2,7 @@ dependencies: - role: "python" - role: "sshpass" + - role: "yamllint" galaxy_info: author: "a14m" description: "Install ansible and molecule using uv on Linux distributions" diff --git a/roles/yamllint/defaults/main.yml b/roles/yamllint/defaults/main.yml new file mode 100644 index 00000000..43e19920 --- /dev/null +++ b/roles/yamllint/defaults/main.yml @@ -0,0 +1,2 @@ +--- +yamllint_version: "1.37.1" diff --git a/roles/yamllint/meta/argument_specs.yml b/roles/yamllint/meta/argument_specs.yml new file mode 100644 index 00000000..c79203f8 --- /dev/null +++ b/roles/yamllint/meta/argument_specs.yml @@ -0,0 +1,10 @@ +--- +argument_specs: + main: + short_description: "Install yamllint on Linux distributions" + description: "Install yamllint on Linux distributions" + options: + yamllint_version: + type: "str" + description: "The default yamllint version to use (must be in major.minor.patch format)" + default: "1.37.1" diff --git a/roles/yamllint/meta/main.yml b/roles/yamllint/meta/main.yml new file mode 100644 index 00000000..2be2e40e --- /dev/null +++ b/roles/yamllint/meta/main.yml @@ -0,0 +1,18 @@ +--- +dependencies: + - role: "python" +galaxy_info: + author: "a14m" + description: "Install yamllint using uv on Linux distributions" + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/yamllint/tasks/main.yml b/roles/yamllint/tasks/main.yml new file mode 100644 index 00000000..902f0e02 --- /dev/null +++ b/roles/yamllint/tasks/main.yml @@ -0,0 +1,19 @@ +--- +- name: "Check yamllint version {{ yamllint_version }}" + ansible.builtin.shell: | + set -euo pipefail + uv tool list | grep "^yamllint " | awk '{print $2}' | sed 's/^v//' + args: + executable: /bin/bash + register: ansible_lint_installed_version + changed_when: false + failed_when: false + +- name: "Install yamllint version {{ yamllint_version }}" + ansible.builtin.shell: | + set -euo pipefail + uv tool install yamllint=={{ yamllint_version }} --force + args: + executable: /bin/bash + changed_when: true + when: ansible_lint_installed_version.stdout != yamllint_version -- cgit v1.2.3