Compare commits

..

11 Commits

Author SHA1 Message Date
Larry Smith Jr. 5b36f4779f ci: remove misnamed molecule.yml (replaced by ci.yml) 2026-04-08 10:08:28 -04:00
Larry Smith Jr. 164b50b083 ci: add CI lint workflow (replaces misnamed molecule.yml) 2026-04-08 10:08:22 -04:00
Larry Smith Jr. 7328da933e ci: rename Molecule workflow to CI — molecule scenarios require Vagrant/VirtualBox, not runnable in CI 2026-04-08 10:08:07 -04:00
Larry Smith Jr. af9951c5cd ci: update Python 3.9→3.11 2026-04-08 10:00:48 -04:00
Larry Smith Jr. 454649d90b ci: fix galaxy publish to trigger only on release, simplify deps 2026-04-08 09:59:45 -04:00
Larry Smith Jr. 12f7033566 docs: rewrite README with proper quick start, variable docs, and sponsor section 2026-04-08 09:46:07 -04:00
Larry Smith Jr. 9a5d1dfc15 feat: add GitHub Sponsors funding file 2026-04-08 08:32:03 -04:00
Larry Smith Jr. 2f56dc54ad chore: remove Renovate config (app uninstalled) 2026-03-31 18:56:13 -04:00
dependabot[bot] 9f6bac5d63 chore: bump pygments from 2.15.1 to 2.20.0 (#155)
Bumps [pygments](https://github.com/pygments/pygments) from 2.15.1 to 2.20.0.
- [Release notes](https://github.com/pygments/pygments/releases)
- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)
- [Commits](https://github.com/pygments/pygments/compare/2.15.1...2.20.0)

---
updated-dependencies:
- dependency-name: pygments
  dependency-version: 2.20.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 18:01:01 -04:00
Larry Smith Jr. 9ffff49ef8 Add grouped dependabot configuration (monthly, pip + actions) 2026-03-28 10:38:44 -04:00
dependabot[bot] 113974cccc Bump cryptography from 41.0.1 to 46.0.6 (#152)
Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.1 to 46.0.6.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.1...46.0.6)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-28 08:30:38 -04:00
9 changed files with 938 additions and 1784 deletions
+1
View File
@@ -0,0 +1 @@
github: mrlesmithjr
+23
View File
@@ -0,0 +1,23 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
groups:
github-actions:
patterns: ["*"]
labels: ["dependencies"]
commit-message:
prefix: "ci"
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "monthly"
groups:
python-deps:
patterns: ["*"]
labels: ["dependencies"]
commit-message:
prefix: "chore"
@@ -1,5 +1,4 @@
---
name: Molecule
name: CI
on:
push:
branches-ignore:
@@ -11,22 +10,17 @@ on:
- main
- master
jobs:
build:
lint:
name: Lint
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 4
matrix:
python-version: [3.9]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: '3.11'
- uses: actions/cache@v4
with:
path: ~/.cache/pip
+15 -19
View File
@@ -1,10 +1,6 @@
---
name: Ansible Galaxy
on:
push:
branches:
- main
- master
release:
types:
- published
@@ -14,21 +10,21 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Python 3.9
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
- uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
python-version: '3.11'
- name: Install Ansible
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r requirements-dev.txt
- name: Trigger a new import on Galaxy.
run: ansible-galaxy role import --api-key ${{ secrets.GALAXY_API_KEY }} $(echo ${{ github.repository }} | cut -d/ -f1) $(echo ${{ github.repository }} | cut -d/ -f2)
pip install ansible-core
- name: Trigger a new import on Galaxy
run: >-
ansible-galaxy role import
--api-key ${{ secrets.GALAXY_API_KEY }}
${{ github.repository_owner }}
${{ github.event.repository.name }}
+91 -33
View File
@@ -1,64 +1,122 @@
# ansible-manage-lvm
Ansible role to manage LVM Groups/Logical Volumes.
An [Ansible](https://www.ansible.com) role to create, extend, and resize [LVM](https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)) volume groups and logical volumes.
> NOTE: Can be used to create, extend or resize LVM Groups and volumes.
> Used by [OpenStack Kayobe](https://docs.openstack.org/kayobe/latest/) for LVM management.
## ⚠️ Important: Ansible Galaxy Role Name
## Ansible Galaxy
**As of December 2025**, this role is available on Ansible Galaxy as:
```yaml
- src: mrlesmithjr.manage_lvm # Note: underscore, not hyphen
```bash
ansible-galaxy install mrlesmithjr.manage_lvm
```
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:** As of December 2025, the canonical Galaxy name is `mrlesmithjr.manage_lvm` (underscore).
> Update any `requirements.yml` using the older hyphen-style name `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:
<details>
<summary>Historical download statistics</summary>
| Role Name | Downloads (as of Dec 2025) |
|-----------|---------------------------|
| `mrlesmithjr.manage_lvm` | 697,492 |
| `mrlesmithjr.manage-lvm` | 494,517 |
| **Combined Total** | **1,192,009** |
| **Combined** | **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.
Download counts reset when roles are re-imported to Galaxy. These figures represent actual historical usage.
</details>
## Supported Platforms
Any Linux distribution with LVM support, including:
| Platform | Versions |
|----------|----------|
| Ubuntu | 20.04, 22.04, 24.04 |
| Debian | 11, 12 |
| Rocky Linux / RHEL | 8, 9 |
| Fedora | 39+ |
## Requirements
Devices/disks to be members of the LVM setup **must be** identified prior to
using this role.
- Unpartitioned disk devices to assign to volume groups
- `lvm2` package (installed automatically by the role)
## Role Variables
## Important: Safety Default
[defaults/main.yml](defaults/main.yml)
`manage_lvm` defaults to `false`. **The role will not make any disk changes** unless you explicitly set:
## Dependencies
```yaml
manage_lvm: true
```
None
This prevents accidental modifications on misconfigured runs.
## Example Playbook
## Quick Start
[playbook.yml](playbook.yml)
```yaml
---
- hosts: all
become: true
vars:
manage_lvm: true
lvm_groups:
- vgname: data-vg
disks:
- /dev/sdb
create: true
lvnames:
- lvname: data
size: 100%FREE
create: true
filesystem: ext4
mount: true
mntp: /data
roles:
- role: mrlesmithjr.manage_lvm
```
## Key Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `manage_lvm` | `false` | Master switch — must be `true` to make any changes |
| `lvm_groups` | `[]` | List of volume group definitions |
| `pvresize_to_max` | `false` | Resize all PVs to maximum available size |
### `lvm_groups` Structure
```yaml
lvm_groups:
- vgname: my-vg # Volume group name
disks: # Physical volumes to assign
- /dev/sdb
- /dev/sdc
create: true # true = create, false = remove
pvresize: false # Resize PV to max size
lvnames:
- lvname: data # Logical volume name
size: 50g # Size: 10g | 1024 (MB) | 100%FREE
create: true # true = create, false = remove
filesystem: ext4 # ext4 | xfs | swap | etc.
mount: true # Mount after creation
mntp: /data # Mountpoint
mopts: noatime # Mount options (optional)
fsopts: # Filesystem creation options (optional)
```
See [defaults/main.yml](defaults/main.yml) for full examples including XFS, swap, and OpenStack Cinder volumes.
## License
MIT
## Author Information
## Support This Project
Larry Smith Jr.
This role has been downloaded over **1.1 million times** from Ansible Galaxy.
If your organization depends on it in production, consider
[sponsoring its maintenance](https://github.com/sponsors/mrlesmithjr).
Enterprise support tiers are available.
- [@mrlesmithjr](https://twitter.com/mrlesmithjr)
- [mrlesmithjr@gmail.com](mailto:mrlesmithjr@gmail.com)
- [http://everythingshouldbevirtual.com](http://everythingshouldbevirtual.com)
## Author
<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>
Larry Smith Jr. — [everythingshouldbevirtual.com](http://everythingshouldbevirtual.com) · [mrlesmithjr@gmail.com](mailto:mrlesmithjr@gmail.com)
Generated
+720 -1637
View File
File diff suppressed because it is too large Load Diff
-4
View File
@@ -1,4 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["github>mrlesmithjr/renovate-config"]
}
+73 -70
View File
@@ -1,70 +1,73 @@
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
ansible-compat==3.0.2 ; python_version >= "3.9" and python_version < "4.0"
ansible-core==2.13.10 ; python_version >= "3.9" and python_version < "4.0"
ansible-lint==6.8.7 ; python_version >= "3.9" and python_version < "4.0"
ansible==6.6.0 ; python_version >= "3.9" and python_version < "4.0"
arrow==1.2.3 ; python_version >= "3.9" and python_version < "4.0"
astroid==2.15.5 ; python_version >= "3.9" and python_version < "4.0"
attrs==23.1.0 ; python_version >= "3.9" and python_version < "4.0"
binaryornot==0.4.4 ; python_version >= "3.9" and python_version < "4.0"
black==22.12.0 ; python_version >= "3.9" and python_version < "4.0"
bracex==2.3.post1 ; python_version >= "3.9" and python_version < "4.0"
certifi==2023.5.7 ; python_version >= "3.9" and python_version < "4.0"
cffi==1.15.1 ; python_version >= "3.9" and python_version < "4.0"
cfgv==3.3.1 ; python_version >= "3.9" and python_version < "4.0"
chardet==5.1.0 ; python_version >= "3.9" and python_version < "4.0"
charset-normalizer==3.1.0 ; python_version >= "3.9" and python_version < "4.0"
click-help-colors==0.9.1 ; python_version >= "3.9" and python_version < "4.0"
click==8.1.3 ; python_version >= "3.9" and python_version < "4.0"
colorama==0.4.6 ; python_version >= "3.9" and python_version < "4.0" and sys_platform == "win32" or python_version >= "3.9" and python_version < "4.0" and platform_system == "Windows"
cookiecutter==2.1.1 ; python_version >= "3.9" and python_version < "4.0"
cryptography==46.0.6 ; python_version >= "3.9" and python_version < "4.0"
dill==0.3.6 ; python_version >= "3.9" and python_version < "4.0"
distlib==0.3.6 ; python_version >= "3.9" and python_version < "4.0"
enrich==1.2.7 ; python_version >= "3.9" and python_version < "4.0"
filelock==3.12.2 ; python_version >= "3.9" and python_version < "4.0"
flake8==6.0.0 ; python_version >= "3.9" and python_version < "4.0"
identify==2.5.24 ; python_version >= "3.9" and python_version < "4.0"
idna==3.4 ; python_version >= "3.9" and python_version < "4.0"
isort==5.12.0 ; python_version >= "3.9" and python_version < "4.0"
jinja2-time==0.2.0 ; python_version >= "3.9" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0"
jsonschema==4.17.3 ; python_version >= "3.9" and python_version < "4.0"
lazy-object-proxy==1.9.0 ; python_version >= "3.9" and python_version < "4.0"
markdown-it-py==3.0.0 ; python_version >= "3.9" and python_version < "4.0"
markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "4.0"
mccabe==0.7.0 ; python_version >= "3.9" and python_version < "4.0"
mdurl==0.1.2 ; python_version >= "3.9" and python_version < "4.0"
molecule-plugins[vagrant]==23.4.1 ; python_version >= "3.9" and python_version < "4.0"
molecule==5.0.1 ; python_version >= "3.9" and python_version < "4.0"
molecule[docker]==5.0.1 ; python_version >= "3.9" and python_version < "4.0"
mypy-extensions==0.4.4 ; python_version >= "3.9" and python_version < "4.0"
nodeenv==1.8.0 ; python_version >= "3.9" and python_version < "4.0"
packaging==23.1 ; python_version >= "3.9" and python_version < "4.0"
pathspec==0.11.1 ; python_version >= "3.9" and python_version < "4.0"
platformdirs==2.6.2 ; python_version >= "3.9" and python_version < "4.0"
pluggy==0.13.1 ; python_version >= "3.9" and python_version < "4.0"
pre-commit==2.21.0 ; python_version >= "3.9" and python_version < "4.0"
pycodestyle==2.10.0 ; python_version >= "3.9" and python_version < "4.0"
pycparser==2.21 ; python_version >= "3.9" and python_version < "4.0"
pyflakes==3.0.1 ; python_version >= "3.9" and python_version < "4.0"
pygments==2.20.0 ; python_version >= "3.9" and python_version < "4.0"
pylint==2.17.4 ; python_version >= "3.9" and python_version < "4.0"
pyrsistent==0.19.3 ; python_version >= "3.9" and python_version < "4.0"
python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "4.0"
python-slugify==8.0.1 ; python_version >= "3.9" and python_version < "4.0"
python-vagrant==1.0.0 ; python_version >= "3.9" and python_version < "4.0"
pyyaml==5.4.1 ; python_version >= "3.9" and python_version < "4.0"
requests==2.31.0 ; python_version >= "3.9" and python_version < "4.0"
resolvelib==0.5.4 ; python_version >= "3.9" and python_version < "4.0"
rich==13.4.2 ; python_version >= "3.9" and python_version < "4.0"
ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.12" and python_version >= "3.9"
ruamel-yaml==0.17.31 ; python_version >= "3.9" and python_version < "4.0"
setuptools==67.8.0 ; python_version >= "3.9" and python_version < "4.0"
six==1.16.0 ; python_version >= "3.9" and python_version < "4.0"
subprocess-tee==0.4.1 ; python_version >= "3.9" and python_version < "4.0"
text-unidecode==1.3 ; python_version >= "3.9" and python_version < "4.0"
tomli==1.2.3 ; python_version >= "3.9" and python_full_version < "3.11.0a7"
tomlkit==0.11.8 ; python_version >= "3.9" and python_version < "4.0"
typing-extensions==4.6.3 ; python_version >= "3.9" and python_version < "3.11"
urllib3==1.26.16 ; python_version >= "3.9" and python_version < "4.0"
virtualenv==20.21.1 ; python_version >= "3.9" and python_version < "4.0"
wcmatch==8.4.1 ; python_version >= "3.9" and python_version < "4.0"
wrapt==1.15.0 ; python_version >= "3.9" and python_version < "4.0"
yamllint==1.32.0 ; python_version >= "3.9" and python_version < "4.0"
+10 -10
View File
@@ -1,10 +1,10 @@
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
ansible-core==2.13.10 ; python_version >= "3.9" and python_version < "4.0"
ansible==6.6.0 ; python_version >= "3.9" and python_version < "4.0"
cffi==1.15.1 ; python_version >= "3.9" and python_version < "4.0"
cryptography==46.0.6 ; python_version >= "3.9" and python_version < "4.0"
jinja2==3.1.2 ; python_version >= "3.9" and python_version < "4.0"
markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "4.0"
packaging==23.1 ; python_version >= "3.9" and python_version < "4.0"
pycparser==2.21 ; python_version >= "3.9" and python_version < "4.0"
pyyaml==5.4.1 ; python_version >= "3.9" and python_version < "4.0"
resolvelib==0.5.4 ; python_version >= "3.9" and python_version < "4.0"