Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions ansible/roles/linux-common/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
- include_role:
name: linux-volumes-by-tag

- include_role:
name: linux-nvme

- name: Load relevant kernel modules
template:
src: modules.conf.j2
Expand Down
27 changes: 27 additions & 0 deletions ansible/roles/linux-nvme/files/nvme-configure-lvm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---

- name: Set LVM configuration
set_fact:
lvm_groups:
- vgname: lvm-nvme
disks: "{{ devices | map('regex_replace', '^', '/dev/') }}"
create: true
lvnames:
- lvname: primary
size: 100%FREE
opts: --type raid0
create: true
filesystem: ext4
mount: true
mntp: /mnt/nvme

- name: Ensure LVM configuration is applied
vars:
manage_lvm: True
include_role:
name: mrlesmithjr.manage_lvm
apply:
become: True
when:
- lvm_groups is defined
- lvm_groups | length > 0
26 changes: 26 additions & 0 deletions ansible/roles/linux-nvme/files/nvme-playbook.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---

- hosts: localhost
gather_facts: true
become: true
vars:
openstack_metadata: "{{ (lookup('url', 'http://169.254.169.254/openstack/latest/meta_data.json') | from_json).get('meta', {}) }}"
tasks:
- name: Process openstack metadata
set_fact:
devices: "{{ openstack_metadata.lvm_disk_nvme | split(',') | map('trim') | list }}"
when: openstack_metadata.lvm_disk_nvme is defined

- name: Check if devices exist
assert:
that: "item in ansible_devices"
register: device_list
failed_when: false
with_items: "{{ devices }}"
when: openstack_metadata.lvm_disk_nvme is defined

- name: Configure LVM filesystem
include_tasks: /etc/ansible-init/includes/nvme-configure-lvm.yml
when:
- openstack_metadata.lvm_disk_nvme is defined
- "'Assertion failed' not in device_list.results | map(attribute='msg')"
22 changes: 22 additions & 0 deletions ansible/roles/linux-nvme/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---

- name: Ensure ansible-init directories exist
file:
path: "/etc/ansible-init/{{ item }}"
state: directory
loop:
- includes
- playbooks

- name: Install task includes
copy:
src: "{{ item }}"
dest: /etc/ansible-init/includes/{{ item }}
loop:
- nvme-configure-lvm.yml

- name: Install ansible-init playbook
copy:
src: nvme-playbook.yml
# Leave some numbers for playbooks to execute before
dest: /etc/ansible-init/playbooks/10-nvme.yml
2 changes: 2 additions & 0 deletions requirements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,5 @@ roles:
- src: https://github.com/stackhpc/ansible-role-os-manila-mount.git
name: stackhpc.os-manila-mount
version: v24.5.0
- src: mrlesmithjr.manage_lvm
version: v0.2.8
Loading