summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed Abdelhalim <[email protected]>2026-01-18 21:28:30 +0100
committerAhmed Abdelhalim <[email protected]>2026-01-18 21:28:30 +0100
commit37cde904c097879331fd978032bf3898f16413ee (patch)
tree53f0e8c1035ded24d78146f153ad0f752a9c3bdc
parenta8b43b18cb769355fde300d94ff64e9472dafe9f (diff)
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
-rw-r--r--roles/ansible/meta/main.yml1
-rw-r--r--roles/yamllint/defaults/main.yml2
-rw-r--r--roles/yamllint/meta/argument_specs.yml10
-rw-r--r--roles/yamllint/meta/main.yml18
-rw-r--r--roles/yamllint/tasks/main.yml19
5 files changed, 50 insertions, 0 deletions
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