Compare commits

...

56 Commits

Author SHA1 Message Date
Larry Smith Jr. 1b5981848c Update Python dependencies to resolve security vulnerabilities
Regenerated pinned requirements from source files with latest
compatible package versions to address open Dependabot alerts.
2026-03-25 16:03:23 -04:00
Larry Smith Jr. 2c41273c9f Add Renovate configuration for automated dependency management 2026-03-25 15:55:03 -04:00
Larry Smith Jr. 6d0feecec7 docs: add Galaxy role name clarification and historical stats
As of December 2025, this role is available on Galaxy as
mrlesmithjr.manage_lvm (underscore). The previous hyphenated
variant (manage-lvm) was consolidated.

Added historical download statistics:
- manage_lvm: 697,492 downloads
- manage-lvm: 494,517 downloads
- Combined: 1,192,009 downloads

This role is used by OpenStack Kayobe for LVM management.
2025-12-18 15:11:16 -05:00
Larry Smith Jr. 416e840eea fix: specify Python 3.9 for Galaxy workflow
- Remove undefined matrix.python-version reference
- Use Python 3.9 to match molecule workflow and requirements
2025-11-03 07:29:16 -05:00
Larry Smith Jr. 850d571313 fix: update GitHub Actions to use current versions
- Update actions/checkout to v4
- Update actions/setup-python to v5
- Update actions/cache to v4 (fixes deprecation failures)
- Fix ansible-lint role-name rule violations
2025-11-03 07:28:15 -05:00
Spirit-act ff13947aaf fix: use explicit boolean check for Ansible 2.19+ compatibility
Fixes implicit truthy conditional that fails in Ansible 2.19+.

Changes `when: scsi_devices['stdout'] | length` to `when: scsi_devices['stdout'] | length > 0` to return an explicit boolean value instead of an integer.

Closes #146 (duplicate PR)
2025-11-01 15:55:35 -04:00
Larry Smith Jr. 26246c7160 Merge pull request #128 from stackhpc/remove-symlinks
Remove symlinks for molecule tests
2024-07-17 17:12:38 -04:00
Matt Crees 5540f7fda5 Remove symlinks for molecule tests
We are seeing failures with newer versions of Ansible due to the
presence of symlinks. For example:

```
error: can't copy 'ansible/roles/mrlesmithjr.manage_lvm/molecule/kvm/tests': doesn't exist or not a regular file
```
2024-05-21 17:16:05 +01:00
Larry Smith Jr 433b7ca1a9 Merge pull request #121 from mrlesmithjr/dependabot/pip/cryptography-42.0.2
Bump cryptography from 42.0.0 to 42.0.2
2024-02-16 22:55:08 -05:00
dependabot[bot] 9404a780c5 Bump cryptography from 42.0.0 to 42.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.0 to 42.0.2.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.0...42.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-17 00:09:34 +00:00
Larry Smith Jr c0184492d5 Merge pull request #120 from mrlesmithjr/dependabot/pip/ansible-core-2.15.9
Bump ansible-core from 2.15.8 to 2.15.9
2024-02-06 23:51:00 -05:00
Larry Smith Jr 60e08852ea Merge pull request #119 from mrlesmithjr/dependabot/pip/cryptography-42.0.0
Bump cryptography from 41.0.6 to 42.0.0
2024-02-06 23:49:52 -05:00
dependabot[bot] 42cc915582 Bump ansible-core from 2.15.8 to 2.15.9
Bumps [ansible-core](https://github.com/ansible/ansible) from 2.15.8 to 2.15.9.
- [Release notes](https://github.com/ansible/ansible/releases)
- [Commits](https://github.com/ansible/ansible/compare/v2.15.8...v2.15.9)

---
updated-dependencies:
- dependency-name: ansible-core
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-06 20:34:35 +00:00
dependabot[bot] 49edca9134 Bump cryptography from 41.0.6 to 42.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.6 to 42.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.6...42.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-02-06 02:23:10 +00:00
Larry Smith Jr ee1e3d051b Merge pull request #118 from genaumann/pvresize_from_module
Add pvresize option
2024-01-17 00:21:19 -05:00
Gino Naumann 91f8cfca5d Add pvresize option
You can now define the pvresize per vg.

To avoid a breaking change, the global option pvresize_to_max is set as default
2024-01-16 12:50:12 +01:00
Larry Smith Jr 3ac9669088 Merge pull request #115 from mrlesmithjr/dependabot/pip/jinja2-3.1.3
Bump jinja2 from 3.1.2 to 3.1.3
2024-01-16 00:30:35 -05:00
Larry Smith Jr 4219da5423 Merge pull request #117 from jcox10/fix-module-names
fix commuity.general module names
2024-01-16 00:30:17 -05:00
Jason Cox 683c617265 fix commuity.general module names 2024-01-15 11:00:08 -07:00
dependabot[bot] b41ffc5e58 Bump jinja2 from 3.1.2 to 3.1.3
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.2...3.1.3)

---
updated-dependencies:
- dependency-name: jinja2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-11 21:01:26 +00:00
Larry Smith Jr 564d3d1f6f Merge pull request #114 from mrlesmithjr/dependabot/pip/ansible-8.5.0
Bump ansible from 6.6.0 to 8.5.0
2023-12-31 15:51:01 -05:00
dependabot[bot] 1d0fa70d66 Bump ansible from 6.6.0 to 8.5.0
Bumps [ansible](https://github.com/ansible-community/ansible-build-data) from 6.6.0 to 8.5.0.
- [Changelog](https://github.com/ansible-community/ansible-build-data/blob/main/docs/release-process.md)
- [Commits](https://github.com/ansible-community/ansible-build-data/compare/6.6.0...8.5.0)

---
updated-dependencies:
- dependency-name: ansible
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-29 18:31:56 +00:00
Larry Smith Jr 8c3bca39ec Merge pull request #113 from mrlesmithjr/dependabot/pip/cryptography-41.0.6 2023-11-30 19:40:06 -05:00
dependabot[bot] 4fbcf1cd19 Bump cryptography from 41.0.1 to 41.0.6
Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.1 to 41.0.6.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.1...41.0.6)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 23:43:00 +00:00
Larry Smith Jr 11056e2e60 Merge pull request #104 from mrlesmithjr/refactoring
Refactoring
2023-06-15 09:07:11 -04:00
Larry Smith Jr 220de2d8ac Fixed linting issues found by black 2023-06-15 09:04:02 -04:00
Larry Smith Jr 3f3a7c7334 Fixed linting issues with templates 2023-06-15 09:00:02 -04:00
Larry Smith Jr f901fe42b3 Removed molecule lint as it doesn't exist anymore
- replaced with pre-commit linting checks
2023-06-15 08:57:06 -04:00
Larry Smith Jr d27a3809d9 Fixed linting issues 2023-06-15 08:52:28 -04:00
Larry Smith Jr 51b7015f9c Updated Python requirements 2023-06-14 21:14:30 -04:00
Larry Smith Jr e35a250f7b Added pre-commit config 2023-06-14 21:07:48 -04:00
Larry Smith Jr de0507269b Updated Python requirements 2023-06-14 21:07:35 -04:00
Larry Smith Jr 1b7e7e6b1c Removed Travis testing and old changelog 2023-06-14 21:07:13 -04:00
Larry Smith Jr 84ba07bcaf Merge branch 'Aethylred-fsopts' 2023-06-14 20:48:02 -04:00
Larry Smith Jr a623248cdf Fixing Molecule lint test 2023-06-14 20:43:47 -04:00
Larry Smith Jr 55b1745ac3 Merge branch 'fsopts' of github.com:Aethylred/ansible-manage-lvm into Aethylred-fsopts 2023-06-14 20:39:51 -04:00
Larry Smith Jr c020c6ef2d Merge pull request #103 from mrlesmithjr/dependabot/pip/cryptography-41.0.0
Bump cryptography from 36.0.0 to 41.0.0
2023-06-04 00:49:41 -04:00
dependabot[bot] 47c980797d Bump cryptography from 36.0.0 to 41.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 36.0.0 to 41.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/36.0.0...41.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 18:51:29 +00:00
Aaron Hicks d6dd5184f0 Merge branch 'fsopts' of github.com:Aethylred/ansible-manage-lvm into fsopts 2023-05-30 15:15:18 +12:00
Aaron Hicks 74e7ca5652 Pass through opts to community.general.filesystem when creating a filesystem 2023-05-30 15:14:51 +12:00
Larry Smith Jr 12346fa038 Update README.md 2023-05-29 10:28:29 -04:00
Larry Smith Jr 8dc044f7c2 Merge pull request #100 from mrlesmithjr/dependabot/pip/gitpython-3.1.30 2023-05-26 01:27:38 -04:00
Larry Smith Jr aa66814872 Merge pull request #101 from mrlesmithjr/dependabot/pip/requests-2.31.0 2023-05-26 01:22:38 -04:00
dependabot[bot] 6e4f217d74 Bump requests from 2.26.0 to 2.31.0
Bumps [requests](https://github.com/psf/requests) from 2.26.0 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.26.0...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-23 02:06:03 +00:00
dependabot[bot] 483ed18874 Bump gitpython from 3.1.24 to 3.1.30
Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.24 to 3.1.30.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.24...3.1.30)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-16 20:23:09 +00:00
Larry Smith Jr ea2e60f043 Merge pull request #96 from mnasiadka/ansible_facts_distribution
Change ansible_distribution usage to ansible_facts
2022-10-19 15:13:46 -04:00
Michal Nasiadka a28791cc48 Change ansible_distribution usage to ansible_facts
Closes #95
2022-10-13 15:55:07 +02:00
Aaron Hicks b5bf2d266c Pass through opts to community.general.filesystem when creating a filesystem 2022-08-04 14:47:03 +12:00
Larry Smith Jr ca903442c8 Merge pull request #89 from msielicki/master
skip resizing swap filesystem
2022-05-30 09:01:51 -04:00
Larry Smith Jr 9e69c74f71 Merge pull request #91 from msielicki/fix_for_debian_testing
fix for debian testing / sid
2022-05-30 09:01:41 -04:00
Mariusz Sielicki e9ff7e3faf fix for debian testing / sid 2022-05-27 18:23:17 +02:00
Mariusz Sielicki 84bfdf54ad skip resizing swap filesystem 2022-05-27 17:56:09 +02:00
Larry Smith Jr 376f2ce641 Merge pull request #86 from smutel/FixIssue85
Add variable rescan_scsi_command
2022-04-26 09:30:50 -04:00
Samuel Mutel 6e74c9714e enh: Add variable rescan_scsi_command 2022-04-11 13:49:46 +02:00
Larry Smith Jr 1f966d2ea1 Merge pull request #81 from christian7007/master 2022-01-13 08:39:41 -05:00
Christian González 71a3930e5b Fix syntax error on tasks/centos.yml 2022-01-13 10:50:13 +01:00
41 changed files with 2382 additions and 2334 deletions
+3 -1
View File
@@ -1 +1,3 @@
skip_list: []
skip_list:
- name[casing]
- role-name
+8 -13
View File
@@ -10,28 +10,24 @@ on:
- develop
- main
- master
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
lint:
# The type of runner that the job will run on
runs-on: macos-10.15
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 4
matrix:
python-version: [3.8]
python-version: [3.9]
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v2
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}
@@ -41,6 +37,5 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-dev.txt
- name: molecule lint
run: |
molecule lint
- name: Check linting with pre-commit
run: pre-commit run --all-files
+5 -5
View File
@@ -13,14 +13,14 @@ jobs:
galaxy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v2
python-version: '3.9'
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}
+32
View File
@@ -0,0 +1,32 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-added-large-files
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-symlinks
- id: detect-private-key
- id: end-of-file-fixer
- id: no-commit-to-branch
args: [--branch, develop, --branch, master, --branch, main]
- id: trailing-whitespace
- repo: https://github.com/ansible-community/ansible-lint
rev: v6.17.1
hooks:
- id: ansible-lint
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
language_version: python3
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
- repo: https://github.com/adrienverge/yamllint
rev: v1.32.0
hooks:
- id: yamllint
-32
View File
@@ -1,32 +0,0 @@
---
dist: bionic
language: python
python:
- "3.8"
before_install:
- |
sudo apt -y install bridge-utils dnsmasq-base ebtables libvirt-bin libvirt-dev qemu-kvm qemu-utils ruby-dev
- |
wget https://releases.hashicorp.com/vagrant/2.2.7/vagrant_2.2.7_x86_64.deb
sudo apt -y install ./vagrant_2.2.7_x86_64.deb
sudo vagrant plugin install vagrant-libvirt
- |
sudo apt-get -y purge python3-openssl && sudo apt-get -y autoremove
sudo apt-get update && sudo apt-get install -y ca-certificates curl gcc iproute2 python3 python3-dev sudo
curl -skL https://bootstrap.pypa.io/get-pip.py | sudo -H python3
sudo pip3 install wheel
sudo pip3 install netaddr python-vagrant yamllint testinfra flake8
sudo pip3 install ansible ansible-lint
sudo pip3 install -I molecule molecule-vagrant
script:
- |
sudo molecule test --scenario-name kvm
sudo molecule test --scenario-name kvmsinglelv
sudo molecule test --scenario-name kvmonlyvg
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/
-322
View File
@@ -1,322 +0,0 @@
commit 881d5d77fa435ccaa026c3341d0d2ac1fb537b98
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Apr 27 11:26:18 2020 -0400
Fixing syntax issue for wantlist
commit 89360e3ffef9ff1dbbb5ad525a7ee1d77e6b8895
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Apr 27 11:16:02 2020 -0400
Trying to fix the subelements lookup for a single element
This addresses #42. Will need to do some validation testing, etc.
commit c6a7034e4b0b381c5c5b44a15ce7baad7eab9c1b
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Fri Apr 24 17:22:07 2020 +0200
remove unused molecule env property
commit 883055c33f2d6b4c0df8e61ce49771c451905334
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Thu Apr 23 19:38:35 2020 +0200
lint
commit 325c2d6240022fe17abf40dffee842ccf79543f1
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Thu Apr 23 19:25:09 2020 +0200
install xfs
commit 4a1177e420fd9632f77d07ce0a19f89a1515f8eb
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Tue Apr 21 19:01:29 2020 +0200
use xfs_info on mountpoint instead of lvm
commit 7fd5a8eec9f4b5110929862056ab88c4db3f14de
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Sun Apr 19 01:59:29 2020 -0400
Only doing a Molecule lint at this time
commit 7e2a076b0a8155015fd21502db860fa89a2114b3
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Sun Apr 19 01:44:38 2020 -0400
Added Python requirements for testing, etc.
Closes #33
commit dadb9f24f7ebc2752e6495c4c3569bdee5e0cc68
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Fri Apr 17 13:12:06 2020 +0200
remove unwanted files
commit 2f63eab727cf7b0b389d0d0cc1a1c7236b71f839
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Fri Apr 17 12:56:31 2020 +0200
code smells
commit 050f8a56f10d81f7827be53b8c769b1aa5021c00
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 19:08:34 2020 +0200
typo in check
commit b955a6f073b91773f5f90da878268e74872a99e9
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 18:54:17 2020 +0200
remove unwanted newline
commit f81937e9d82bc48f2ee03f6ff462c32bca3da8f0
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 18:52:52 2020 +0200
makes xfs mountpoint repeatable
commit 1c3818e5d06887c01dc0a4b88a39c0561a446300
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 17:34:53 2020 +0200
mistake on remove volume
commit 47f8dae16a096050dccbb8d161f4a18946a6ae73
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 17:13:38 2020 +0200
github action lint
commit 96fa78d6d099d0a48642d377d3e7f30a0c554bdf
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 17:07:33 2020 +0200
remove deprecated machines
commit 17e8ec1058c5cb66b21b15a8d3912ac9980508a9
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 16:56:18 2020 +0200
configured molecule and fix xfs on centos
commit ba5d929fce982af9baa44cfe8ad0b3079133f444
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 15:14:30 2020 +0200
use dots instead of carets
commit ea9109220bb268b5f14e75e38d9fb32c2d79bae5
Author: Charlie Mordant <cmordant1@gmail.com>
Date: Wed Apr 15 14:33:41 2020 +0200
molecule test and idempotence
commit d8b3a4e93257dfeb79bc8d4ef349acb53f0019dc
Author: Samuel Mutel <smu-dw@deveryware.net>
Date: Mon Oct 14 12:21:03 2019 +0200
bug: Resize XFS parts is not working
commit b15ecea51d0045a89aae24e4b0c108b35f060b2c
Author: Tony Peña <emperor.cu@gmail.com>
Date: Wed Jun 26 14:56:13 2019 +0200
Update debian.yml
Since ansible 2.8.0 must be change way using dict
commit 9788ee5df68798ad94f11c8133b1d62ff409d0e8
Author: Michele Caputo <mikap83@gmail.com>
Date: Mon Apr 8 14:16:04 2019 +0200
issue #23: extra parenthesis
commit 0f428a0e40d71aea410fbc1aa329203c0b4f15cd
Author: faisalnizam <faisal@logiik.com>
Date: Tue Mar 26 10:48:45 2019 +0400
FIX LINT FOR BUILD
FIX LINT FOR BUILD
commit 8957630c04b8befa99c08ed667e43d95198202ce
Author: faisalnizam <faisal@logiik.com>
Date: Tue Mar 26 10:40:11 2019 +0400
Adding SWAP FileSystem Exception
Adding Check for SWAP Filesystem if defined skip
1. SKIP New Filesystem Creation
2. SKIP mountpoint check
commit 183087e767cbce08ce2da1a3b04f47d3fc03a7e6
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Apr 2 08:03:42 2019 -0400
Resolves #21
commit b3ef85d4f738597260d9db0d90e84d0f8721259a
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Wed Dec 5 08:39:10 2018 -0500
Added skip codes for ansible-lint
commit 9f4afa7afb3fedc270c44ff1fa357da4b87845c0
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Wed Dec 5 08:00:13 2018 -0500
Fixing Travis testing and yamllint issues
commit 5603c5f6b0899a1b2cdeeeb3c035eb6249e96fa7
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Wed Dec 5 07:51:31 2018 -0500
Added Travis testing and hooks for galaxy
commit 563aa1effba936340cbaad9766a49f570292edee
Author: Mark Goddard <mark@stackhpc.com>
Date: Wed Oct 31 11:42:20 2018 +0000
Fix indentation
commit 4a58cb36cf6d4dd4bb23e86972658be508cca082
Author: Mark Goddard <mark@stackhpc.com>
Date: Wed Oct 31 11:16:27 2018 +0000
Update tasks/manage_lvm.yml
Co-Authored-By: oneswig <stig.github@telfer.org>
commit a0c784797f538fc5393d75589ac48e86c51e88db
Author: Stig Telfer <stig@stackhpc.com>
Date: Wed Oct 31 10:16:44 2018 +0100
Support not formatting volumes.
Logic to make the filesystem attribute optional, in situations where
we do not want the volumes formatted.
commit 66368de1d3d2b6712cbf66fc3dd0962705bf86f9
Author: David Castellanos <dcastellanos@fintonic.com>
Date: Mon Dec 18 00:33:45 2017 +0100
Add opts and mopts support
commit 386cc28bdb58886ed492d3438c9cb088d36de161
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Sun Jun 11 14:57:53 2017 -0400
Addresses issue #10
Signed-off-by: Larry Smith Jr <mrlesmithjr@gmail.com>
commit 0d255cb5ce9e6016a503203c2ed39a70fb0ccd9c
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Fri May 5 09:12:25 2017 -0400
Fixes issue #8
Signed-off-by: Larry Smith Jr <mrlesmithjr@gmail.com>
commit f2d06d0d46086da0191b4dbde0d420e709e3ea01
Author: Stefan Heimberg <kontakt@stefanheimberg.ch>
Date: Thu Apr 6 00:25:55 2017 +0200
added support for btrfs
commit 7749d0c62a6e1539aff94c57fd2c0eeaf43dd1a0
Author: Kevin Loveland <kevin.loveland@gmail.com>
Date: Fri Nov 18 10:26:16 2016 -0800
Fixed issue with idempotency of lvol module. See ansible-module-extras issue #428
commit 3ad965237280d534f0aab0027f9ef61701354e8b
Author: Kevin Loveland <kevin.loveland@gmail.com>
Date: Thu Nov 17 15:17:26 2016 -0800
Changes to adjust to removal of bare vars in Ansible 2.2
commit a82877c290cfe0b62eda90d8874b8e2b62402946
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Sun Oct 2 09:58:47 2016 -0400
First commit of CHANGELOG
Signed-off-by: Larry Smith Jr <mrlesmithjr@gmail.com>
commit 99366fa547faccb0359dd8d3b19cec802640eb95
Author: Rohit Kothari <rohietkothari@gmail.com>
Date: Thu Sep 29 17:59:19 2016 -0700
Replace system-storage-manager with lvm2 in centos
commit ca1535d774b4e3310fc993841f1f99400612c7a5
Author: Olivier LOCARD <olivier.locard@deveryware.com>
Date: Fri Sep 23 16:21:07 2016 +0200
Add xfs_growfs for xfs systemfile type.
commit bb87fa8dbff5df50ed376db74a6d2b95f64fd745
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Nov 3 10:39:58 2015 -0500
updated vars and conditionals
commit 49b20e2e4a80581f1c53559ff4073b3384eae28c
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Nov 3 10:24:54 2015 -0500
updated when conditions
commit 0232734bed92e976376d4c9f2550b515f72f3d54
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Nov 3 10:22:09 2015 -0500
updated tasks to only work when lvnames is defined
commit 9f592112095208843da1fd69a658bd49c163a7bb
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Nov 3 09:37:38 2015 -0500
updated vars and meta
commit 686455514d8bc0da70b3440dbc5afe669188d333
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Tue Nov 3 09:22:00 2015 -0500
cleaned up and fixed all tasks including swap
commit 9f5c61e25599a130e1625e879438561cc1f6a437
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Nov 2 23:38:38 2015 -0500
added new task
commit a5103ff6396138f531cf8457f16706b6fc90d1d1
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Nov 2 23:38:23 2015 -0500
changing role tasks and vars
commit c776e9f339f0bcfe987aa571d29411ac44a29526
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Nov 2 21:50:07 2015 -0500
updated meta
commit 46e0fd1fc2477693fc66aa4b38ac7bde19087047
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Nov 2 21:23:59 2015 -0500
updated meta
commit d1d99b2f17d3bc46a479af5d01a976686429b7ce
Author: Larry Smith Jr <mrlesmithjr@gmail.com>
Date: Mon Nov 2 21:23:03 2015 -0500
first commit
+30
View File
@@ -4,6 +4,34 @@ Ansible role to manage LVM Groups/Logical Volumes.
> NOTE: Can be used to create, extend or resize LVM Groups and volumes.
## ⚠️ Important: Ansible Galaxy Role Name
**As of December 2025**, this role is available on Ansible Galaxy as:
```yaml
- src: mrlesmithjr.manage_lvm # Note: underscore, not hyphen
```
The previous role names (`mrlesmithjr.manage-lvm` and `mrlesmithjr.manage_lvm`) were
consolidated into a single role. If you were using `mrlesmithjr.manage-lvm`, please
update your `requirements.yml` to use `mrlesmithjr.manage_lvm`.
**Note:** This role is used by [OpenStack Kayobe](https://docs.openstack.org/kayobe/latest/)
for LVM management. The `manage_lvm` name was preserved to maintain compatibility.
### Historical Download Statistics
Prior to consolidation, this role had accumulated significant usage:
| Role Name | Downloads (as of Dec 2025) |
|-----------|---------------------------|
| `mrlesmithjr.manage_lvm` | 697,492 |
| `mrlesmithjr.manage-lvm` | 494,517 |
| **Combined Total** | **1,192,009** |
Due to Ansible Galaxy limitations, download counts reset when roles are re-imported.
The historical data above represents the actual community usage of this role.
## Requirements
Devices/disks to be members of the LVM setup **must be** identified prior to
@@ -32,3 +60,5 @@ Larry Smith Jr.
- [@mrlesmithjr](https://twitter.com/mrlesmithjr)
- [mrlesmithjr@gmail.com](mailto:mrlesmithjr@gmail.com)
- [http://everythingshouldbevirtual.com](http://everythingshouldbevirtual.com)
<a href="https://www.buymeacoffee.com/mrlesmithjr" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
+19 -4
View File
@@ -9,6 +9,8 @@ lvm_groups: []
# # defines if VG should exist or be removed
# # true or false
# create: true
# # defines if PV should be resized to max size
# pvresize: false
# lvnames:
# - lvname: swap_1
# # Define size of lvol
@@ -31,6 +33,8 @@ lvm_groups: []
# size: 40g
# create: true
# filesystem: ext4
# # Defines options passed to the filesystem creation command
# fsopts:
# mount: true
# mntp: /
# - vgname: test-vg
@@ -57,6 +61,20 @@ lvm_groups: []
# lvnames:
# # Set to None to only create LVM VG w/out creating LVM LVOLS
# - None
# # Using fsopts to create a docker compatible xfs volume
# - vgname: docker-volumes
# disks:
# - /dev/vdc
# - /dev/vdd
# create: true
# lvnames:
# - lvname: docker_1
# size: 100%FREE
# create: true
# filesystem: xfs
# fsopts: -n ftype=1
# mount: true
# mntp: /var/lib/docker
# Defines if LVM will be managed by role
# default is false to ensure nothing is changed by accident.
@@ -70,8 +88,5 @@ ebsnvme_binary_helper_path: '/sbin/go-ebsnvme'
### nvme to scsi device name map script helper
ebsnvme_scrip_helper_path: '/usr/local/bin/ebsnvme-id'
### auto pvresize (waiting until ansible 2.10 or above as collections have new lvg with integrated pvresize)
### waiting for new module in collection set to true or run pvresize manually on remote systems
### https://docs.ansible.com/ansible/3/collections/community/general/lvg_module.html
###
### resize all pv's to max size
pvresize_to_max: false
+1 -5
View File
@@ -6,12 +6,8 @@ galaxy_info:
role_name: manage-lvm
license: MIT
min_ansible_version: 1.2
min_ansible_version: "1.2"
platforms:
- name: fedora
versions:
- 31
- name: EL
versions:
- all
+1 -1
View File
@@ -25,5 +25,5 @@
manage_lvm: true
tasks:
- name: "Include lvm"
include_role:
ansible.builtin.include_role:
name: "ansible-manage-lvm"
+1 -2
View File
@@ -16,6 +16,5 @@ def pytest_runtest_setup(item):
).get_hosts("all")
else:
pytest.skip(
"Test should run only from inside molecule.",
allow_module_level=True
"Test should run only from inside molecule.", allow_module_level=True
)
+1 -1
View File
@@ -8,7 +8,7 @@ def test_lvm_package_shall_be_installed(host):
def test_non_persistent_volume_group_is_created(host):
command = """sudo vgdisplay | grep -c 'my_vg'"""
cmd = host.run(command)
assert '1' in cmd.stdout
assert "1" in cmd.stdout
def test_mylv_logical_volume_is_created(host):
+1 -1
View File
@@ -25,5 +25,5 @@
manage_lvm: true
tasks:
- name: "Include lvm"
include_role:
ansible.builtin.include_role:
name: "ansible-manage-lvm"
-1
View File
@@ -1 +0,0 @@
../default/tests
+20
View File
@@ -0,0 +1,20 @@
"""PyTest Fixtures."""
from __future__ import absolute_import
import os
import pytest
def pytest_runtest_setup(item):
"""Run tests only when under molecule with testinfra installed."""
try:
import testinfra
except ImportError:
pytest.skip("Test requires testinfra", allow_module_level=True)
if "MOLECULE_INVENTORY_FILE" in os.environ:
pytest.testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ["MOLECULE_INVENTORY_FILE"]
).get_hosts("all")
else:
pytest.skip(
"Test should run only from inside molecule.", allow_module_level=True
)
+33
View File
@@ -0,0 +1,33 @@
"""Role testing files using testinfra."""
def test_lvm_package_shall_be_installed(host):
assert host.package("lvm2").is_installed
def test_non_persistent_volume_group_is_created(host):
command = """sudo vgdisplay | grep -c 'my_vg'"""
cmd = host.run(command)
assert "1" in cmd.stdout
def test_mylv_logical_volume_is_created(host):
command = """sudo lvs -o lv_name my_vg --separator='|' --noheadings \
| grep -c 'my_lv'"""
cmd = host.run(command)
assert int(cmd.stdout.rstrip()) >= 1
def test_mylv_logical_volume2_is_created(host):
command = """sudo lvs -o lv_name my_vg --separator='|' --noheadings \
| grep -c 'my_lw'"""
cmd = host.run(command)
assert int(cmd.stdout.rstrip()) >= 1
def test_volume_is_mounted(host):
host.file("/var/lib/mountpoint").mode == 0o731
def test_volume2_is_mounted(host):
host.file("/var/lib/mountpoint2").mode == 0o731
+1 -1
View File
@@ -10,5 +10,5 @@
manage_lvm: true
tasks:
- name: "Include lvm"
include_role:
ansible.builtin.include_role:
name: "ansible-manage-lvm"
-1
View File
@@ -1 +0,0 @@
../../default/tests/conftest.py
+20
View File
@@ -0,0 +1,20 @@
"""PyTest Fixtures."""
from __future__ import absolute_import
import os
import pytest
def pytest_runtest_setup(item):
"""Run tests only when under molecule with testinfra installed."""
try:
import testinfra
except ImportError:
pytest.skip("Test requires testinfra", allow_module_level=True)
if "MOLECULE_INVENTORY_FILE" in os.environ:
pytest.testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ["MOLECULE_INVENTORY_FILE"]
).get_hosts("all")
else:
pytest.skip(
"Test should run only from inside molecule.", allow_module_level=True
)
+1 -1
View File
@@ -8,4 +8,4 @@ def test_lvm_package_shall_be_installed(host):
def test_non_persistent_volume_group_is_created(host):
command = """sudo vgdisplay | grep -c 'my_vg'"""
cmd = host.run(command)
assert '1' in cmd.stdout
assert "1" in cmd.stdout
+1 -1
View File
@@ -18,5 +18,5 @@
manage_lvm: true
tasks:
- name: "Include lvm"
include_role:
ansible.builtin.include_role:
name: "ansible-manage-lvm"
-1
View File
@@ -1 +0,0 @@
../../default/tests/conftest.py
+20
View File
@@ -0,0 +1,20 @@
"""PyTest Fixtures."""
from __future__ import absolute_import
import os
import pytest
def pytest_runtest_setup(item):
"""Run tests only when under molecule with testinfra installed."""
try:
import testinfra
except ImportError:
pytest.skip("Test requires testinfra", allow_module_level=True)
if "MOLECULE_INVENTORY_FILE" in os.environ:
pytest.testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ["MOLECULE_INVENTORY_FILE"]
).get_hosts("all")
else:
pytest.skip(
"Test should run only from inside molecule.", allow_module_level=True
)
+1 -1
View File
@@ -8,7 +8,7 @@ def test_lvm_package_shall_be_installed(host):
def test_non_persistent_volume_group_is_created(host):
command = """sudo vgdisplay | grep -c 'my_vg'"""
cmd = host.run(command)
assert '1' in cmd.stdout
assert "1" in cmd.stdout
def test_mylv_logical_volume_is_created(host):
+3 -2
View File
@@ -1,5 +1,6 @@
---
- hosts: test-nodes
- name: Example playbook
hosts: test-nodes
vars:
lvm_groups:
- vgname: test-vg
@@ -23,5 +24,5 @@
manage_lvm: true
tasks:
- name: Include lvm
include_role:
ansible.builtin.include_role:
name: ansible-manage-lvm
Generated
+1989 -1700
View File
File diff suppressed because it is too large Load Diff
+11 -18
View File
@@ -5,25 +5,18 @@ description = ""
authors = ["Larry Smith Jr. <mrlesmithjr@gmail.com>"]
[tool.poetry.dependencies]
python = "^3.10"
ansible = "4.2.0"
python = ">=3.9,<4.0"
ansible = "8.5.0"
[tool.poetry.dev-dependencies]
bandit = "^1.7.1"
black = "^21.11b1"
flake8 = "^4.0.1"
mypy = "^0.910"
poetry = "^1.1.11"
pylint = "^2.11.1"
ansible-lint = "4.2.0"
yamllint = "1.23.0"
mkdocs = "^1.2.3"
autopep8 = "^1.6.0"
pycodestyle = "^2.8.0"
pip-tools = "^6.4.0"
molecule = "3.0.3"
molecule-vagrant = "0.2"
pre-commit = "^2.15.0"
[tool.poetry.group.dev.dependencies]
ansible-lint = "6.8.7"
black = "^22.10.0"
pylint = "^2.15.7"
flake8 = "^6.0.0"
cookiecutter = "^2.1.1"
pre-commit = "^2.20.0"
molecule-plugins = {extras = ["vagrant"], version = "^23.4.1"}
molecule = {extras = ["docker"], version = "^5.0.1"}
[build-system]
requires = ["poetry-core>=1.0.0"]
+4
View File
@@ -0,0 +1,4 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>mrlesmithjr/renovate-config"]
}
+70 -114
View File
@@ -1,114 +1,70 @@
ansible-core==2.11.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
ansible-lint==4.2.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
ansible==4.2.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
arrow==1.2.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
astroid==2.8.6; python_version >= "3.6" and python_version < "4.0"
autopep8==1.6.0
backports.entry-points-selectable==1.1.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "2.7"
bandit==1.7.1; python_version >= "3.5"
bcrypt==3.2.0; python_version >= "3.6"
binaryornot==0.4.4; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
black==21.11b1; python_full_version >= "3.6.2"
cachecontrol==0.12.10; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
cachy==0.3.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
cerberus==1.3.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
cffi==1.15.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
cfgv==3.3.1; python_full_version >= "3.6.1"
chardet==4.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
charset-normalizer==2.0.7; python_full_version >= "3.6.0" and python_version >= "3"
cleo==0.8.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
click-completion==0.5.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
click-help-colors==0.9.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
click==8.0.3; python_version >= "3.6" and python_full_version >= "3.6.2" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
clikit==0.6.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
colorama==0.4.4; platform_system == "Windows" and python_version >= "3.6" and python_full_version >= "3.6.2" and python_version < "4.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
cookiecutter==1.7.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
crashtest==0.3.1; python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0")
cryptography==36.0.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and sys_platform == "linux" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and sys_platform == "linux"
distlib==0.3.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
distro==1.6.0; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "linux" or python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "linux2" or sys_platform == "linux" and python_version >= "3.6" and python_full_version >= "3.4.0" or sys_platform == "linux2" and python_version >= "3.6" and python_full_version >= "3.4.0"
fasteners==0.16.3; python_version >= "3.6"
filelock==3.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
flake8==4.0.1; python_version >= "3.6"
ghp-import==2.0.2; python_version >= "3.6"
gitdb==4.0.9; python_version >= "3.7"
gitpython==3.1.24; python_version >= "3.7"
html5lib==1.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
identify==2.4.0; python_full_version >= "3.6.1"
idna==3.3; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5"
importlib-metadata==4.8.2; python_version >= "3.6"
isort==5.10.1; python_full_version >= "3.6.1" and python_version < "4.0" and python_version >= "3.6"
jeepney==0.7.1; python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and sys_platform == "linux"
jinja2-time==0.2.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
jinja2==3.0.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
keyring==21.8.0; python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0")
lazy-object-proxy==1.6.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.6.0"
lockfile==0.12.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
markdown==3.3.6; python_version >= "3.6"
markupsafe==2.0.1; python_version >= "3.6"
mccabe==0.6.1; python_version >= "3.6" and python_version < "4.0"
mergedeep==1.3.4; python_version >= "3.6"
mkdocs==1.2.3; python_version >= "3.6"
molecule-vagrant==0.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
molecule==3.0.3; python_version >= "3.6"
msgpack==1.0.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.5"
mypy==0.910; python_version >= "3.5"
nodeenv==1.6.0; python_full_version >= "3.6.1"
packaging==20.9; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
paramiko==2.8.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pastel==0.2.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.6"
pbr==5.8.0; python_version >= "3.6"
pep517==0.12.0; python_version >= "3.6"
pexpect==4.8.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pip-tools==6.4.0; python_version >= "3.6"
pkginfo==1.8.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
platformdirs==2.4.0; python_version >= "3.6" and python_full_version >= "3.6.2" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6")
pluggy==0.13.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
poetry-core==1.0.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
poetry==1.1.11; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
poyo==0.5.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pre-commit==2.15.0; python_full_version >= "3.6.1"
ptyprocess==0.7.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
pycodestyle==2.8.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pyflakes==2.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
pylev==1.4.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
pylint==2.11.1; python_version >= "3.6" and python_version < "4.0"
pynacl==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
pyparsing==3.0.6; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
python-dateutil==2.8.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
python-gilt==1.2.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
python-slugify==5.0.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
python-vagrant==0.5.15; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
pywin32-ctypes==0.2.0; python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and sys_platform == "win32"
pyyaml-env-tag==0.1; python_version >= "3.6"
pyyaml==5.4.1; python_full_version >= "3.6.1" and python_version >= "3.6" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
regex==2021.11.10; python_full_version >= "3.6.2"
requests-toolbelt==0.9.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
requests==2.26.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
resolvelib==0.5.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
ruamel.yaml==0.17.17; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
secretstorage==3.3.1; python_version >= "3.6" and python_version < "4.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0") and sys_platform == "linux"
selinux==0.2.1; python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "linux" or python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "linux2" or sys_platform == "linux" and python_version >= "3.6" and python_full_version >= "3.5.0" or sys_platform == "linux2" and python_version >= "3.6" and python_full_version >= "3.5.0"
sh==1.14.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
shellingham==1.4.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_version >= "3.6" and python_full_version >= "3.5.0"
six==1.16.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
smmap==5.0.0; python_version >= "3.7"
stevedore==3.5.0; python_version >= "3.6"
tabulate==0.8.9; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
text-unidecode==1.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
toml==0.10.2; python_full_version >= "3.6.1" and python_version >= "3.6" and python_version < "4.0"
tomli==1.2.2; python_version >= "3.6" and python_full_version >= "3.6.2"
tomlkit==0.7.2; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
tree-format==0.1.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
typing-extensions==4.0.0
urllib3==1.26.7; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4"
virtualenv==20.10.0; python_full_version >= "3.6.1"
watchdog==2.1.6; python_version >= "3.6"
webencodings==0.5.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
wrapt==1.13.3; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0"
yamllint==1.23.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
zipp==3.6.0; python_version >= "3.6"
ansible-compat==24.10.0
ansible-core==2.15.13
ansible-lint==6.8.7
arrow==1.4.0
astroid==2.15.8
attrs==26.1.0
binaryornot==0.6.0
black==22.12.0
bracex==2.6
certifi==2026.2.25
cffi==2.0.0
cfgv==3.5.0
charset-normalizer==3.4.6
click==8.3.1
click-help-colors==0.9.4
cookiecutter==2.7.1
cryptography==46.0.5
dill==0.4.1
distlib==0.4.0
enrich==1.2.7
filelock==3.25.2
flake8==6.1.0
identify==2.6.18
idna==3.11
isort==5.13.2
jinja2==3.1.6
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
lazy-object-proxy==1.12.0
markdown-it-py==4.0.0
markupsafe==3.0.3
mccabe==0.7.0
mdurl==0.1.2
molecule==5.1.0
molecule-plugins==23.5.0
mypy-extensions==1.1.0
nodeenv==1.10.0
packaging==26.0
pathspec==1.0.4
platformdirs==4.9.4
pluggy==1.6.0
pre-commit==2.21.0
pycodestyle==2.11.1
pycparser==3.0
pyflakes==3.1.0
pygments==2.19.2
pylint==2.17.7
python-dateutil==2.9.0.post0
python-discovery==1.2.0
python-slugify==8.0.4
python-vagrant==1.0.0
pyyaml==6.0.3
referencing==0.37.0
requests==2.33.0
resolvelib==1.0.1
rich==14.3.3
rpds-py==0.30.0
ruamel-yaml==0.17.40
ruamel-yaml-clib==0.2.15
six==1.17.0
subprocess-tee==0.4.2
text-unidecode==1.3
tomlkit==0.14.0
typing-extensions==4.15.0
tzdata==2025.3
urllib3==2.6.3
virtualenv==21.2.0
wcmatch==10.1
wrapt==1.17.3
yamllint==1.38.0
+10 -11
View File
@@ -1,11 +1,10 @@
ansible-core==2.11.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
ansible==4.2.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
cffi==1.15.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
cryptography==36.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
jinja2==3.0.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
markupsafe==2.0.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
packaging==20.9; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pyparsing==3.0.6; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
pyyaml==5.4.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
resolvelib==0.5.5; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
ansible==8.5.0
ansible-core==2.15.13
cffi==2.0.0
cryptography==46.0.5
jinja2==3.1.6
markupsafe==3.0.3
packaging==26.0
pycparser==3.0
pyyaml==6.0.3
resolvelib==1.0.1
+15 -15
View File
@@ -1,7 +1,6 @@
---
- name: amazon | check for nvme devices
shell: |
ansible.builtin.shell: |
set -o pipefail
cat /proc/partitions | awk '{print $4}' | grep -q nvme. ; echo $?
args:
@@ -10,7 +9,7 @@
changed_when: false
- name: amazon | check for amazon ebs devices
shell: |
ansible.builtin.shell: |
set -o pipefail
lsblk -O -J | grep -qi "amazon elastic block store" ; echo $?
register: blkdev_awsebs
@@ -19,11 +18,11 @@
executable: /bin/bash
- name: amazon | set flag for nvme subsystem
set_fact:
ansible.builtin.set_fact:
device_is_nvme: "{{ true if (blkdev_nvme.stdout == '0') else false }}"
- name: amazon | set flag for aws ebs devices
set_fact:
ansible.builtin.set_fact:
device_is_awsebs: "{{ true if (blkdev_awsebs.stdout == '0') else false }}"
- name: Block to map renamed ec2 ebs nvmeXnY devices to their original sdX/xvdX names
@@ -31,13 +30,14 @@
become: true
block:
- name: amazon | download nvme mapping binary helper
get_url:
ansible.builtin.get_url:
url: "{{ ebsnvme_binary_helper_url }}"
dest: "{{ ebsnvme_binary_helper_tmp }}/"
mode: u=rw,g=r,o=r
changed_when: false
- name: amazon | extract binary helper
unarchive:
ansible.builtin.unarchive:
src: "{{ ebsnvme_binary_helper_tmp }}/{{ ebsnvme_binary_helper_file }}"
dest: "{{ ebsnvme_binary_helper_tmp }}/"
remote_src: yes
@@ -45,26 +45,26 @@
changed_when: false
- name: amazon | copy binary helper
copy:
ansible.builtin.copy:
src: "{{ ebsnvme_binary_helper_tmp }}/go-ebsnvme"
dest: "{{ ebsnvme_binary_helper_path }}"
mode: a+x
remote_src: yes
- name: amazon | template script helper
template:
src: 'ebsnvme-id.j2'
ansible.builtin.template:
src: "ebsnvme-id.j2"
dest: "{{ ebsnvme_scrip_helper_path }}"
mode: a+x
- name: amazon | template udev rule
template:
src: '70-ec2-nvme-devices.rules.j2'
dest: '/etc/udev/rules.d/70-ec2-nvme-devices.rules'
ansible.builtin.template:
src: "70-ec2-nvme-devices.rules.j2"
dest: "/etc/udev/rules.d/70-ec2-nvme-devices.rules"
mode: 0755
register: udev_rule
- name: amazon | reload and trigger udev rules
shell:
- name: amazon | reload and trigger udev rules # noqa no-changed-when no-handler
ansible.builtin.shell:
cmd: udevadm control --reload-rules && udevadm trigger
when: udev_rule.changed
+31 -30
View File
@@ -1,17 +1,18 @@
---
- name: centos | installing lvm2 and sg3_utils
package:
ansible.builtin.package:
name:
- lvm2
- sg3_utils
state: present
become: true
- include_tasks: amazon.yml
- name: Specific tasks for Amazon EC2
ansible.builtin.include_tasks: amazon.yml
when: ansible_facts.system_vendor == 'Amazon EC2'
- name: centos | debug lvg
debug:
ansible.builtin.debug:
var: lv
verbosity: 3
loop: "{{ lookup('subelements', lvm_groups, 'lvnames', {'skip_missing': True}, wantlist=True) }}"
@@ -19,7 +20,7 @@
loop_var: lv
- name: centos | install xfs tools
package:
ansible.builtin.package:
name: "xfsprogs"
state: "present"
become: true
@@ -35,35 +36,35 @@
- lv.1.create|bool
- name: centos | check for scsi adapters
find:
ansible.builtin.find:
paths: "/sys/class/scsi_host"
file_type: any
become: true
register: scsi_adapters
- block:
- name: centos | installing sg3_utils
package:
name: sg3_utils
state: present
become: true
- name: centos | checking for scsi devices
command: sg_scan
become: true
register: scsi_devices
changed_when: false
- name: centos | rescanning for new disks
command: /usr/bin/rescan-scsi-bus.sh
become: true
changed_when: false
when: scsi_devices.stdout|length > 0
- name: centos | rescanning for resized disks
command: /usr/bin/rescan-scsi-bus.sh -s
become: true
changed_when: false
when: scsi_devices.stdout|length > 0
- name: centos | Check for new disks
when: scsi_adapters.matched > 0
block:
- name: centos | installing sg3_utils
ansible.builtin.package:
name: sg3_utils
state: present
become: true
- name: centos | checking for scsi devices
ansible.builtin.command: sg_scan
become: true
register: scsi_devices
changed_when: false
- name: centos | rescanning for new disks
ansible.builtin.command: "{{ rescan_scsi_command }}"
become: true
changed_when: false
when: scsi_devices.stdout|length > 0
- name: centos | rescanning for resized disks
ansible.builtin.command: "{{ rescan_scsi_command }} -s"
become: true
changed_when: false
when: scsi_devices.stdout|length > 0
+10 -9
View File
@@ -1,11 +1,10 @@
---
# unable to resize xfs: looks like we've to reference the mountpoint instead of the device
- name: create_fs | check already converted
# at least xfs is executed twice if the partition has changed in the meantime
# then it tries to recreate the fs on the mounted fs which indeed fails...
shell: "xfs_info {{ lv.mntp }} | grep -c 'ftype=1'"
become: yes
ansible.builtin.shell: "xfs_info {{ lv.mntp }} | grep -c 'ftype=1'"
become: true
register: mountedxfs
ignore_errors: true
changed_when: false
@@ -17,7 +16,7 @@
- lv.create|bool
- name: create_fs | unmounting filesystem(s)
mount:
ansible.posix.mount:
path: "{{ lv.mntp }}"
src: "/dev/{{ vg.vgname }}/{{ lv.lvname }}"
fstype: "{{ lv.filesystem | default(omit) }}"
@@ -31,7 +30,7 @@
- lv.filesystem != "swap"
- name: create_fs | creating new filesystem on new LVM logical volume(s)
filesystem:
community.general.filesystem:
fstype: "{{ lv.filesystem }}"
dev: "/dev/{{ vg.vgname }}/{{ lv.lvname }}"
resizefs: yes
@@ -45,12 +44,14 @@
- lv.create|bool
- lv.filesystem is defined
- lv.filesystem != 'None'
- lv.filesystem != 'swap'
- lv.filesystem != 'xfs'
- name: create_fs | creating new xfs filesystem on new LVM logical volume(s)
filesystem:
community.general.filesystem:
fstype: "{{ lv.filesystem }}"
dev: "/dev/{{ vg.vgname }}/{{ lv.lvname }}"
opts: "{{ lv.fsopts | default(omit) }}"
become: true
when:
- mountedxfs is failed
@@ -64,7 +65,7 @@
- lv.filesystem == 'xfs'
- name: create_fs | mounting new filesystem(s)
mount:
ansible.posix.mount:
path: "{{ lv.mntp }}"
src: "/dev/{{ vg.vgname }}/{{ lv.lvname }}"
fstype: "{{ lv.filesystem }}"
@@ -81,8 +82,8 @@
- lv.mount is defined
- lv.mount|bool
- name: create_fs | resizing xfs filesystem on new LVM logical volume(s)
command: "xfs_growfs {{ lv.mntp }}"
- name: create_fs | resizing xfs filesystem on new LVM logical volume(s) # noqa no-changed-when
ansible.builtin.command: "xfs_growfs {{ lv.mntp }}"
become: true
when:
- vg.create is defined
+4 -5
View File
@@ -1,12 +1,11 @@
---
- name: create_lv | Display Volume Group
debug:
ansible.builtin.debug:
var: vg
verbosity: 2
- name: create_lv | creating new LVM logical volume(s)
lvol:
community.general.lvol:
vg: "{{ vg.vgname }}"
lv: "{{ lv.lvname }}"
size: "{{ lv.size }}"
@@ -24,8 +23,8 @@
- lv.create|bool
- name: create_lv | debug changed attribute
debug:
ansible.builtin.debug:
var: lvchanged
- name: create_lv | configuring FS
include_tasks: create_fs.yml
ansible.builtin.include_tasks: create_fs.yml
+3 -15
View File
@@ -1,29 +1,17 @@
---
- name: create_vg | creating new LVM volume group(s)
lvg:
community.general.lvg:
vg: "{{ vg.vgname }}"
pvs: "{{ vg.disks | join(',') }}"
state: present
pvresize: "{{ vg.pvresize | default(pvresize_to_max) }}"
become: true
when:
- vg.create is defined
- vg.create|bool
### workaround: auto pvresize waiting for upgrade to new module supporting integrated pvresize
### ref: https://docs.ansible.com/ansible/3/collections/community/general/lvg_module.html
- name: create_vg | pvresize to max available free space
command: "pvresize {{ pv }}"
loop: "{{ vg.disks | default([]) }}"
loop_control:
loop_var: pv
changed_when: false
when:
- vg.create is defined
- vg.create|bool
- pvresize_to_max|bool
- name: manage_lvm | loop over logical volume group(s) to create logical volumes
include_tasks: create_lv.yml
ansible.builtin.include_tasks: create_lv.yml
loop: "{{ vg.lvnames | default([]) }}"
loop_control:
loop_var: lv
+7 -7
View File
@@ -1,12 +1,12 @@
---
- name: debian | Updating Apt Cache
apt:
ansible.builtin.apt:
update_cache: true
cache_valid_time: 3600
become: true
- name: debian | installing pre-reqs
apt:
ansible.builtin.apt:
name:
- lvm2
- scsitools
@@ -14,11 +14,11 @@
become: true
- name: debian | install xfs tools
apt:
ansible.builtin.apt:
name: xfsprogs
state: present
become: true
loop: "{{ lvm_groups|subelements('lvnames') }}"
loop: "{{ lvm_groups | subelements('lvnames') }}"
when:
- item.1 is defined
- item.1 != 'None'
@@ -28,13 +28,13 @@
- item.1.create|bool
- name: debian | checking for scsi devices
command: sg_scan
ansible.builtin.command: sg_scan
become: true
register: scsi_devices
changed_when: false
- name: debian | rescanning for new disks added
command: /sbin/rescan-scsi-bus
ansible.builtin.command: "{{ rescan_scsi_command }}"
become: true
changed_when: false
when: scsi_devices['stdout'] | length
when: scsi_devices['stdout'] | length > 0
+14 -3
View File
@@ -1,12 +1,23 @@
---
# tasks file for ansible-manage-lvm
- include_tasks: debian.yml
- name: Set rescan_scsi_command for old debian version
ansible.builtin.set_fact:
rescan_scsi_command: "/sbin/rescan-scsi-bus"
when:
- ansible_facts.distribution | replace(' ','') | lower == 'debian'
- ansible_facts.distribution_release not in ('bookworm', 'sid')
- ansible_facts.distribution_major_version is version(10, '<=')
- name: Debian specific tasks
ansible.builtin.include_tasks: debian.yml
when: ansible_facts.os_family == "Debian"
- include_tasks: centos.yml
- name: RHEL specific tasks
ansible.builtin.include_tasks: centos.yml
when: ansible_facts.os_family == "RedHat"
- include_tasks: manage_lvm.yml
- name: Manage LVM
ansible.builtin.include_tasks: manage_lvm.yml
when:
- lvm_groups is defined
- manage_lvm|bool
+4 -4
View File
@@ -1,18 +1,18 @@
---
- name: manage_lvm | manage physical volume group creation
include_tasks: create_vg.yml
ansible.builtin.include_tasks: create_vg.yml
loop: "{{ lvm_groups }}"
loop_control:
loop_var: vg
- name: manage_lvm | Removing LVM logical volume(s)
lvol:
community.general.lvol:
vg: "{{ item.0.vgname }}"
lv: "{{ item.1.lvname }}"
state: absent
force: true
become: true
loop: "{{ lvm_groups|subelements('lvnames', {'skip_missing': true}) }}"
loop: "{{ lvm_groups | subelements('lvnames', {'skip_missing': true}) }}"
when:
- item.1 is defined
- item.1 != 'None'
@@ -20,7 +20,7 @@
- not item.1.create|bool
- name: manage_lvm | Removing LVM volume group(s)
lvg:
community.general.lvg:
vg: "{{ item.vgname }}"
pvs: "{{ item.disks | join(',') }}"
state: absent
-1
View File
@@ -1,3 +1,2 @@
# ebs nvme to scsi device naming mapping
KERNEL=="nvme[0-9]*n[0-9]*", ENV{DEVTYPE}=="disk", ATTRS{model}=="Amazon Elastic Block Store", PROGRAM="{{ ebsnvme_scrip_helper_path }} /dev/%k", SYMLINK+="%c"
-1
View File
@@ -12,4 +12,3 @@
#
{{ ebsnvme_binary_helper_path }} -n $1 | awk -F '/' '{print $3}'
+1 -1
View File
@@ -1 +1 @@
skip_list: ['305','503','602']
skip_list: ['305', '503', '602']
+5 -4
View File
@@ -1,5 +1,6 @@
---
- hosts: localhost
connection: local
roles:
- ansible-manage-lvm
# - name: Test role
# hosts: localhost
# connection: local
# roles:
# - role: ansible-manage-lvm
+2
View File
@@ -3,3 +3,5 @@
ebsnvme_binary_helper_file: go-ebsnvme_{{ ebsnvme_binary_helper_ver }}_linux_amd64.tar.gz
ebsnvme_binary_helper_url: https://github.com/mvisonneau/go-ebsnvme/releases/download/{{ ebsnvme_binary_helper_ver }}/{{ ebsnvme_binary_helper_file }}
rescan_scsi_command: "/usr/bin/rescan-scsi-bus.sh"