Merge "Add novajoin entries to the TLS-everywhere environment file"
authorJenkins <jenkins@review.openstack.org>
Thu, 26 Jan 2017 22:27:14 +0000 (22:27 +0000)
committerGerrit Code Review <review@openstack.org>
Thu, 26 Jan 2017 22:27:14 +0000 (22:27 +0000)
37 files changed:
capabilities-map.yaml
ci/environments/multinode_major_upgrade.yaml [new file with mode: 0644]
environments/horizon_password_validation.yaml [new file with mode: 0644]
environments/services/ceph-rbdmirror.yaml [new file with mode: 0644]
overcloud-resource-registry-puppet.j2.yaml
puppet/major_upgrade_steps.j2.yaml
puppet/services/README.rst
puppet/services/aodh-api.yaml
puppet/services/aodh-evaluator.yaml
puppet/services/aodh-listener.yaml
puppet/services/aodh-notifier.yaml
puppet/services/barbican-api.yaml
puppet/services/ceilometer-agent-central.yaml
puppet/services/ceilometer-agent-compute.yaml
puppet/services/ceilometer-agent-notification.yaml
puppet/services/ceilometer-api.yaml
puppet/services/ceilometer-collector.yaml
puppet/services/ceph-external.yaml
puppet/services/ceph-mon.yaml
puppet/services/ceph-osd.yaml
puppet/services/cinder-api.yaml
puppet/services/database/mongodb.yaml
puppet/services/gnocchi-api.yaml
puppet/services/gnocchi-metricd.yaml
puppet/services/gnocchi-statsd.yaml
puppet/services/horizon.yaml
puppet/services/ironic-api.yaml
puppet/services/ironic-conductor.yaml
puppet/services/neutron-dhcp.yaml
puppet/services/pacemaker/ceph-rbdmirror.yaml [new file with mode: 0644]
puppet/services/services.yaml
puppet/services/snmp.yaml
puppet/services/swift-ringbuilder.yaml
puppet/services/swift-storage.yaml
puppet/upgrade_config.yaml
releasenotes/notes/6.0.0-b52a14a71fc62788.yaml [new file with mode: 0644]
roles_data.yaml

index cd84631..aae8930 100644 (file)
@@ -537,3 +537,15 @@ topics:
             description:
             requires:
               - overcloud-resource-registry-puppet.yaml
+
+  - title: Security Options
+    description: Security Hardening Options
+    environment_groups:
+      - title: Horizon Password Validation
+        description: Enable Horizon Password validation
+        environments:
+          - file: environments/horizon_password_validation.yaml
+            title: Horizon Password Validation
+            description:
+            requires:
+              - overcloud-resource-registry-puppet.yaml
diff --git a/ci/environments/multinode_major_upgrade.yaml b/ci/environments/multinode_major_upgrade.yaml
new file mode 100644 (file)
index 0000000..7de1594
--- /dev/null
@@ -0,0 +1,46 @@
+resource_registry:
+  OS::TripleO::Controller::Net::SoftwareConfig: ../heat-templates/net-config-multinode.yaml
+  OS::TripleO::Compute::Net::SoftwareConfig: ../heat-templates/net-config-multinode.yaml
+  OS::TripleO::Services::Core: multinode-core.yaml
+
+parameter_defaults:
+  ControllerServices:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::Core
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Keystone
+    - OS::TripleO::Services::GlanceApi
+    - OS::TripleO::Services::GlanceRegistry
+    - OS::TripleO::Services::NeutronDhcpAgent
+    - OS::TripleO::Services::NeutronL3Agent
+    - OS::TripleO::Services::NeutronMetadataAgent
+    - OS::TripleO::Services::NeutronServer
+    - OS::TripleO::Services::NeutronCorePlugin
+    - OS::TripleO::Services::NeutronOvsAgent
+    - OS::TripleO::Services::CinderApi
+    - OS::TripleO::Services::CinderScheduler
+    - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::HeatApi
+    - OS::TripleO::Services::HeatApiCfn
+    - OS::TripleO::Services::HeatApiCloudwatch
+    - OS::TripleO::Services::HeatEngine
+    - OS::TripleO::Services::SwiftProxy
+    - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::SwiftRingBuilder
+    - OS::TripleO::Services::SaharaApi
+    - OS::TripleO::Services::SaharaEngine
+    - OS::TripleO::Services::MySQL
+    - OS::TripleO::Services::RabbitMQ
+    - OS::TripleO::Services::HAproxy
+    - OS::TripleO::Services::Keepalived
+    - OS::TripleO::Services::Memcached
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+  ControllerExtraConfig:
+    nova::compute::libvirt::services::libvirt_virt_type: qemu
+    nova::compute::libvirt::libvirt_virt_type: qemu
+    # Required for Centos 7.3 and Qemu 2.6.0
+    nova::compute::libvirt::libvirt_cpu_mode: 'none'
+  SwiftCeilometerPipelineEnabled: False
diff --git a/environments/horizon_password_validation.yaml b/environments/horizon_password_validation.yaml
new file mode 100644 (file)
index 0000000..1a0f92c
--- /dev/null
@@ -0,0 +1,5 @@
+# Use this enviroment to pass in validation regex for horizons password
+# validation checks
+parameter_defaults:
+  HorizonPasswordValidator: '.*'
+  HorizonPasswordValidatorHelp: 'Your password does not meet the requirements.'
diff --git a/environments/services/ceph-rbdmirror.yaml b/environments/services/ceph-rbdmirror.yaml
new file mode 100644 (file)
index 0000000..b350e4c
--- /dev/null
@@ -0,0 +1,2 @@
+resource_registry:
+  OS::TripleO::Services::CephRbdMirror: ../../puppet/services/pacemaker/ceph-rbdmirror.yaml
index 371a696..7c4e78f 100644 (file)
@@ -119,6 +119,7 @@ resource_registry:
   OS::TripleO::Services::CACerts: puppet/services/ca-certs.yaml
   OS::TripleO::Services::CephMds: OS::Heat::None
   OS::TripleO::Services::CephMon: OS::Heat::None
+  OS::TripleO::Services::CephRbdMirror: OS::Heat::None
   OS::TripleO::Services::CephRgw: OS::Heat::None
   OS::TripleO::Services::CephOSD: OS::Heat::None
   OS::TripleO::Services::CephClient: OS::Heat::None
index 433b03a..eae8599 100644 (file)
@@ -1,3 +1,4 @@
+{% set upgrade_steps_max = 8 -%}
 heat_template_version: ocata
 description: 'Upgrade steps for all roles'
 
@@ -15,26 +16,94 @@ parameters:
       Setting to a previously unused value during stack-update will trigger
       the Upgrade resources to re-run on all roles.
 
+conditions:
+  # Conditions to disable any steps where the task list is empty
+{% for step in range(0, upgrade_steps_max) %}
+  {% for role in roles %}
+  UpgradeBatchConfig_Step{{step}}Enabled:
+    not:
+      equals:
+        - {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
+        - []
+  UpgradeConfig_Step{{step}}Enabled:
+    not:
+      equals:
+        - {get_param: [role_data, {{role.name}}, upgrade_tasks]}
+        - []
+  {% endfor %}
+{% endfor %}
+
 resources:
 
+# Upgrade Steps for all roles, batched updates
+# FIXME(shardy): would be nice to make the number of steps configurable
+{% for step in range(0, upgrade_steps_max) %}
+  {% for role in roles %}
+  # Step {{step}} resources
+  {{role.name}}UpgradeBatchConfig_Step{{step}}:
+    type: OS::TripleO::UpgradeConfig
+    condition: UpgradeBatchConfig_Step{{step}}Enabled
+  # The UpgradeConfig resources could actually be created without
+  # serialization, but the event output is easier to follow if we
+  # do, and there should be minimal performance hit (creating the
+  # config is cheap compared to the time to apply the deployment).
+  {% if step > 0 %}
+    depends_on:
+      {% for dep in roles %}
+      - {{dep.name}}UpgradeBatch_Step{{step -1}}
+      {% endfor %}
+  {% endif %}
+    properties:
+      UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
+      step: {{step}}
+
+  {{role.name}}UpgradeBatch_Step{{step}}:
+    type: OS::Heat::StructuredDeploymentGroup
+    condition: UpgradeBatchConfig_Step{{step}}Enabled
+  {% if step > 0 %}
+    depends_on:
+      {% for dep in roles %}
+      - {{dep.name}}UpgradeBatch_Step{{step -1}}
+      {% endfor %}
+  {% endif %}
+    update_policy:
+      batch_create:
+        max_batch_size: {{role.upgrade_batch_size|default(1)}}
+      rolling_update:
+        max_batch_size: {{role.upgrade_batch_size|default(1)}}
+    properties:
+      name: {{role.name}}UpgradeBatch_Step{{step}}
+      servers: {get_param: [servers, {{role.name}}]}
+      config: {get_resource: {{role.name}}UpgradeBatchConfig_Step{{step}}}
+      input_values:
+        role: {{role.name}}
+        update_identifier: {get_param: UpdateIdentifier}
+  {% endfor %}
+{% endfor %}
+
 # Upgrade Steps for all roles
 # FIXME(shardy): would be nice to make the number of steps configurable
-{% for step in range(0, 8) %}
+{% for step in range(0, upgrade_steps_max) %}
   {% for role in roles %}
   # Step {{step}} resources
   {{role.name}}UpgradeConfig_Step{{step}}:
     type: OS::TripleO::UpgradeConfig
+    condition: UpgradeConfig_Step{{step}}Enabled
   # The UpgradeConfig resources could actually be created without
   # serialization, but the event output is easier to follow if we
   # do, and there should be minimal performance hit (creating the
   # config is cheap compared to the time to apply the deployment).
-  {% if step > 0 %}
     depends_on:
+  {% if step > 0 %}
       {% for dep in roles %}
         {% if not dep.disable_upgrade_deployment|default(false) %}
       - {{dep.name}}Upgrade_Step{{step -1}}
         {% endif %}
       {% endfor %}
+  {% else %}
+      {% for dep in roles %}
+      - {{dep.name}}UpgradeBatch_Step{{upgrade_steps_max -1}}
+      {% endfor %}
   {% endif %}
     properties:
       UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_tasks]}
@@ -42,13 +111,18 @@ resources:
   {% if not role.disable_upgrade_deployment|default(false) %}
   {{role.name}}Upgrade_Step{{step}}:
     type: OS::Heat::StructuredDeploymentGroup
-  {% if step > 0 %}
+    condition: UpgradeConfig_Step{{step}}Enabled
     depends_on:
+  {% if step > 0 %}
       {% for dep in roles %}
         {% if not dep.disable_upgrade_deployment|default(false) %}
       - {{dep.name}}Upgrade_Step{{step -1}}
         {% endif %}
       {% endfor %}
+  {% else %}
+      {% for dep in roles %}
+      - {{dep.name}}UpgradeBatch_Step{{upgrade_steps_max -1}}
+      {% endfor %}
   {% endif %}
     properties:
       name: {{role.name}}Upgrade_Step{{step}}
index 6e4e9c1..34cb350 100644 (file)
@@ -49,6 +49,28 @@ are re-asserted when applying latter ones.
 
    5) Service activation (Pacemaker)
 
+Batch Upgrade Steps
+-------------------
+
+Each service template may optionally define a `upgrade_batch_tasks` key, which
+is a list of ansible tasks to be performed during the upgrade process.
+
+Similar to the step_config, we allow a series of steps for the per-service
+upgrade sequence, defined as ansible tasks with a tag e.g "step1" for the first
+step, "step2" for the second, etc. Note that each step is performed in batches,
+then we move on to the next step which is also performed in batches (we don't
+perform all steps on one node, then move on to the next one which means you
+can sequence rolling upgrades of dependent services via the step value).
+
+The tasks performed at each step is service specific, but note that all batch
+upgrade steps are performed before the `upgrade_tasks` described below.  This
+means that all services that support rolling upgrades can be upgraded without
+downtime during `upgrade_batch_tasks`, then any remaining services are stopped
+and upgraded during `upgrade_tasks`
+
+The default batch size is 1, but this can be overridden for each role via the
+`upgrade_batch_size` option in roles_data.yaml
+
 Upgrade Steps
 -------------
 
index 2c44f4d..62c4b09 100644 (file)
@@ -85,3 +85,10 @@ outputs:
         include tripleo::profile::base::aodh::api
       metadata_settings:
         get_attr: [ApacheServiceBase, role_data, metadata_settings]
+      upgrade_tasks:
+        - name: Stop aodh_api service (running under httpd)
+          tags: step2
+          service: name=httpd state=stopped
+        - name: Run aodh dbsync
+          tags: step5
+          command: aodh-dbsync
index 61f8c23..bd87bf8 100644 (file)
@@ -40,3 +40,7 @@ outputs:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
         include tripleo::profile::base::aodh::evaluator
+      upgrade_tasks:
+        - name: Stop aodh_evaluator service
+          tags: step2
+          service: name=openstack-aodh-evaluator state=stopped
index 715165b..606131e 100644 (file)
@@ -40,3 +40,7 @@ outputs:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
         include tripleo::profile::base::aodh::listener
+      upgrade_tasks:
+        - name: Stop aodh_listener service
+          tags: step2
+          service: name=openstack-aodh-listener state=stopped
index da85581..666e641 100644 (file)
@@ -40,3 +40,7 @@ outputs:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
         include tripleo::profile::base::aodh::notifier
+      upgrade_tasks:
+        - name: Stop aodh_notifier service
+          tags: step2
+          service: name=openstack-aodh-notifier state=stopped
index 1f220e6..4e42075 100644 (file)
@@ -136,13 +136,13 @@ outputs:
           nova::compute::barbican_endpoint:
             get_param: [EndpointMap, BarbicanInternal, uri]
           nova::compute::barbican_auth_endpoint:
-            get_param: [EndpointMap, KeystoneV3Internal, uri]
+            get_param: [EndpointMap, KeystoneV3Internal, uri_no_suffix]
         cinder_api:
           cinder::api::keymgr_api_class: >
             castellan.key_manager.barbican_key_manager.BarbicanKeyManager
           cinder::api::keymgr_encryption_api_url:
             get_param: [EndpointMap, BarbicanInternal, uri]
           cinder::api::keymgr_encryption_auth_url:
-            get_param: [EndpointMap, KeystoneV3Internal, uri]
+            get_param: [EndpointMap, KeystoneV3Internal, uri_no_suffix]
       metadata_settings:
         get_attr: [ApacheServiceBase, role_data, metadata_settings]
index b9d8966..99982db 100644 (file)
@@ -54,3 +54,7 @@ outputs:
           - ceilometer_redis_password: {get_param: RedisPassword}
       step_config: |
         include ::tripleo::profile::base::ceilometer::agent::central
+      upgrade_tasks:
+        - name: Stop ceilometer_agent_central service
+          tags: step2
+          service: name=openstack-ceilometer-central state=stopped
index b666b86..d2d299b 100644 (file)
@@ -48,3 +48,7 @@ outputs:
           - ceilometer::agent::compute::instance_discovery_method: {get_param: InstanceDiscoveryMethod}
       step_config: |
         include ::tripleo::profile::base::ceilometer::agent::compute
+      upgrade_tasks:
+        - name: Stop ceilometer_agent_compute service
+          tags: step2
+          service: name=openstack-ceilometer-compute state=stopped
index 9c9a3bd..4cd7c43 100644 (file)
@@ -49,3 +49,7 @@ outputs:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
         include ::tripleo::profile::base::ceilometer::agent::notification
+      upgrade_tasks:
+        - name: Stop ceilometer_agent_notification service
+          tags: step2
+          service: name=openstack-ceilometer-notification state=stopped
index f774167..cd0c46e 100644 (file)
@@ -92,3 +92,10 @@ outputs:
         include ::tripleo::profile::base::ceilometer::api
       metadata_settings:
         get_attr: [ApacheServiceBase, role_data, metadata_settings]
+      upgrade_tasks:
+        - name: Stop ceilometer_api service (running under httpd)
+          tags: step2
+          service: name=httpd state=stopped
+        - name: Run ceilometer upgrade
+          tags: step5
+          command: ceilometer-upgrade --config-file=/etc/ceilometer/ceilometer.conf --skip-gnocchi-resource-types
index 88e7d78..5250c2c 100644 (file)
@@ -59,3 +59,7 @@ outputs:
         get_attr: [CeilometerServiceBase, role_data, service_config_settings]
       step_config: |
         include ::tripleo::profile::base::ceilometer::collector
+      upgrade_tasks:
+        - name: Stop ceilometer_collector service
+          tags: step2
+          service: name=openstack-ceilometer-collector state=stopped
index aaa9b03..134f47c 100644 (file)
@@ -89,23 +89,23 @@ outputs:
         ceph::profile::params::fsid: {get_param: CephClusterFSID}
         ceph::profile::params::rbd_default_features: {get_param: RbdDefaultFeatures}
         ceph::profile::params::client_keys:
-          str_replace:
-            template: "{
-              client.CLIENT_USER: {
-                secret: 'CLIENT_KEY',
-                mode: '0644',
-                cap_mon: 'allow r',
-                cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
-              }
-            }"
-            params:
-              CLIENT_USER: {get_param: CephClientUserName}
-              CLIENT_KEY: {get_param: CephClientKey}
-              NOVA_POOL: {get_param: NovaRbdPoolName}
-              CINDER_POOL: {get_param: CinderRbdPoolName}
-              CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
-              GLANCE_POOL: {get_param: GlanceRbdPoolName}
-              GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
+          map_replace:
+            - CEPH_CLIENT_KEY:
+                secret: {get_param: CephClientKey}
+                mode: '0644'
+                cap_mon: 'allow r'
+                cap_osd:
+                  str_replace:
+                    template: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
+                    params:
+                      NOVA_POOL: {get_param: NovaRbdPoolName}
+                      CINDER_POOL: {get_param: CinderRbdPoolName}
+                      CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
+                      GLANCE_POOL: {get_param: GlanceRbdPoolName}
+                      GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
+            - keys:
+                CEPH_CLIENT_KEY:
+                  list_join: ['.', ['client', {get_param: CephClientUserName}]]
         ceph::profile::params::manage_repo: false
         # FIXME(gfidente): we should not have to list the packages explicitly in
         # the templates, but this should stay until the following is fixed:
index 68ad69b..1ce5833 100644 (file)
@@ -113,3 +113,27 @@ outputs:
         get_attr: [CephBase, role_data, service_config_settings]
       step_config: |
         include ::tripleo::profile::base::ceph::mon
+      upgrade_batch_tasks:
+        # Note we perform these tasks in list order, but they are all step0 so
+        # we can perform a rolling upgrade of all mon nodes in step0, then a
+        # rolling upgrade of all osd nodes in step1
+        - name: Check status
+          tags: step0,validation
+          shell: ceph health | grep -qv HEALTH_ERR
+        # FIXME(shardy) I suspect we can use heat or ansible facts here instead?
+        - name: Get hostname
+          tags: step0
+          shell: hostname -s
+          register: mon_id
+        - name: Stop Ceph Mon
+          tags: step0
+          service: name=ceph-mon@{{mon_id.stdout}} pattern=ceph-mon state=stopped
+        - name: Update ceph packages
+          tags: step0
+          yum: name=ceph-mon state=latest
+        - name: Start ceph-mon service
+          tags: step0
+          service: name=ceph-mon@{{mon_id.stdout}} state=started
+        - name: ceph osd crush tunables default
+          tags: step0
+          shell: ceph osd crush tunables default
index df0ee6c..98f83d0 100644 (file)
@@ -45,3 +45,47 @@ outputs:
                   - '6800-7300'
       step_config: |
         include ::tripleo::profile::base::ceph::osd
+      upgrade_batch_tasks:
+        - name: Check status
+          tags: step1,validation
+          shell: ceph health | grep -qv HEALTH_ERR
+        - name: Get OSD IDs
+          tags: step1
+          shell: ls /var/lib/ceph/osd | awk 'BEGIN { FS = "-" } ; { print $2 }'
+          register: osd_ids
+          # "so that mirrors aren't rebalanced as if the OSD died" - gfidente / leseb
+        - name: ceph osd set noout
+          tags: step1
+          command: ceph osd set noout
+        - name: ceph osd set norebalance
+          tags: step1
+          command: ceph osd set norebalance
+        - name: ceph osd set nodeep-scrub
+          tags: step1
+          command: ceph osd set nodeep-scrub
+        - name: ceph osd set noscrub
+          tags: step1
+          command: ceph osd set noscrub
+        - name: Stop Ceph OSD
+          tags: step1
+          service: name=ceph-osd@$item state=stopped
+          with_items: "{{osd_ids.stdout.strip().split()}}"
+        - name: Update ceph OSD packages
+          tags: step1
+          yum: name=ceph-osd state=latest
+        - name: Start ceph-osd service
+          tags: step1
+          service: name=ceph-osd@$item state=started
+          with_items: "{{osd_ids.stdout.strip().split()}}"
+        - name: ceph osd unset noout
+          tags: step1
+          command: ceph osd unset noout
+        - name: ceph osd unset norebalance
+          tags: step1
+          command: ceph osd unset norebalance
+        - name: ceph osd unset nodeep-scrub
+          tags: step1
+          command: ceph osd unset nodeep-scrub
+        - name: ceph osd unset noscrub
+          tags: step1
+          command: ceph osd unset noscrub
index a5c912e..e3c9632 100644 (file)
@@ -149,6 +149,9 @@ outputs:
       metadata_settings:
         get_attr: [ApacheServiceBase, role_data, metadata_settings]
       upgrade_tasks:
+        - name: "PreUpgrade step0: Check service openstack-cinder-api is running"
+          shell: /usr/bin/systemctl show 'openstack-cinder-api' --property ActiveState | grep '\bactive\b'
+          tags: step0,validation
         - name: check for cinder running under apache (post upgrade)
           tags: step2
           shell: "apachectl -t -D DUMP_VHOSTS | grep -q cinder"
index 8290cae..63ec444 100644 (file)
@@ -66,3 +66,10 @@ outputs:
             mongodb::server::bind_ip: {get_param: [ServiceNetMap, MongodbNetwork]}
       step_config: |
         include ::tripleo::profile::base::database::mongodb
+      upgrade_tasks:
+        - name: Stop mongodb service
+          tags: step2
+          service: name=mongod state=stopped
+        - name: Start mongodb service
+          tags: step4
+          service: name=mongod state=started
index ae384ce..bb2ff58 100644 (file)
@@ -133,3 +133,10 @@ outputs:
             - "%{hiera('mysql_bind_host')}"
       metadata_settings:
         get_attr: [ApacheServiceBase, role_data, metadata_settings]
+      upgrade_tasks:
+        - name: Stop gnocchi_api service (running under httpd)
+          tags: step2
+          service: name=httpd state=stopped
+        - name: Run gnocchi upgrade
+          tags: step5
+          command: gnocchi-upgrade
index e5f9a8e..d888e2a 100644 (file)
@@ -22,7 +22,7 @@ parameters:
     default: 'overcloud-gnocchi-metricd'
     type: string
   GnocchiMetricdWorkers:
-    default: ''
+    default: '%{::os_workers}'
     description: Number of workers for Gnocchi MetricD
     type: string
 
@@ -46,3 +46,7 @@ outputs:
           - gnocchi::metricd::workers: {get_param: GnocchiMetricdWorkers}
       step_config: |
         include ::tripleo::profile::base::gnocchi::metricd
+      upgrade_tasks:
+        - name: Stop gnocchi_metricd service
+          tags: step2
+          service: name=openstack-gnocchi-metricd state=stopped
index df438b3..d5012cb 100644 (file)
@@ -45,3 +45,7 @@ outputs:
                 proto: 'udp'
       step_config: |
         include ::tripleo::profile::base::gnocchi::statsd
+      upgrade_tasks:
+        - name: Stop gnocchi_statsd service
+          tags: step2
+          service: name=openstack-gnocchi-statsd state=stopped
index cf35d20..2111021 100644 (file)
@@ -27,6 +27,14 @@ parameters:
     description: A list of IP/Hostname for the server Horizon is running on.
                  Used for header checks.
     type: comma_delimited_list
+  HorizonPasswordValidator:
+    description: Regex for password validation
+    type: string
+    default: ''
+  HorizonPasswordValidatorHelp:
+    description: Help text for password validation
+    type: string
+    default: ''
   HorizonSecret:
     description: Secret key for Django
     type: string
@@ -71,6 +79,8 @@ outputs:
             options: ['FollowSymLinks','MultiViews']
           horizon::bind_address: {get_param: [ServiceNetMap, HorizonNetwork]}
           horizon::keystone_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
+          horizon::password_validator: {get_param: [HorizonPasswordValidator]}
+          horizon::password_validator_help: {get_param: [HorizonPasswordValidatorHelp]}
           horizon::secret_key:
             yaql:
               expression: $.data.passwords.where($ != '').first()
index aebb37b..ff91eb6 100644 (file)
@@ -81,3 +81,7 @@ outputs:
           ironic::db::mysql::allowed_hosts:
             - '%'
             - "%{hiera('mysql_bind_host')}"
+      upgrade_tasks:
+        - name: Stop ironic_api service
+          tags: step2
+          service: name=openstack-ironic-api state=stopped
index 194afec..a10c03a 100644 (file)
@@ -98,3 +98,10 @@ outputs:
 
       step_config: |
         include ::tripleo::profile::base::ironic::conductor
+      upgrade_tasks:
+        - name: Stop ironic_conductor service
+          tags: step2
+          service: name=openstack-ironic-conductor state=stopped
+        - name: Sync ironic_conductor DB
+          tags: step5
+          command: ironic-dbsync
index 5e7de18..bb4742c 100644 (file)
@@ -39,6 +39,10 @@ parameters:
     default:
       tag: openstack.neutron.agent.dhcp
       path: /var/log/neutron/dhcp-agent.log
+  NeutronDhcpAgentDnsmasqDnsServers:
+    default: []
+    description: List of servers to use as dnsmasq forwarders
+    type: comma_delimited_list
 
 resources:
 
@@ -64,6 +68,7 @@ outputs:
           - neutron::agents::dhcp::enable_isolated_metadata: {get_param: NeutronEnableIsolatedMetadata}
             neutron::agents::dhcp::enable_force_metadata: {get_param: NeutronEnableForceMetadata}
             neutron::agents::dhcp::enable_metadata_network: {get_param: NeutronEnableMetadataNetwork}
+            neutron::agents::dhcp::dnsmasq_dns_servers: {get_param: NeutronDhcpAgentDnsmasqDnsServers}
             tripleo.neutron_dhcp.firewall_rules:
               '115 neutron dhcp input':
                 proto: 'udp'
diff --git a/puppet/services/pacemaker/ceph-rbdmirror.yaml b/puppet/services/pacemaker/ceph-rbdmirror.yaml
new file mode 100644 (file)
index 0000000..7686028
--- /dev/null
@@ -0,0 +1,47 @@
+heat_template_version: ocata
+
+description: >
+  Ceph RBD mirror service.
+
+parameters:
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CephClientUserName:
+    default: openstack
+    type: string
+
+resources:
+  CephBase:
+    type: ../ceph-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceph RBD mirrror service.
+    value:
+      service_name: ceph_rbdmirror
+      config_settings:
+        map_merge:
+          - get_attr: [CephBase, role_data, config_settings]
+          - tripleo::profile::pacemaker::ceph::rbdmirror::client_name: {get_param: CephClientUserName}
+            tripleo.ceph_rbdmirror.firewall_rules:
+              '113 ceph_rbdmirror':
+                dport:
+                  - '6800-7300'
+      step_config: |
+        include ::tripleo::profile::pacemaker::ceph::rbdmirror
\ No newline at end of file
index 90268c7..80da535 100644 (file)
@@ -118,4 +118,9 @@ outputs:
           # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
           expression: $.data.where($ != null).select($.get('upgrade_tasks')).where($ != null).flatten().distinct()
           data: {get_attr: [ServiceChain, role_data]}
+      upgrade_batch_tasks:
+        yaql:
+          # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
+          expression: $.data.where($ != null).select($.get('upgrade_batch_tasks')).where($ != null).flatten().distinct()
+          data: {get_attr: [ServiceChain, role_data]}
       service_metadata_settings: {get_attr: [ServiceServerMetadataHook, metadata]}
index be9d143..fd6ed81 100644 (file)
@@ -43,3 +43,7 @@ outputs:
             proto: 'udp'
       step_config: |
         include ::tripleo::profile::base::snmp
+      upgrade_tasks:
+        - name: Stop snmp service
+          tags: step2
+          service: name=snmpd state=stopped
index a7ba7ba..2e3c818 100644 (file)
@@ -43,6 +43,16 @@ parameters:
     description: 'Use a local directory for Swift storage services when building rings'
     type: boolean
 
+conditions:
+  swift_use_local_dir:
+    and:
+    - equals:
+      - get_param: SwiftUseLocalDir
+      - true
+    - equals:
+      - get_param: SwiftRawDisks
+      - {}
+
 outputs:
   role_data:
     description: Role data for Swift Ringbuilder configuration.
@@ -59,7 +69,7 @@ outputs:
             expression: $.data.raw_disk_lists.flatten()
             data:
               raw_disk_lists:
-              - {if: [{get_param: SwiftUseLocalDir}, [':%PORT%/d1'], []]}
+              - {if: [swift_use_local_dir, [':%PORT%/d1'], []]}
               - repeat:
                   template: ':%PORT%/DEVICE'
                   for_each:
index 08df928..247b23f 100644 (file)
@@ -56,6 +56,17 @@ resources:
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
 
+conditions:
+  swift_mount_check:
+    or:
+    - equals:
+      - get_param: SwiftMountCheck
+      - true
+    - not:
+        equals:
+        - get_param: SwiftRawDisks
+        - {}
+
 outputs:
   role_data:
     description: Role data for the Swift Proxy role.
@@ -65,7 +76,7 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [SwiftBase, role_data, config_settings]
-          - swift::storage::all::mount_check: {get_param: SwiftMountCheck}
+          - swift::storage::all::mount_check: {if: [swift_mount_check, true, false]}
             tripleo::profile::base::swift::storage::enable_swift_storage: {get_param: ControllerEnableSwiftStorage}
             tripleo.swift_storage.firewall_rules:
               '123 swift storage':
index e892d81..c37cc03 100644 (file)
@@ -11,6 +11,11 @@ parameters:
     type: string
     description: Step number of the upgrade
 
+  SkipUpgradeConfigTags:
+    type: comma_delimited_list
+    description: Ansible tags to skip during upgrade, e.g validation skips pre-upgrade validations
+    default: []
+
 resources:
 
   AnsibleConfig:
@@ -30,6 +35,10 @@ resources:
     properties:
       group: ansible
       options:
+        skip_tags:
+          list_join:
+            - ","
+            - {get_param: SkipUpgradeConfigTags}
         tags:
           str_replace:
             template: "stepSTEP"
diff --git a/releasenotes/notes/6.0.0-b52a14a71fc62788.yaml b/releasenotes/notes/6.0.0-b52a14a71fc62788.yaml
new file mode 100644 (file)
index 0000000..069cbd2
--- /dev/null
@@ -0,0 +1,95 @@
+---
+prelude: >
+    6.0.0 is the final release for Ocata.
+    It's the first release where release notes are added.
+features:
+  - Fujitsu Neutron plugin for FOS support.  Users can deploy
+    Neutron with this plugin by using
+    environments/neutron-ml2-fujitsu-fossw.yaml environment file.
+  - Expose InstanceDiscoveryMethod parameter to configure Ceilometer
+    method used to discover instances running on compute node.
+    Default value to 'libvirt_metadata'. Allowed values are 'naive',
+    'libvirt_metadata' and 'workload_partitioning'.
+  - Make ServiceNetMap support custom network names.
+    Note that operators will still be expected to pass any ServiceNetMap
+    overrides with the "new" network name, e.g whatever NetName specifies,
+    otherwise environment files could get very confusing.
+  - Nova Placement API support.  As this new service is required, deploy it
+    by default in WSGI with Apache, like other API services.
+  - Cinder pass-through iSER backend support.
+  - etcd composable services, used by networking-vpp ML2 driver as the
+    messaging mechanism.
+  - Allow to configure cron parameters for Cinder, Heat, Keystone and Nova
+    crontabs.
+  - Export NovaDefaultFloatingPool parameter to configure the default pool
+    of floating IP addressed available. Default to 'public' for backward
+    compatibility.
+  - Bump Heat Templates to 'ocata' version, to match Heat requirements.
+  - Configure OVS agent firewall driver only if NeutronOVSFirewallDriver
+    is set.
+  - Expose RbdDefaultFeatures parameter to configure the default features
+    enabled when creating a block device image.
+    Only applies to format '2' images. Set to '1' for Jewel clients using
+    older Ceph servers.
+  - Cinder HPELeftHandISCSIDriver backend support.
+  - Pacemaker stopped to manage Ceilometer, Cinder API,
+    Cinder Scheduler, MongoDB, Glance, Gnocchi, Heat, Apache, Memcached,
+    Neutron, Nova and Sahara.
+  - Ceph MDS service support. Service can be enable with
+    environments/services/ceph-mds.yaml environment file.
+  - Expose HeatConvergenceEngine and HeatMaxResourcesPerStack parameters
+    to configure Heat.
+  - Add pre-network hook and example showing config-then-reboot.
+  - Expose LibvirtEnabledPerfEvents parameter in Nova Compute service.
+    Default to an empty array.
+    This is a performance event list which could be used as monitor.
+  - Increase libvirt/qemu.conf max_files to 32768 and max_processes to
+    131072.
+  - Split OVN northd and ml2 plugin, so we can deploy OVNDBs and Northd
+    services on different nodes.
+  - Add hook to generate metadata from service profiles.
+    This is useful for nova vendordata plugins that can parse said metadata.
+  - Expose EventPipelinePublishers to Ceilometer and set the default to
+    'notifier://?topic=alarm.all'.
+  - Add Panko service support. This service is not enabled by default. Use
+    environments/services/enable-panko.yaml to include it in your deployment.
+  - Add EC2-API composable service support.
+upgrade:
+  - Update OpenDaylight deployment to use networking-odl v2 as a mechanism
+    driver.
+deprecations:
+  - Glance Registry service has been removed and Glance API v2 is now deploy
+    by default. Glance API v1 is not supported anymore in TripleO.
+  - Remove CeilometerStoreEvents parameter, which has been removed
+    in Ceilometer.
+  - Ceilometer API service is deprecated and will be removed in a future
+    release. If you would like to disable it, use
+    environments/services/disable-ceilometer-api.yaml environment file.
+  - Removes deprecated OpenDaylight L2 only deployments.
+    Deploying ODL without L3 DVR is no longer supported.
+security:
+  - Disallow iframe embed in Horizon configuration to prevent dashboard being
+    embedded within an iframe and exposed to Cross-Frame Scripting (XFS)
+    vulnerability on legacy browsers.
+  - Allow management of enforce_password_check in Horizons configuration to
+    display an 'Admin Password' field on the Change Password form to verify that
+    it is indeed the admin logged-in who wants to change the password.
+  - Allow management of disable_password_reveal in Horizon, to remove the
+    password reveal option.
+  - Enable secure_proxy_ssl_header option in Horizons configuration to take
+    X-Forwarded-Proto header into account when forming URLs.
+fixes:
+  - Fixes `bug 1645898
+    <https://bugs.launchpad.net/tripleo/+bug/1645898>`__ so epmd is binded on
+    the right address, where RabbitMQ is listening too.
+  - Fixes `bug 1652184
+    <https://bugs.launchpad.net/tripleo/+bug/1652184>`__ so swap partitions
+    can be handled from an environment file thanks to AllNodesExtraConfig.
+  - Add retry to RHEL registration, useful when having network outages during
+    registration.
+  - Fixes `bug 1651476
+    <https://bugs.launchpad.net/tripleo/+bug/1651476>`__ so firewall rules
+    are created for Opendaylight API service.
+  - Fixes `bug 1643487
+    <https://bugs.launchpad.net/tripleo/+bug/1643487>`__ to prevent source
+    address from binding to a VIP for database connection.
index 90250aa..a21ef96 100644 (file)
@@ -17,8 +17,9 @@
 # disable_constraints: (boolean) optional, whether to disable Nova and Glance
 # constraints for each role specified in the templates.
 #
-# disable_upgrade_deployment: (boolean) optional, whether to run the composable upgrade
-# steps for all services that are deployed on the particular role.
+# upgrade_batch_size: (number): batch size for upgrades where tasks are
+# specified by services to run in batches vs all nodes at once.
+# This defaults to 1, but larger batches may be specified here.
 #
 # ServicesDefault: (list) optional default list of services to be deployed
 # on the role, defaults to an empty list. Sets the default for the
@@ -31,6 +32,7 @@
     - OS::TripleO::Services::CephMds
     - OS::TripleO::Services::CephMon
     - OS::TripleO::Services::CephExternal
+    - OS::TripleO::Services::CephRbdMirror
     - OS::TripleO::Services::CephRgw
     - OS::TripleO::Services::CinderApi
     - OS::TripleO::Services::CinderBackup