Enable CSIT deployments to use NFS backend 85/65585/4
authorTim Rozet <trozet@redhat.com>
Wed, 5 Dec 2018 14:35:52 +0000 (09:35 -0500)
committerTim Rozet <trozet@redhat.com>
Thu, 6 Dec 2018 16:40:26 +0000 (11:40 -0500)
In order to support HA as well as live migration a shared storage
backend needs to be used. This patch preps the overcloud image to start
with an NFS server sharing out of /root/nfs. If csit environment file is
used then NFS parameters will be passed to the deployment, configuring
Nova and Glance to use NFS hosted by controller0.

JIRA: APEX-654

Change-Id: I049d84bfd454013fc7ba5048939ee17100197624
Signed-off-by: Tim Rozet <trozet@redhat.com>
apex/overcloud/deploy.py
build/csit-environment.yaml
build/csit-queens-environment.yaml
build/csit-rocky-environment.yaml

index e317706..41b2d56 100644 (file)
@@ -205,6 +205,8 @@ def create_deploy_cmd(ds, ns, inv, tmp_dir,
             else:
                 deploy_options.append(os.path.join(con.THT_ENV_DIR, v))
 
+    # TODO(trozet) Fix this check to look for if ceph is in controller services
+    # and not use name of the file
     if ds_opts['ceph'] and 'csit' not in env_file:
         prep_storage_env(ds, ns, virtual, tmp_dir)
         deploy_options.append(os.path.join(con.THT_ENV_DIR,
@@ -434,6 +436,23 @@ def prep_image(ds, ns, img, tmp_dir, root_pw=None, docker_tag=None,
     virt_cmds.append(
         {con.VIRT_RUN_CMD: "crudini --del {} Unit "
                            "ConditionPathExists".format(dhcp_unit)})
+    # Prep for NFS
+    virt_cmds.extend([
+        {con.VIRT_INSTALL: "nfs-utils"},
+        {con.VIRT_RUN_CMD: "ln -s /usr/lib/systemd/system/nfs-server.service "
+                           "/etc/systemd/system/multi-user.target.wants/"
+                           "nfs-server.service"},
+        {con.VIRT_RUN_CMD: "mkdir -p /root/nfs/glance"},
+        {con.VIRT_RUN_CMD: "mkdir -p /root/nfs/cinder"},
+        {con.VIRT_RUN_CMD: "mkdir -p /root/nfs/nova"},
+        {con.VIRT_RUN_CMD: "echo '/root/nfs/glance *(rw,sync,"
+                           "no_root_squash,no_acl)' > /etc/exports"},
+        {con.VIRT_RUN_CMD: "echo '/root/nfs/cinder *(rw,sync,"
+                           "no_root_squash,no_acl)' >> /etc/exports"},
+        {con.VIRT_RUN_CMD: "echo '/root/nfs/nova *(rw,sync,"
+                           "no_root_squash,no_acl)' >> /etc/exports"},
+        {con.VIRT_RUN_CMD: "exportfs -avr"},
+    ])
     virt_utils.virt_customize(virt_cmds, tmp_oc_image)
     logging.info("Overcloud image customization complete")
     return patched_containers
index 048833d..74e0c1f 100644 (file)
@@ -14,6 +14,16 @@ parameter_defaults:
   ExtraConfig:
     tripleo::ringbuilder::build_ring: false
     nova::api::default_floating_pool: 'external'
+  ControllerExtraConfig:
+    tripleo::firewall:firewall_rules:
+      '139 allow NFS':
+        dport: 2049
+  GlanceNfsEnabled: true
+  GlanceNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/glance
+  GlanceNfsOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
+  NovaNfsEnabled: true
+  NovaNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/nova
+  NovaNfsOptions: 'rw,sync,context=system_u:object_r:nfs_t:s0'
   DockerPuppetProcessCount: 10
   NeutronNetworkVLANRanges: 'datacentre:500:525'
   SshServerOptions:
index b13dd4d..2ecb1fc 100644 (file)
@@ -14,6 +14,16 @@ parameter_defaults:
   ExtraConfig:
     tripleo::ringbuilder::build_ring: false
     nova::api::default_floating_pool: 'external'
+  ControllerExtraConfig:
+    tripleo::firewall:firewall_rules:
+      '139 allow NFS':
+        dport: 2049
+  GlanceNfsEnabled: true
+  GlanceNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/glance
+  GlanceNfsOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
+  NovaNfsEnabled: true
+  NovaNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/nova
+  NovaNfsOptions: 'rw,sync,context=system_u:object_r:nfs_t:s0'
   DockerPuppetProcessCount: 10
   NeutronNetworkVLANRanges: 'datacentre:500:525'
   SshServerOptions:
index 048833d..74e0c1f 100644 (file)
@@ -14,6 +14,16 @@ parameter_defaults:
   ExtraConfig:
     tripleo::ringbuilder::build_ring: false
     nova::api::default_floating_pool: 'external'
+  ControllerExtraConfig:
+    tripleo::firewall:firewall_rules:
+      '139 allow NFS':
+        dport: 2049
+  GlanceNfsEnabled: true
+  GlanceNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/glance
+  GlanceNfsOptions: 'rw,sync,context=system_u:object_r:glance_var_lib_t:s0'
+  NovaNfsEnabled: true
+  NovaNfsShare: overcloud-controller-0.opnfvlf.org:/root/nfs/nova
+  NovaNfsOptions: 'rw,sync,context=system_u:object_r:nfs_t:s0'
   DockerPuppetProcessCount: 10
   NeutronNetworkVLANRanges: 'datacentre:500:525'
   SshServerOptions: