Merge "Set virsh secret with an init step when using Ceph"
authorJenkins <jenkins@review.openstack.org>
Fri, 11 Aug 2017 11:28:41 +0000 (11:28 +0000)
committerGerrit Code Review <review@openstack.org>
Fri, 11 Aug 2017 11:28:41 +0000 (11:28 +0000)
docker/services/nova-libvirt.yaml
puppet/services/nova-compute.yaml
puppet/services/nova-libvirt.yaml

index 2f3851a..916b057 100644 (file)
@@ -56,7 +56,21 @@ parameters:
     description: Port that dockerized nova migration target sshd service
                  binds to.
     type: number
-
+  NovaEnableRbdBackend:
+    default: false
+    description: Whether to enable or not the Rbd backend for Nova
+    type: boolean
+  CinderEnableRbdBackend:
+    default: false
+    description: Whether to enable or not the Rbd backend for Cinder
+    type: boolean
+  CephClientKey:
+    description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
+    type: string
+    hidden: true
+  CephClusterFSID:
+    type: string
+    description: The Ceph cluster FSID. Must be a UUID.
 
 conditions:
 
@@ -69,6 +83,15 @@ conditions:
       - {get_param: UseTLSTransportForLiveMigration}
       - true
 
+  need_libvirt_secret:
+    or:
+    - equals:
+      - {get_param: NovaEnableRbdBackend}
+      - true
+    - equals:
+      - {get_param: CinderEnableRbdBackend}
+      - true
+
 resources:
 
   ContainersCommon:
@@ -102,7 +125,7 @@ outputs:
             - {get_attr: [MySQLClient, role_data, step_config]}
       puppet_config:
         config_volume: nova_libvirt
-        puppet_tags: libvirtd_config,nova_config,file,exec
+        puppet_tags: libvirtd_config,nova_config,file
         step_config: *step_config
         config_image: {get_param: DockerNovaLibvirtConfigImage}
       kolla_config:
@@ -145,21 +168,46 @@ outputs:
                   - /run:/run
                   - /sys/fs/cgroup:/sys/fs/cgroup
                   - /var/lib/nova:/var/lib/nova
-                  - /etc/libvirt/secrets:/etc/libvirt/secrets
+                  - /etc/libvirt:/etc/libvirt
                   # Needed to use host's virtlogd
                   - /var/run/libvirt:/var/run/libvirt
                   - /var/lib/libvirt:/var/lib/libvirt
-                  - /etc/libvirt/qemu:/etc/libvirt/qemu
                   - /var/log/libvirt/qemu:/var/log/libvirt/qemu:ro
                   - /var/log/containers/nova:/var/log/nova
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+        step_4:
+          if:
+            - need_libvirt_secret
+            - nova_libvirt_init_secret:
+                detach: false
+                image: {get_param: DockerNovaLibvirtImage}
+                privileged: false
+                user: root
+                volumes:
+                  list_concat:
+                    - {get_attr: [ContainersCommon, volumes]}
+                    -
+                      - /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova:/etc/nova:ro
+                      - /etc/libvirt:/etc/libvirt
+                      - /var/run/libvirt:/var/run/libvirt
+                      - /var/lib/libvirt:/var/lib/libvirt
+                command:
+                  - /bin/bash
+                  - -c
+                  - str_replace:
+                      template: /usr/bin/virsh secret-define --file /etc/nova/secret.xml && /usr/bin/virsh secret-set-value --secret 'SECRET_UUID' --base64 'SECRET_KEY'
+                      params:
+                        SECRET_UUID: {get_param: CephClusterFSID}
+                        SECRET_KEY: {get_param: CephClientKey}
+            - {}
       host_prep_tasks:
         - name: create libvirt persistent data directories
           file:
             path: "{{ item }}"
             state: directory
           with_items:
+            - /etc/libvirt
             - /etc/libvirt/secrets
             - /etc/libvirt/qemu
             - /var/lib/libvirt
index 6e1f3f5..36866a3 100644 (file)
@@ -170,6 +170,11 @@ outputs:
             tripleo::profile::base::nova::migration::client::ssh_port: {get_param: MigrationSshPort}
             nova::compute::rbd::libvirt_images_rbd_pool: {get_param: NovaRbdPoolName}
             nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
+            nova::compute::rbd::rbd_keyring:
+              list_join:
+              - '.'
+              - - 'client'
+                - {get_param: CephClientUserName}
             tripleo::profile::base::nova::compute::cinder_nfs_backend: {get_param: CinderEnableNfsBackend}
             rbd_persistent_storage: {get_param: CinderEnableRbdBackend}
             nova::compute::rbd::libvirt_rbd_secret_key: {get_param: CephClientKey}
index e2ae726..04936c3 100644 (file)
@@ -139,6 +139,11 @@ outputs:
           # we manage migration in nova common puppet profile
             nova::compute::libvirt::migration_support: false
             nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
+            nova::compute::rbd::rbd_keyring:
+              list_join:
+              - '.'
+              - - 'client'
+                - {get_param: CephClientUserName}
             nova::compute::rbd::libvirt_rbd_secret_key: {get_param: CephClientKey}
             nova::compute::rbd::libvirt_rbd_secret_uuid: {get_param: CephClusterFSID}
             tripleo::profile::base::nova::migration::client::libvirt_enabled: true