Add nfs deployment scenario

In order to reproduce NFS functional test for glance we introduce
new `nfs` integrated scenario that aim to deploy NFS server and
replace fucntional test usecase.

Needed-By: https://review.opendev.org/c/openstack/openstack-ansible-os_glance/+/821097
Change-Id: I17252c764c6fcaa29aa9d707322fa0327c9e24ef
This commit is contained in:
Dmitriy Rabotyagov 2021-12-08 18:43:03 +02:00 committed by Dmitriy Rabotyagov
parent efd1004009
commit 97b8378269
10 changed files with 148 additions and 0 deletions

View File

@ -86,6 +86,11 @@ bootstrap_host_loopback_zfs: yes
# Size of the zfs loopback disk in gigabytes (GB).
bootstrap_host_loopback_zfs_size: 1024
#
# Boolean option to deploy the loopback disk for nfs
bootstrap_host_nfs: "{{ 'nfs' in bootstrap_host_scenarios_expanded }}"
# Size of the nfs loopback disk in gigabytes (GB).
bootstrap_host_loopback_nfs_size: 1024
#
# Boolean option to deploy the OSD loopback disks and cluster UUID for Ceph
bootstrap_host_ceph: "{{ 'ceph' in bootstrap_host_scenarios_expanded }}"
# Size of the Ceph OSD loopbacks

View File

@ -137,6 +137,13 @@
tags:
- prepare-ceph
# Prepare the NFS server and loopback disks
- include: prepare_nfs.yml
when:
- bootstrap_host_nfs | bool
tags:
- prepare-nfs
# Ensure hostname/ip is consistent with inventory
- include: prepare_hostname.yml
tags:

View File

@ -167,6 +167,9 @@
- src: user_variables_murano.yml.j2
dest: user_variables_murano.yml
condition: "{{ 'murano' in bootstrap_host_scenarios_expanded }}"
- src: user_variables_nfs.yml.j2
dest: user_variables_nfs.yml
condition: "{{ 'nfs' in bootstrap_host_scenarios_expanded }}"
- src: user_variables_calico.yml.j2
dest: user_variables_calico.yml
condition: "{{ 'calico' in bootstrap_host_scenarios_expanded }}"

View File

@ -0,0 +1,99 @@
---
# Copyright 2021, City Network International AB
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- name: Create sparse NFS volume
command: "truncate -s {{ bootstrap_host_loopback_nfs_size }}G /openstack/nfs.img"
args:
creates: /openstack/nfs.img
tags:
- nfs-file-create
- name: Format the NFS file
filesystem:
fstype: xfs
dev: /openstack/nfs.img
opts: "{{ bootstrap_host_format_options['xfs'] | default(omit) }}"
tags:
- nfs-format-file
- name: Run the systemd mount role
include_role:
name: systemd_mount
vars:
systemd_mounts:
- what: "/openstack/nfs.img"
where: "/srv/nfs"
options: "loop,{{ bootstrap_host_data_mount_options['xfs'] }}"
type: "xfs"
state: 'started'
enabled: true
tags:
- nfs-config
- name: Install NFS packages
package:
name: "{{ nfs_package }}"
state: present
- name: create the system group for nfs
group:
name: "nfs-user"
gid: "10000"
state: "present"
system: "yes"
- name: Create the system user for nfs
user:
name: "nfs-user"
uid: "10000"
group: "nfs-user"
comment: "nfs-user"
shell: "/bin/false"
system: "yes"
createhome: "yes"
home: "/srv/nfs"
- name: Create base directories
file:
path: "{{ item }}"
state: "directory"
owner: "nfs-user"
group: "nfs-user"
with_items:
- "/srv/nfs/glance"
- name: Create exports file
lineinfile:
path: /etc/exports
line: '{{ item }} {{ storage_range }}.0/{{ netmask }}(rw,sync,no_subtree_check,insecure,all_squash,anonuid=10000,anongid=10000)'
owner: root
group: root
mode: 0644
create: yes
with_items:
- "/srv/nfs/glance"
register: nfs_exportfs
- name: Restart nfs-server
systemd:
daemon_reload: yes
name: "nfs-server"
enabled: "yes"
state: "restarted"
when:
- nfs_exportfs is changed
- name: Export NFS
command: exportfs -rav

View File

@ -0,0 +1,9 @@
---
glance_default_store: file
glance_nfs_client:
- server: "172.29.244.100"
remote_path: "/srv/nfs/glance"
local_path: "/var/lib/glance/images"
type: "nfs"
options: "_netdev,auto"

View File

@ -44,3 +44,5 @@ packages_remove:
rc_local: /etc/rc.local
rc_local_insert_before: "^exit 0$"
nfs_package: nfs-kernel-server

View File

@ -33,3 +33,5 @@ packages_remove: []
rc_local: /etc/rc.d/rc.local
rc_local_insert_before: "^touch /var/lock/subsys/local$"
nfs_package: nfs-utils

View File

@ -33,3 +33,5 @@ packages_remove: []
rc_local: /etc/rc.d/rc.local
rc_local_insert_before: "^touch /var/lock/subsys/local$"
nfs_package: nfs-utils

View File

@ -271,6 +271,11 @@
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-focal
- job:
name: openstack-ansible-deploy-aio_nfs-ubuntu-focal
parent: openstack-ansible-deploy-aio
nodeset: ubuntu-focal
- job:
name: openstack-ansible-deploy-aio_proxy-ubuntu-focal
parent: openstack-ansible-deploy-aio
@ -429,6 +434,11 @@
parent: openstack-ansible-deploy-aio
nodeset: centos-8-stream
- job:
name: openstack-ansible-deploy-aio_nfs-centos-8-stream
parent: openstack-ansible-deploy-aio
nodeset: centos-8-stream
- job:
name: openstack-ansible-deploy-aio_distro_ceph-centos-8-stream
parent: openstack-ansible-deploy-aio-distro

View File

@ -211,6 +211,15 @@
jobs:
- openstack-ansible-deploy-aio_distro_metal-debian-bullseye
- project-template:
name: openstack-ansible-deploy-nfs-jobs
check:
jobs:
- openstack-ansible-deploy-aio_nfs-ubuntu-focal
gate:
jobs:
- openstack-ansible-deploy-aio_nfs-ubuntu-focal
- project-template:
name: openstack-ansible-deploy-ceph-jobs
check: