From 1260f9a87e32f76775a9bcc1d9b99914f257f051 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Wed, 15 Mar 2017 09:44:15 +0000 Subject: [PATCH] Add support for configuration of LVM PVs, VGs and LVs Currently we configure the seed with a single VG containing a volume for Docker volumes. --- .gitignore | 1 + ansible/group_vars/all/seed | 39 ++++++++++++++++++++++++++++++ ansible/group_vars/controllers/lvm | 6 +++++ ansible/group_vars/seed/lvm | 6 +++++ ansible/lvm.yml | 10 ++++++++ ansible/requirements.yml | 1 + etc/kayobe/seed.yml | 31 ++++++++++++++++++++++++ kayobe/cli/commands.py | 6 ++--- 8 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 ansible/group_vars/all/seed create mode 100644 ansible/group_vars/controllers/lvm create mode 100644 ansible/group_vars/seed/lvm create mode 100644 ansible/lvm.yml create mode 100644 etc/kayobe/seed.yml diff --git a/.gitignore b/.gitignore index 4629d0b27..909a038d3 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ ansible/*.retry # Ansible Galaxy roles ansible/roles/ahuffman.resolv/ ansible/roles/jriguera.configdrive/ +ansible/roles/mrlesmithjr.manage-lvm/ ansible/roles/MichaelRigart.interfaces/ ansible/roles/resmo.ntp/ ansible/roles/yatesr.timezone/ diff --git a/ansible/group_vars/all/seed b/ansible/group_vars/all/seed new file mode 100644 index 000000000..cec19f8f3 --- /dev/null +++ b/ansible/group_vars/all/seed @@ -0,0 +1,39 @@ +--- +############################################################################### +# Seed node configuration. + +# List of seed VM LVM volume groups. See mrlesmithjr.manage-lvm role for +# format. +seed_lvm_groups: + - "{{ seed_lvm_group_data }}" + +# Seed LVM volume group for data. See mrlesmithjr.manage-lvm role for format. +seed_lvm_group_data: + vgname: data + disks: "{{ seed_lvm_group_data_disks | join(',') }}" + create: True + lvnames: "{{ seed_lvm_group_data_lvs }}" + +# List of disks for use by seed LVM data volume group. Default to an invalid +# value to require configuration. +seed_lvm_group_data_disks: + - changeme + +# List of LVM logical volumes for the data volume group. +seed_lvm_group_data_lvs: + - "{{ seed_lvm_group_data_lv_docker_volumes }}" + +# Docker volumes LVM backing volume. +seed_lvm_group_data_lv_docker_volumes: + lvname: docker-volumes + size: "{{ seed_lvm_group_data_lv_docker_volumes_size }}" + create: True + filesystem: "{{ seed_lvm_group_data_lv_docker_volumes_fs }}" + mount: True + mntp: /var/lib/docker/volumes + +# Size of docker volumes LVM backing volume. +seed_lvm_group_data_lv_docker_volumes_size: 75%VG + +# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking. +seed_lvm_group_data_lv_docker_volumes_fs: ext4 diff --git a/ansible/group_vars/controllers/lvm b/ansible/group_vars/controllers/lvm new file mode 100644 index 000000000..345f13793 --- /dev/null +++ b/ansible/group_vars/controllers/lvm @@ -0,0 +1,6 @@ +--- +############################################################################### +# Controller node LVM configuration. + +# List of LVM volume groups. +lvm_groups: [] diff --git a/ansible/group_vars/seed/lvm b/ansible/group_vars/seed/lvm new file mode 100644 index 000000000..9c75a27a9 --- /dev/null +++ b/ansible/group_vars/seed/lvm @@ -0,0 +1,6 @@ +--- +############################################################################### +# Seed node LVM configuration. + +# List of LVM volume groups. +lvm_groups: "{{ seed_lvm_groups }}" diff --git a/ansible/lvm.yml b/ansible/lvm.yml new file mode 100644 index 000000000..7d1d3f0d8 --- /dev/null +++ b/ansible/lvm.yml @@ -0,0 +1,10 @@ +--- +- name: Ensure LVM configuration is applied + hosts: seed:controllers + roles: + - role: mrlesmithjr.manage-lvm + manage_lvm: True + become: True + when: + - "{{ lvm_groups is defined}}" + - "{{ lvm_groups | length > 0 }}" diff --git a/ansible/requirements.yml b/ansible/requirements.yml index d5660ac10..50b8fff95 100644 --- a/ansible/requirements.yml +++ b/ansible/requirements.yml @@ -2,5 +2,6 @@ - src: ahuffman.resolv - src: jriguera.configdrive - src: MichaelRigart.interfaces +- src: mrlesmithjr.manage-lvm - src: resmo.ntp - src: yatesr.timezone diff --git a/etc/kayobe/seed.yml b/etc/kayobe/seed.yml new file mode 100644 index 000000000..8d316443b --- /dev/null +++ b/etc/kayobe/seed.yml @@ -0,0 +1,31 @@ +--- +# Seed node configuration. + +############################################################################### +# LVM configuration. + +# List of seed VM LVM volume groups. See mrlesmithjr.manage-lvm role for +# format. +#seed_lvm_groups: + +# Seed LVM volume group for data. See mrlesmithjr.manage-lvm role for format. +#seed_lvm_group_data: + +# List of disks for use by seed LVM data volume group. +#seed_lvm_group_data_disks: + +# List of LVM logical volumes for the data volume group. +#seed_lvm_group_data_lvs: + +# Docker volumes LVM backing volume. +#seed_lvm_group_data_lv_docker_volumes: + +# Size of docker volumes LVM backing volume. +#seed_lvm_group_data_lv_docker_volumes_size: + +# Filesystem for docker volumes LVM backing volume. ext4 allows for shrinking. +#seed_lvm_group_data_lv_docker_volumes_fs: + +############################################################################### +# Dummy variable to allow Ansible to accept this file. +workaround_ansible_issue_8743: yes diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py index 169a8dbbc..fb9105df3 100644 --- a/kayobe/cli/commands.py +++ b/kayobe/cli/commands.py @@ -138,7 +138,7 @@ class SeedHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command): var_name="kayobe_ansible_user") playbooks = ["ansible/%s.yml" % playbook for playbook in "ip-allocation", "ssh-known-host", "kayobe-ansible-user", - "disable-selinux", "network", "ntp"] + "disable-selinux", "network", "ntp", "lvm"] ansible.run_playbooks(parsed_args, playbooks, limit="seed") kolla_ansible.run_seed(parsed_args, "bootstrap-servers", extra_vars={"ansible_user": ansible_user}) @@ -190,7 +190,7 @@ class OvercloudHostConfigure(KollaAnsibleMixin, KayobeAnsibleMixin, Command): var_name="kayobe_ansible_user") playbooks = ["ansible/%s.yml" % playbook for playbook in "ip-allocation", "ssh-known-host", "kayobe-ansible-user", - "disable-selinux", "network", "ntp"] + "disable-selinux", "network", "ntp", "lvm"] ansible.run_playbooks(parsed_args, playbooks, limit="controllers") kolla_ansible.run_overcloud(parsed_args, "bootstrap-servers", extra_vars={"ansible_user": ansible_user}) @@ -211,5 +211,5 @@ class OvercloudServiceDeploy(KollaAnsibleMixin, KayobeAnsibleMixin, Command): kolla_ansible.run_overcloud(parsed_args, command) # FIXME: Fudge to work around incorrect configuration path. extra_vars = {"node_config_directory": parsed_args.config_path} - kolla_ansible.run_overcloud(parsed_args, command, + kolla_ansible.run_overcloud(parsed_args, "post-deploy", extra_vars=extra_vars)