Add support for configuring software RAID arrays using mdadm
Change-Id: I647d93bf40d42a1b86b06170c8b4cc96972051c4 Story: 2005017 Task: 29495
This commit is contained in:
parent
81e3c8a282
commit
7f43edf68d
@ -55,6 +55,12 @@ compute_raid_config_default: []
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
compute_raid_config_extra: []
|
compute_raid_config_extra: []
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Compute node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
compute_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Compute node LVM configuration.
|
# Compute node LVM configuration.
|
||||||
|
|
||||||
|
@ -66,6 +66,12 @@ controller_raid_config_default: []
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
controller_raid_config_extra: []
|
controller_raid_config_extra: []
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Controller node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
controller_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Controller node LVM configuration.
|
# Controller node LVM configuration.
|
||||||
|
|
||||||
|
@ -55,6 +55,12 @@ monitoring_raid_config_default: "{{ controller_raid_config_default }}"
|
|||||||
# by stackhpc.drac role.
|
# by stackhpc.drac role.
|
||||||
monitoring_raid_config_extra: "{{ controller_raid_config_extra }}"
|
monitoring_raid_config_extra: "{{ controller_raid_config_extra }}"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Monitoring node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
monitoring_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Monitoring node LVM configuration.
|
# Monitoring node LVM configuration.
|
||||||
|
|
||||||
|
@ -23,6 +23,12 @@ seed_default_network_interfaces: >
|
|||||||
# List of extra networks to which seed nodes are attached.
|
# List of extra networks to which seed nodes are attached.
|
||||||
seed_extra_network_interfaces: []
|
seed_extra_network_interfaces: []
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Seed node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
seed_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Seed node LVM configuration.
|
# Seed node LVM configuration.
|
||||||
|
|
||||||
|
@ -20,6 +20,12 @@ seed_hypervisor_default_network_interfaces: "{{ seed_default_network_interfaces
|
|||||||
# List of extra networks to which seed hypervisor nodes are attached.
|
# List of extra networks to which seed hypervisor nodes are attached.
|
||||||
seed_hypervisor_extra_network_interfaces: "{{ seed_extra_network_interfaces }}"
|
seed_hypervisor_extra_network_interfaces: "{{ seed_extra_network_interfaces }}"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Seed hypervisor node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
seed_hypervisor_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Seed hypervisor node LVM configuration.
|
# Seed hypervisor node LVM configuration.
|
||||||
|
|
||||||
|
@ -54,6 +54,12 @@ storage_raid_config_default: []
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
storage_raid_config_extra: []
|
storage_raid_config_extra: []
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Storage node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
storage_mdadm_arrays: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Storage node LVM configuration.
|
# Storage node LVM configuration.
|
||||||
|
|
||||||
|
6
ansible/group_vars/compute/mdadm
Normal file
6
ansible/group_vars/compute/mdadm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Compute node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: "{{ compute_mdadm_arrays }}"
|
6
ansible/group_vars/controllers/mdadm
Normal file
6
ansible/group_vars/controllers/mdadm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Controller node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: "{{ controller_mdadm_arrays }}"
|
9
ansible/group_vars/monitoring/mdadm
Normal file
9
ansible/group_vars/monitoring/mdadm
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Monitoring node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: >
|
||||||
|
{{ controller_mdadm_arrays
|
||||||
|
if inventory_hostname in groups['controllers'] else
|
||||||
|
monitoring_mdadm_arrays }}
|
6
ansible/group_vars/seed-hypervisor/mdadm
Normal file
6
ansible/group_vars/seed-hypervisor/mdadm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Seed hypervisor node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: "{{ seed_hypervisor_mdadm_arrays }}"
|
6
ansible/group_vars/seed/mdadm
Normal file
6
ansible/group_vars/seed/mdadm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Seed node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: "{{ seed_mdadm_arrays }}"
|
6
ansible/group_vars/storage/mdadm
Normal file
6
ansible/group_vars/storage/mdadm
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
###############################################################################
|
||||||
|
# Storage node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
mdadm_arrays: "{{ storage_mdadm_arrays }}"
|
11
ansible/mdadm.yml
Normal file
11
ansible/mdadm.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure software RAID configuration is applied
|
||||||
|
hosts: seed-hypervisor:seed:overcloud
|
||||||
|
tags:
|
||||||
|
- mdadm
|
||||||
|
roles:
|
||||||
|
- name: mrlesmithjr.mdadm
|
||||||
|
become: True
|
||||||
|
when:
|
||||||
|
- mdadm_arrays is defined
|
||||||
|
- mdadm_arrays | length > 0
|
@ -359,6 +359,43 @@ The NTP service may be disabled as follows:
|
|||||||
ntp_service_state: stopped
|
ntp_service_state: stopped
|
||||||
ntp_service_enabled: false
|
ntp_service_enabled: false
|
||||||
|
|
||||||
|
.. _configuration-hosts-mdadm:
|
||||||
|
|
||||||
|
Software RAID
|
||||||
|
=============
|
||||||
|
|
||||||
|
While it is possible to use RAID directly with LVM, some operators may prefer
|
||||||
|
the userspace tools provided by ``mdadm`` or may have existing software RAID
|
||||||
|
arrays they want to manage with Kayobe.
|
||||||
|
|
||||||
|
Software RAID arrays may be configured via the ``mdadm_arrays`` variable. For
|
||||||
|
convenience, this is mapped to the following variables:
|
||||||
|
|
||||||
|
* ``seed_hypervisor_mdadm_arrays``
|
||||||
|
* ``seed_mdadm_arrays``
|
||||||
|
* ``compute_mdadm_arrays``
|
||||||
|
* ``controller_mdadm_arrays``
|
||||||
|
* ``monitoring_mdadm_arrays``
|
||||||
|
* ``storage_mdadm_arrays``
|
||||||
|
|
||||||
|
The format of these variables is as defined by the ``mdadm_arrays`` variable of
|
||||||
|
the `mrlesmithjr.mdadm <https://galaxy.ansible.com/mrlesmithjr/mdadm>`__
|
||||||
|
Ansible role.
|
||||||
|
|
||||||
|
For example, to configure two of the seed's disks as a RAID1 ``mdadm`` array
|
||||||
|
available as ``/dev/md0``:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
:caption: ``seed.yml``
|
||||||
|
|
||||||
|
seed_mdadm_arrays:
|
||||||
|
- name: md0
|
||||||
|
devices:
|
||||||
|
- /dev/sdb
|
||||||
|
- /dev/sdc
|
||||||
|
level: '1'
|
||||||
|
state: present
|
||||||
|
|
||||||
.. _configuration-hosts-lvm:
|
.. _configuration-hosts-lvm:
|
||||||
|
|
||||||
LVM
|
LVM
|
||||||
|
@ -48,6 +48,12 @@
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
#compute_raid_config_extra:
|
#compute_raid_config_extra:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Compute node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#compute_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Compute node LVM configuration.
|
# Compute node LVM configuration.
|
||||||
|
|
||||||
|
@ -51,6 +51,12 @@
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
#controller_raid_config_extra:
|
#controller_raid_config_extra:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Controller node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#controller_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Controller node LVM configuration.
|
# Controller node LVM configuration.
|
||||||
|
|
||||||
|
@ -48,6 +48,12 @@
|
|||||||
# by stackhpc.drac role.
|
# by stackhpc.drac role.
|
||||||
#monitoring_raid_config_extra:
|
#monitoring_raid_config_extra:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Monitoring node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#monitoring_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Monitoring node LVM configuration.
|
# Monitoring node LVM configuration.
|
||||||
|
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
# List of extra networks to which seed hypervisor nodes are attached.
|
# List of extra networks to which seed hypervisor nodes are attached.
|
||||||
#seed_hypervisor_extra_network_interfaces:
|
#seed_hypervisor_extra_network_interfaces:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Seed hypervisor node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#seed_hypervisor_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Seed hypervisor node LVM configuration.
|
# Seed hypervisor node LVM configuration.
|
||||||
|
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
# List of extra networks to which seed nodes are attached.
|
# List of extra networks to which seed nodes are attached.
|
||||||
#seed_extra_network_interfaces:
|
#seed_extra_network_interfaces:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Seed node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#seed_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# LVM configuration.
|
# LVM configuration.
|
||||||
|
|
||||||
|
@ -48,6 +48,12 @@
|
|||||||
# stackhpc.drac role.
|
# stackhpc.drac role.
|
||||||
#storage_raid_config_extra:
|
#storage_raid_config_extra:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Storage node software RAID configuration.
|
||||||
|
|
||||||
|
# List of software RAID arrays. See mrlesmithjr.mdadm role for format.
|
||||||
|
#storage_mdadm_arrays:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Storage node LVM configuration.
|
# Storage node LVM configuration.
|
||||||
|
|
||||||
|
@ -290,6 +290,7 @@ class SeedHypervisorHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin,
|
|||||||
* Configure the host's network interfaces.
|
* Configure the host's network interfaces.
|
||||||
* Set sysctl parameters.
|
* Set sysctl parameters.
|
||||||
* Configure NTP.
|
* Configure NTP.
|
||||||
|
* Optionally, configure software RAID arrays.
|
||||||
* Configure LVM volumes.
|
* Configure LVM volumes.
|
||||||
* Configure the host as a libvirt hypervisor.
|
* Configure the host as a libvirt hypervisor.
|
||||||
"""
|
"""
|
||||||
@ -326,8 +327,8 @@ class SeedHypervisorHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin,
|
|||||||
if parsed_args.wipe_disks:
|
if parsed_args.wipe_disks:
|
||||||
playbooks += _build_playbook_list("wipe-disks")
|
playbooks += _build_playbook_list("wipe-disks")
|
||||||
playbooks += _build_playbook_list(
|
playbooks += _build_playbook_list(
|
||||||
"users", "yum", "dev-tools", "network", "sysctl", "ntp", "lvm",
|
"users", "yum", "dev-tools", "network", "sysctl", "ntp", "mdadm",
|
||||||
"seed-hypervisor-libvirt-host")
|
"lvm", "seed-hypervisor-libvirt-host")
|
||||||
self.run_kayobe_playbooks(parsed_args, playbooks,
|
self.run_kayobe_playbooks(parsed_args, playbooks,
|
||||||
limit="seed-hypervisor")
|
limit="seed-hypervisor")
|
||||||
|
|
||||||
@ -421,6 +422,7 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
|
|||||||
* Configure IP routing and source NAT.
|
* Configure IP routing and source NAT.
|
||||||
* Disable bootstrap interface configuration.
|
* Disable bootstrap interface configuration.
|
||||||
* Configure NTP.
|
* Configure NTP.
|
||||||
|
* Optionally, configure software RAID arrays.
|
||||||
* Configure LVM volumes.
|
* Configure LVM volumes.
|
||||||
* Optionally, create a virtualenv for kolla-ansible.
|
* Optionally, create a virtualenv for kolla-ansible.
|
||||||
* Configure a user account for kolla-ansible.
|
* Configure a user account for kolla-ansible.
|
||||||
@ -469,7 +471,8 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
|
|||||||
playbooks += _build_playbook_list("wipe-disks")
|
playbooks += _build_playbook_list("wipe-disks")
|
||||||
playbooks += _build_playbook_list(
|
playbooks += _build_playbook_list(
|
||||||
"users", "yum", "dev-tools", "disable-selinux", "network",
|
"users", "yum", "dev-tools", "disable-selinux", "network",
|
||||||
"sysctl", "ip-routing", "snat", "disable-glean", "ntp", "lvm")
|
"sysctl", "ip-routing", "snat", "disable-glean", "ntp", "mdadm",
|
||||||
|
"lvm")
|
||||||
self.run_kayobe_playbooks(parsed_args, playbooks, limit="seed")
|
self.run_kayobe_playbooks(parsed_args, playbooks, limit="seed")
|
||||||
playbooks = _build_playbook_list("kolla-ansible")
|
playbooks = _build_playbook_list("kolla-ansible")
|
||||||
self.run_kayobe_playbooks(parsed_args, playbooks, tags="config")
|
self.run_kayobe_playbooks(parsed_args, playbooks, tags="config")
|
||||||
@ -823,6 +826,7 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
|
|||||||
* Set sysctl parameters.
|
* Set sysctl parameters.
|
||||||
* Disable bootstrap interface configuration.
|
* Disable bootstrap interface configuration.
|
||||||
* Configure NTP.
|
* Configure NTP.
|
||||||
|
* Optionally, configure software RAID arrays.
|
||||||
* Configure LVM volumes.
|
* Configure LVM volumes.
|
||||||
* Optionally, create a virtualenv for kolla-ansible.
|
* Optionally, create a virtualenv for kolla-ansible.
|
||||||
* Configure a user account for kolla-ansible.
|
* Configure a user account for kolla-ansible.
|
||||||
@ -870,7 +874,8 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, VaultMixin,
|
|||||||
playbooks += _build_playbook_list("wipe-disks")
|
playbooks += _build_playbook_list("wipe-disks")
|
||||||
playbooks += _build_playbook_list(
|
playbooks += _build_playbook_list(
|
||||||
"users", "yum", "dev-tools", "disable-selinux", "network",
|
"users", "yum", "dev-tools", "disable-selinux", "network",
|
||||||
"sysctl", "disable-glean", "disable-cloud-init", "ntp", "lvm")
|
"sysctl", "disable-glean", "disable-cloud-init", "ntp", "mdadm",
|
||||||
|
"lvm")
|
||||||
self.run_kayobe_playbooks(parsed_args, playbooks, limit="overcloud")
|
self.run_kayobe_playbooks(parsed_args, playbooks, limit="overcloud")
|
||||||
playbooks = _build_playbook_list("kolla-ansible")
|
playbooks = _build_playbook_list("kolla-ansible")
|
||||||
self.run_kayobe_playbooks(parsed_args, playbooks, tags="config")
|
self.run_kayobe_playbooks(parsed_args, playbooks, tags="config")
|
||||||
|
@ -268,6 +268,7 @@ class TestCase(unittest.TestCase):
|
|||||||
utils.get_data_files_path("ansible", "network.yml"),
|
utils.get_data_files_path("ansible", "network.yml"),
|
||||||
utils.get_data_files_path("ansible", "sysctl.yml"),
|
utils.get_data_files_path("ansible", "sysctl.yml"),
|
||||||
utils.get_data_files_path("ansible", "ntp.yml"),
|
utils.get_data_files_path("ansible", "ntp.yml"),
|
||||||
|
utils.get_data_files_path("ansible", "mdadm.yml"),
|
||||||
utils.get_data_files_path("ansible", "lvm.yml"),
|
utils.get_data_files_path("ansible", "lvm.yml"),
|
||||||
utils.get_data_files_path(
|
utils.get_data_files_path(
|
||||||
"ansible", "seed-hypervisor-libvirt-host.yml"),
|
"ansible", "seed-hypervisor-libvirt-host.yml"),
|
||||||
@ -373,6 +374,7 @@ class TestCase(unittest.TestCase):
|
|||||||
utils.get_data_files_path("ansible", "snat.yml"),
|
utils.get_data_files_path("ansible", "snat.yml"),
|
||||||
utils.get_data_files_path("ansible", "disable-glean.yml"),
|
utils.get_data_files_path("ansible", "disable-glean.yml"),
|
||||||
utils.get_data_files_path("ansible", "ntp.yml"),
|
utils.get_data_files_path("ansible", "ntp.yml"),
|
||||||
|
utils.get_data_files_path("ansible", "mdadm.yml"),
|
||||||
utils.get_data_files_path("ansible", "lvm.yml"),
|
utils.get_data_files_path("ansible", "lvm.yml"),
|
||||||
],
|
],
|
||||||
limit="seed",
|
limit="seed",
|
||||||
@ -982,6 +984,7 @@ class TestCase(unittest.TestCase):
|
|||||||
utils.get_data_files_path(
|
utils.get_data_files_path(
|
||||||
"ansible", "disable-cloud-init.yml"),
|
"ansible", "disable-cloud-init.yml"),
|
||||||
utils.get_data_files_path("ansible", "ntp.yml"),
|
utils.get_data_files_path("ansible", "ntp.yml"),
|
||||||
|
utils.get_data_files_path("ansible", "mdadm.yml"),
|
||||||
utils.get_data_files_path("ansible", "lvm.yml"),
|
utils.get_data_files_path("ansible", "lvm.yml"),
|
||||||
],
|
],
|
||||||
limit="overcloud",
|
limit="overcloud",
|
||||||
|
7
releasenotes/notes/mdadm-ed1d301ad0168e91.yaml
Normal file
7
releasenotes/notes/mdadm-ed1d301ad0168e91.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds support for configuring software RAID arrays using ``mdadm``. Software
|
||||||
|
RAID configuration is applied before LVM configuration, which allows
|
||||||
|
creating LVM volumes on top of software RAID arrays. See `story 2005017
|
||||||
|
<https://storyboard.openstack.org/#!/story/2005017>`__ for details.
|
@ -8,6 +8,9 @@
|
|||||||
version: v1.2.0
|
version: v1.2.0
|
||||||
- src: mrlesmithjr.manage-lvm
|
- src: mrlesmithjr.manage-lvm
|
||||||
version: v0.1.4
|
version: v0.1.4
|
||||||
|
- src: mrlesmithjr.mdadm
|
||||||
|
# There are no versioned releases of this role.
|
||||||
|
version: 5be3ee7d330aa17317897bd104dc87ff0df11915
|
||||||
- src: resmo.ntp
|
- src: resmo.ntp
|
||||||
version: 0.4.0
|
version: 0.4.0
|
||||||
- src: singleplatform-eng.users
|
- src: singleplatform-eng.users
|
||||||
|
Loading…
Reference in New Issue
Block a user