From cbadb6c800827124e8d6a44e0701ab151b78ce26 Mon Sep 17 00:00:00 2001 From: Sergey Malyuk Date: Fri, 19 Dec 2025 17:20:04 +0300 Subject: [PATCH 1/2] add percli role and fix ansible-lint errors --- roles/perccli/README.md | 27 +++++++++++ roles/perccli/defaults/main.yml | 4 ++ roles/perccli/handlers/main.yml | 1 + roles/perccli/meta/main.yml | 15 ++++++ roles/perccli/molecule/default/converge.yml | 6 +++ roles/perccli/molecule/default/molecule.yml | 27 +++++++++++ roles/perccli/molecule/default/verify.yml | 23 ++++++++++ roles/perccli/tasks/main.yml | 51 +++++++++++++++++++++ roles/perccli/vars/main.yml | 1 + 9 files changed, 155 insertions(+) create mode 100644 roles/perccli/README.md create mode 100644 roles/perccli/defaults/main.yml create mode 100644 roles/perccli/handlers/main.yml create mode 100644 roles/perccli/meta/main.yml create mode 100644 roles/perccli/molecule/default/converge.yml create mode 100644 roles/perccli/molecule/default/molecule.yml create mode 100644 roles/perccli/molecule/default/verify.yml create mode 100644 roles/perccli/tasks/main.yml create mode 100644 roles/perccli/vars/main.yml diff --git a/roles/perccli/README.md b/roles/perccli/README.md new file mode 100644 index 0000000..5aa2a23 --- /dev/null +++ b/roles/perccli/README.md @@ -0,0 +1,27 @@ +genlab.perccli +========= + +Install perccli tool for Dell HBA and RAID adapters. + +Requirements +------------ + +None + +Role Variables +-------------- + +Example Playbook +---------------- + +See `molecule/default/converge.yml` + +License +------- + +MIT + +Author Information +------------------ + +corvus-migratorius@proton.me diff --git a/roles/perccli/defaults/main.yml b/roles/perccli/defaults/main.yml new file mode 100644 index 0000000..08cef57 --- /dev/null +++ b/roles/perccli/defaults/main.yml @@ -0,0 +1,4 @@ +--- +perccli_deb_name: perccli_007.2616.0000.0000_all.deb +perccli_version: "7.2616.0" +perccli_url: https://dl.dell.com/FOLDER11213122M/1/PERCCLI_{{ perccli_version }}_Linux.tar.gz diff --git a/roles/perccli/handlers/main.yml b/roles/perccli/handlers/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/roles/perccli/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/roles/perccli/meta/main.yml b/roles/perccli/meta/main.yml new file mode 100644 index 0000000..a430261 --- /dev/null +++ b/roles/perccli/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: + role_name: perccli + namespace: genlab + author: "Alexander Gorelyshev" + company: "Genlab, LLC" + description: "Install perccli tool for Dell HBA and RAID adapters." + license: "GPL-2.0-or-later" + min_ansible_version: "2.1" + + platforms: + - name: "Ubuntu" + versions: ["jammy", "noble"] + +dependencies: [] diff --git a/roles/perccli/molecule/default/converge.yml b/roles/perccli/molecule/default/converge.yml new file mode 100644 index 0000000..38c90cc --- /dev/null +++ b/roles/perccli/molecule/default/converge.yml @@ -0,0 +1,6 @@ +--- +- name: Converge + hosts: all + roles: + - role: genlab.common.perccli + perccli_versionsion: "7.2616.0" diff --git a/roles/perccli/molecule/default/molecule.yml b/roles/perccli/molecule/default/molecule.yml new file mode 100644 index 0000000..d82158e --- /dev/null +++ b/roles/perccli/molecule/default/molecule.yml @@ -0,0 +1,27 @@ +--- +dependency: + name: galaxy + +driver: + name: docker + +platforms: + - name: ubuntu + image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2404}-ansible:latest + pre_build_image: true + command: ${MOLECULE_DOCKER_COMMAND:-""} + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:rw + cgroupns_mode: host + privileged: true + +provisioner: + name: ansible + +verifier: + name: ansible + +lint: | + set -e + yamllint . + ansible-lint . diff --git a/roles/perccli/molecule/default/verify.yml b/roles/perccli/molecule/default/verify.yml new file mode 100644 index 0000000..c1fdab9 --- /dev/null +++ b/roles/perccli/molecule/default/verify.yml @@ -0,0 +1,23 @@ +--- +- name: Verify + hosts: all + gather_facts: false + tasks: + # https://github.com/ansible/molecule/issues/3587#issuecomment-1158650179 + - name: "Include default vars" + ansible.builtin.include_vars: + dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults/" + extensions: ['yml'] + + - name: "Test perccli output" + register: perccli_version_get + changed_when: false + failed_when: '"PercCli SAS Customization Utility" not in perccli_version_get.stdout | trim' + ansible.builtin.command: + cmd: "perccli help | grep Ver." + + - name: "Assert perccli version correctness" + ansible.builtin.assert: + that: "perccli_version in perccli_version_get.stdout" + success_msg: "Expected perccli version is available: '{{ perccli_version }}'" + fail_msg: "Expected version '{{ perccli_version }}'; version string is '{{ perccli_version_get.stdout | trim }}'" diff --git a/roles/perccli/tasks/main.yml b/roles/perccli/tasks/main.yml new file mode 100644 index 0000000..30cb055 --- /dev/null +++ b/roles/perccli/tasks/main.yml @@ -0,0 +1,51 @@ +--- +- name: "Check prior perccli installation" + block: + - name: "Test perccli output" + register: perccli_version_get + changed_when: false + failed_when: '"PercCli SAS Customization Utility" not in perccli_version_get.stdout | trim' + ansible.builtin.command: + cmd: "perccli help | grep Ver." + + - name: "Assert perccli version correctness" + ansible.builtin.assert: + that: "perccli_version in perccli_version_get.stdout" + success_msg: "Expected perccli version is available: '{{ perccli_version }}'" + fail_msg: "Expected version '{{ perccli_version }}'; version string is '{{ perccli_version_get.stdout | trim }}'" + + + rescue: + - name: "Download and unarchive a perccli tarball" + ansible.builtin.unarchive: + src: "{{ perccli_url }}" + remote_src: true + dest: "/tmp" + group: root + + - name: "Install perccli using dpkg" + changed_when: false + ansible.builtin.command: + cmd: dpkg -i /tmp/{{ perccli_deb_name }} + + - name: "Set perccli executable permissions" + ansible.builtin.file: + path: /opt/MegaRAID/perccli/perccli64 + owner: root + group: root + mode: "0770" + + - name: "Link perccli to /usr/sbin" + ansible.builtin.file: + state: link + src: /opt/MegaRAID/perccli/perccli64 + dest: /usr/sbin/perccli + + # - name: "Install perccli" + # changed_when: false + # ansible.builtin.command: + # cmd: >- + # install /tmp/PERCCLI_{{ perccli_versions }}_Linux/perccli64 /usr/sbin/perccli + # -o root + # -g root + # -m 0770 diff --git a/roles/perccli/vars/main.yml b/roles/perccli/vars/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/roles/perccli/vars/main.yml @@ -0,0 +1 @@ +--- From 41db422d56e4874ca462076b72d8347505a80eda Mon Sep 17 00:00:00 2001 From: Sergey Malyuk Date: Fri, 19 Dec 2025 17:24:42 +0300 Subject: [PATCH 2/2] update meta --- README.md | 1 + galaxy.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a01cb1..9bc99fc 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ - [nginx](roles/nginx/README.md) - [nginx_docker](roles/nginx_docker/README.md) - [node_exporter](roles/node_exporter/README.md) +- [perccli](roles/perccli/README.md) - [platform1c](roles/platform1c/README.md) - [postgres1c](roles/postgres1c/README.md) - [prometheus](roles/prometheus/README.md) diff --git a/galaxy.yml b/galaxy.yml index f2e622b..57f1177 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: genlab name: common -version: 0.31.0 +version: 0.32.0 readme: README.md authors: - Alexander Gorelyshev (corvus-migratorius@proton.me)