Merge "Add migration SSH tunneling support"
authorJenkins <jenkins@review.openstack.org>
Wed, 19 Apr 2017 01:39:27 +0000 (01:39 +0000)
committerGerrit Code Review <review@openstack.org>
Wed, 19 Apr 2017 01:39:27 +0000 (01:39 +0000)
214 files changed:
README.rst
capabilities-map.yaml
ci/environments/multinode-3nodes.yaml
ci/environments/multinode-container-upgrade.yaml [new file with mode: 0644]
ci/environments/multinode.yaml
ci/environments/multinode_major_upgrade.yaml
ci/environments/scenario001-multinode.yaml
ci/environments/scenario002-multinode.yaml
ci/environments/scenario003-multinode.yaml
ci/environments/scenario004-multinode.yaml
deployed-server/README.rst
deployed-server/deployed-server-bootstrap-centos.sh
deployed-server/deployed-server-bootstrap-rhel.sh
deployed-server/deployed-server.yaml
deployed-server/scripts/get-occ-config.sh
docker/docker-puppet.py
docker/docker-steps.j2
docker/services/README.rst
docker/services/aodh-api.yaml
docker/services/aodh-evaluator.yaml
docker/services/aodh-listener.yaml
docker/services/aodh-notifier.yaml
docker/services/database/mongodb.yaml
docker/services/database/mysql.yaml
docker/services/glance-api.yaml
docker/services/gnocchi-api.yaml
docker/services/gnocchi-metricd.yaml
docker/services/gnocchi-statsd.yaml
docker/services/heat-api-cfn.yaml
docker/services/heat-api.yaml
docker/services/heat-engine.yaml
docker/services/ironic-api.yaml
docker/services/ironic-conductor.yaml
docker/services/ironic-pxe.yaml
docker/services/keystone.yaml
docker/services/mistral-api.yaml
docker/services/mistral-engine.yaml
docker/services/mistral-executor.yaml
docker/services/neutron-api.yaml
docker/services/neutron-dhcp.yaml
docker/services/neutron-l3.yaml
docker/services/neutron-ovs-agent.yaml
docker/services/nova-api.yaml
docker/services/nova-compute.yaml
docker/services/nova-conductor.yaml
docker/services/nova-ironic.yaml
docker/services/nova-libvirt.yaml
docker/services/nova-placement.yaml
docker/services/nova-scheduler.yaml
docker/services/panko-api.yaml
docker/services/rabbitmq.yaml
docker/services/services.yaml
docker/services/swift-proxy.yaml
docker/services/swift-storage.yaml
docker/services/zaqar.yaml
environments/cinder-netapp-config.yaml
environments/contrail/contrail-net.yaml
environments/deployed-server-environment.j2.yaml [new file with mode: 0644]
environments/deployed-server-environment.yaml [deleted file]
environments/docker-services-tls-everywhere.yaml [new file with mode: 0644]
environments/enable-internal-tls.yaml
environments/external-loadbalancer-vip-v6.yaml
environments/external-loadbalancer-vip.yaml
environments/hyperconverged-ceph.yaml
environments/logging-environment.yaml
environments/major-upgrade-all-in-one.yaml [deleted file]
environments/major-upgrade-composable-steps-docker.yaml
environments/major-upgrade-composable-steps.yaml
environments/major-upgrade-converge-docker.yaml
environments/major-upgrade-converge.yaml
environments/network-environment.yaml
environments/neutron-bgpvpn.yaml
environments/neutron-l2gw-api.yaml [new file with mode: 0644]
environments/neutron-ml2-bigswitch.yaml
environments/neutron-ml2-cisco-n1kv.yaml
environments/neutron-nuage-config.yaml
environments/neutron-opendaylight.yaml
environments/nova-api-policy.yaml [new file with mode: 0644]
environments/securetty.yaml [new file with mode: 0644]
environments/services/ceilometer-api.yaml [new file with mode: 0644]
environments/services/disable-ceilometer-api.yaml [deleted file]
environments/services/keystone_domain_specific_ldap_backend.yaml [new file with mode: 0644]
environments/services/panko.yaml [deleted file]
environments/services/qdr.yaml [new file with mode: 0644]
environments/swift-external.yaml [new file with mode: 0644]
environments/updates/update-from-192_0_2-subnet.yaml [new file with mode: 0644]
extraconfig/nova_metadata/krb-service-principals.yaml
extraconfig/pre_deploy/rhel-registration/rhel-registration.yaml
extraconfig/pre_deploy/rhel-registration/scripts/rhel-registration
extraconfig/tasks/pacemaker_common_functions.sh
extraconfig/tasks/swift-ring-deploy.yaml [deleted file]
extraconfig/tasks/swift-ring-update.yaml [deleted file]
extraconfig/tasks/tripleo_upgrade_node.sh
extraconfig/tasks/yum_update.sh
net-config-linux-bridge.yaml
network/endpoints/endpoint_data.yaml
network/endpoints/endpoint_map.yaml
network/service_net_map.j2.yaml
overcloud-resource-registry-puppet.j2.yaml
overcloud.j2.yaml
plan-environment.yaml
puppet/config.role.j2.yaml
puppet/controller-role.yaml
puppet/extraconfig/pre_deploy/compute/neutron-ml2-bigswitch.yaml
puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml [deleted file]
puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml
puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
puppet/major_upgrade_steps.j2.yaml
puppet/puppet-steps.j2
puppet/role.role.j2.yaml
puppet/services/aodh-api.yaml
puppet/services/apache-internal-tls-certmonger.yaml [deleted file]
puppet/services/apache.yaml
puppet/services/barbican-api.yaml
puppet/services/ceilometer-agent-ipmi.yaml [new file with mode: 0644]
puppet/services/ceilometer-api.yaml
puppet/services/ceilometer-base.yaml
puppet/services/ceph-rgw.yaml
puppet/services/cinder-api.yaml
puppet/services/cinder-backend-netapp.yaml [new file with mode: 0644]
puppet/services/cinder-volume.yaml
puppet/services/congress.yaml
puppet/services/database/mongodb.yaml
puppet/services/database/mysql-internal-tls-certmonger.yaml [deleted file]
puppet/services/database/mysql.yaml
puppet/services/ec2-api.yaml
puppet/services/external-swift-proxy.yaml [new file with mode: 0644]
puppet/services/glance-api.yaml
puppet/services/gnocchi-api.yaml
puppet/services/gnocchi-base.yaml
puppet/services/heat-api.yaml
puppet/services/heat-engine.yaml
puppet/services/horizon.yaml
puppet/services/ironic-api.yaml
puppet/services/ironic-conductor.yaml
puppet/services/kernel.yaml
puppet/services/keystone.yaml
puppet/services/mistral-api.yaml
puppet/services/mistral-base.yaml
puppet/services/monitoring/sensu-client.yaml
puppet/services/network/contrail-vrouter.yaml
puppet/services/neutron-api.yaml
puppet/services/neutron-base.yaml
puppet/services/neutron-bigswitch-agent.yaml [new file with mode: 0644]
puppet/services/neutron-compute-plugin-nuage.yaml
puppet/services/neutron-compute-plugin-ovn.yaml
puppet/services/neutron-l2gw-api.yaml [new file with mode: 0644]
puppet/services/neutron-ovs-agent.yaml
puppet/services/neutron-ovs-dpdk-agent.yaml
puppet/services/neutron-plugin-ml2-odl.yaml [new file with mode: 0644]
puppet/services/neutron-plugin-nuage.yaml
puppet/services/nova-api.yaml
puppet/services/nova-base.yaml
puppet/services/nova-compute.yaml
puppet/services/nova-ironic.yaml
puppet/services/octavia-api.yaml
puppet/services/octavia-base.yaml
puppet/services/opendaylight-ovs.yaml
puppet/services/openvswitch-upgrade.yaml [new file with mode: 0644]
puppet/services/ovn-dbs.yaml
puppet/services/pacemaker.yaml
puppet/services/panko-api.yaml
puppet/services/qdr.yaml [new file with mode: 0644]
puppet/services/rabbitmq-internal-tls-certmonger.yaml [deleted file]
puppet/services/rabbitmq.yaml
puppet/services/sahara-api.yaml
puppet/services/securetty.yaml [new file with mode: 0644]
puppet/services/services.yaml
puppet/services/swift-proxy.yaml
puppet/services/swift-ringbuilder.yaml
puppet/services/tacker.yaml
puppet/services/tripleo-firewall.yaml
puppet/services/zaqar.yaml
releasenotes/notes/add-ceilometer-agent-ipmi-2c86726d0373d354.yaml [new file with mode: 0644]
releasenotes/notes/add-ipv6-diable-options-9aaee219bb87ac6a.yaml [new file with mode: 0644]
releasenotes/notes/add-l2gw-api-support-2206d3d14f409088.yaml [new file with mode: 0644]
releasenotes/notes/add-ldap-backend-0bda702fb0aa24bf.yaml [new file with mode: 0644]
releasenotes/notes/add-qdr-99a27dffef42c13e.yaml [new file with mode: 0644]
releasenotes/notes/add_db_sync_timeout-c9b2f401cca0b37d.yaml [new file with mode: 0644]
releasenotes/notes/api-policy-4ca739519537f6f4.yaml [new file with mode: 0644]
releasenotes/notes/big-switch-agent-4c743a2112251234.yaml [new file with mode: 0644]
releasenotes/notes/deployed-server-firewall-purge-9d9fe73faf925056.yaml [new file with mode: 0644]
releasenotes/notes/disable-ceilo-api-dfe5d0947563bbe0.yaml [new file with mode: 0644]
releasenotes/notes/disable-core-dump-for-setuid-programs-e83a2a5da908b9c3.yaml [new file with mode: 0644]
releasenotes/notes/disable-kernel-parameter-for-icmp-redirects-f325f91d71b58b5f.yaml [new file with mode: 0644]
releasenotes/notes/docker-service-all-roles-5c22a018caeafcf0.yaml [new file with mode: 0644]
releasenotes/notes/enable-logging-suspicious-packets-d5545586f917d2ca.yaml [new file with mode: 0644]
releasenotes/notes/enable-support-for-external-swift-proxy-941917f8bcc63a5d.yaml [new file with mode: 0644]
releasenotes/notes/fix-cinder-nfs-share-usage-0968f88eff7ffb99.yaml [new file with mode: 0644]
releasenotes/notes/fix-neutron-dpdk-firewall-436aee39a0d7ed65.yaml [new file with mode: 0644]
releasenotes/notes/fix-odl-provider-mapping-hiera-5b3472184be490e2.yaml [new file with mode: 0644]
releasenotes/notes/get-occ-config-local-connector-5bbec3f591a9f311.yaml [new file with mode: 0644]
releasenotes/notes/install-openstack-selinux-d14b2e26feb6d04e.yaml [new file with mode: 0644]
releasenotes/notes/ironic-neutron-integration-76c4f9e0d10785e4.yaml [new file with mode: 0644]
releasenotes/notes/leave-satellite-repo-enabled-8b60528bd5450c7b.yaml [new file with mode: 0644]
releasenotes/notes/make-panko-default-8d0e824fc91cef56.yaml [new file with mode: 0644]
releasenotes/notes/ovn-fcd4b0168e6745a8.yaml [new file with mode: 0644]
releasenotes/notes/ovs-2.5-2.6-composable-upgrades-workaround-73f4e56127c910b4.yaml [new file with mode: 0644]
releasenotes/notes/replace-references-to-old-ctlplane-0df7f2ae8910559c.yaml [new file with mode: 0644]
releasenotes/notes/restrict-access-to-kernel-message-buffer-809160674b92a073.yaml [new file with mode: 0644]
releasenotes/notes/restrict-mongodb-memory-de7bf6754d7234d9.yaml [new file with mode: 0644]
releasenotes/notes/role-tags-16ac2e9e8fcab218.yaml [new file with mode: 0644]
releasenotes/notes/set-ceilometer-auth-flag-382f68ddb2cbcb6b.yaml [new file with mode: 0644]
releasenotes/notes/sriov-pci-passthrough-8f28719b889bdaf7.yaml [new file with mode: 0644]
releasenotes/notes/token-flush-twice-a-day-d4b00a2953a6b383.yaml [new file with mode: 0644]
releasenotes/notes/update-on-rhel-registration-afbef3ead983b08f.yaml [new file with mode: 0644]
releasenotes/notes/update-plan-environment-4e164b57a801e2cb.yaml [new file with mode: 0644]
releasenotes/source/conf.py
requirements.txt
roles_data.yaml
roles_data_undercloud.yaml
scripts/hosts-config.sh
setup.py
tools/yaml-validate.py

index e2b59c5..4eed715 100644 (file)
@@ -76,6 +76,8 @@ and should be executed according to the following table:
 +----------------+-------------+-------------+-------------+-------------+-----------------+
 | neutron        |     ovs     |     ovs     |     ovs     |     ovs     |        X        |
 +----------------+-------------+-------------+-------------+-------------+-----------------+
+| neutron-bgpvpn |             |             |             |      X      |                 |
++----------------+-------------+-------------+-------------+-------------+-----------------+
 | rabbitmq       |      X      |      X      |      X      |      X      |        X        |
 +----------------+-------------+-------------+-------------+-------------+-----------------+
 | mongodb        |      X      |      X      |             |             |                 |
@@ -128,3 +130,9 @@ and should be executed according to the following table:
 +----------------+-------------+-------------+-------------+-------------+-----------------+
 | manila         |             |             |             |      X      |                 |
 +----------------+-------------+-------------+-------------+-------------+-----------------+
+| collectd       |      X      |             |             |             |                 |
++----------------+-------------+-------------+-------------+-------------+-----------------+
+| fluentd        |      X      |             |             |             |                 |
++----------------+-------------+-------------+-------------+-------------+-----------------+
+| sensu-client   |      X      |             |             |             |                 |
++----------------+-------------+-------------+-------------+-------------+-----------------+
index 83b3ac4..0af0e82 100644 (file)
@@ -370,6 +370,11 @@ topics:
             description: Enable FOS in the overcloud
             requires:
               - overcloud-resource-registry-puppet.yaml
+          - file: environments/neutron-l2gw.yaml
+            title: Neutron L2 gateway Service Plugin
+            description: Enables Neutron L2 gateway Service Plugin
+            requires:
+              - overcloud-resource-registry-puppet.yaml
 
   - title: Nova Extensions
     description:
@@ -547,7 +552,7 @@ topics:
         description: Enable monitoring agents
         environments:
           - file: environments/monitoring-environment.yaml
-            title: enable monitoring agents
+            title: Enable monitoring agents
             description:
             requires:
               - overcloud-resource-registry-puppet.yaml
@@ -559,6 +564,14 @@ topics:
             description:
             requires:
               - overcloud-resource-registry-puppet.yaml
+      - title: Performance monitoring
+        description: Enable performance monitoring agents
+        environments:
+          - file: environments/collectd-environment.yaml
+            title: Enable performance monitoring agents
+            description:
+            requires:
+              - overcloud-resource-registry-puppet.yaml
 
   - title: Security Options
     description: Security Hardening Options
@@ -592,3 +605,8 @@ topics:
         environments:
           - file: environments/cadf.yaml
             title: Keystone CADF auditing
+      - title: SecureTTY Values
+        description: Set values within /etc/securetty
+        environments:
+          - file: environments/securetty.yaml
+            title: SecureTTY Values
index d6e2376..56013ad 100644 (file)
@@ -24,7 +24,7 @@
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CinderApi
     - OS::TripleO::Services::CinderScheduler
-    - OS::TripleO::Services::Core
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
@@ -63,7 +63,7 @@
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CinderBackup
     - OS::TripleO::Services::CinderVolume
-    - OS::TripleO::Services::Core
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::MySQL
     - OS::TripleO::Services::MySQLClient
diff --git a/ci/environments/multinode-container-upgrade.yaml b/ci/environments/multinode-container-upgrade.yaml
new file mode 100644 (file)
index 0000000..44a0ce7
--- /dev/null
@@ -0,0 +1,61 @@
+# NOTE: This is an environment specific for containers upgrade
+# CI. Mainly we deploy non-pacemakerized overcloud, as at the time
+# being containerization of services managed by pacemaker is not
+# complete, so we deploy and upgrade the non-HA services for now.
+
+resource_registry:
+  OS::TripleO::Controller::Net::SoftwareConfig: ../common/net-config-multinode-os-net-config.yaml
+  OS::TripleO::Compute::Net::SoftwareConfig: ../common/net-config-multinode-os-net-config.yaml
+
+parameter_defaults:
+  ControllerServices:
+    - OS::TripleO::Services::CephMon
+    - OS::TripleO::Services::CephOSD
+    - OS::TripleO::Services::CinderApi
+    - OS::TripleO::Services::CinderScheduler
+    - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::Docker
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Keystone
+    - OS::TripleO::Services::GlanceApi
+    - OS::TripleO::Services::HeatApi
+    - OS::TripleO::Services::HeatApiCfn
+    - OS::TripleO::Services::HeatApiCloudwatch
+    - OS::TripleO::Services::HeatEngine
+    - OS::TripleO::Services::MySQL
+    - OS::TripleO::Services::MySQLClient
+    - 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::RabbitMQ
+    - OS::TripleO::Services::HAproxy
+    - OS::TripleO::Services::Keepalived
+    - OS::TripleO::Services::Memcached
+    - OS::TripleO::Services::Pacemaker
+    - OS::TripleO::Services::NovaConductor
+    - OS::TripleO::Services::NovaApi
+    - OS::TripleO::Services::NovaPlacement
+    - OS::TripleO::Services::NovaMetadata
+    - OS::TripleO::Services::NovaScheduler
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::SwiftProxy
+    - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::SwiftRingBuilder
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::NovaCompute
+    - OS::TripleO::Services::NovaLibvirt
+  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'
+    #NOTE(gfidente): not great but we need this to deploy on ext4
+    #http://docs.ceph.com/docs/jewel/rados/configuration/filesystem-recommendations/
+    ceph::profile::params::osd_max_object_name_len: 256
+    ceph::profile::params::osd_max_object_namespace_len: 64
+  SwiftCeilometerPipelineEnabled: False
+  Debug: True
index c946ec8..d0d6ba9 100644 (file)
@@ -18,6 +18,7 @@ parameter_defaults:
     - OS::TripleO::Services::CinderApi
     - OS::TripleO::Services::CinderScheduler
     - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
index 2251cc0..c97080f 100644 (file)
@@ -14,6 +14,7 @@ resource_registry:
 parameter_defaults:
   ControllerServices:
     - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
index a6f3571..0282c38 100644 (file)
@@ -4,7 +4,6 @@ resource_registry:
   OS::TripleO::Services::CephMon: ../../puppet/services/ceph-mon.yaml
   OS::TripleO::Services::CephOSD: ../../puppet/services/ceph-osd.yaml
   OS::TripleO::Services::CephClient: ../../puppet/services/ceph-client.yaml
-  OS::TripleO::Services::PankoApi: ../../puppet/services/panko-api.yaml
   OS::TripleO::Services::Collectd: ../../puppet/services/metrics/collectd.yaml
   OS::TripleO::Services::Tacker: ../../puppet/services/tacker.yaml
   OS::TripleO::Services::Congress: ../../puppet/services/congress.yaml
@@ -19,9 +18,12 @@ resource_registry:
   OS::TripleO::Tasks::ControllerPrePuppet: ../../extraconfig/tasks/pre_puppet_pacemaker.yaml
   OS::TripleO::Tasks::ControllerPostPuppet: ../../extraconfig/tasks/post_puppet_pacemaker.yaml
   OS::TripleO::Tasks::ControllerPostPuppetRestart: ../../extraconfig/tasks/post_puppet_pacemaker_restart.yaml
+  OS::TripleO::Services::FluentdClient: /usr/share/openstack-tripleo-heat-templates/puppet/services/logging/fluentd-client.yaml
+  OS::TripleO::Services::SensuClient: /usr/share/openstack-tripleo-heat-templates/puppet/services/monitoring/sensu-client.yaml
 
 parameter_defaults:
   ControllerServices:
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
@@ -50,6 +52,7 @@ parameter_defaults:
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::NovaCompute
     - OS::TripleO::Services::NovaLibvirt
@@ -63,6 +66,7 @@ parameter_defaults:
     - OS::TripleO::Services::CeilometerCollector
     - OS::TripleO::Services::CeilometerExpirer
     - OS::TripleO::Services::CeilometerAgentCentral
+    - OS::TripleO::Services::CeilometerAgentIpmi
     - OS::TripleO::Services::CeilometerAgentNotification
     - OS::TripleO::Services::GnocchiApi
     - OS::TripleO::Services::GnocchiMetricd
@@ -80,6 +84,9 @@ parameter_defaults:
     - OS::TripleO::Services::Congress
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::SensuClient
+
   ControllerExtraConfig:
     nova::compute::libvirt::services::libvirt_virt_type: qemu
     nova::compute::libvirt::libvirt_virt_type: qemu
@@ -113,3 +120,17 @@ parameter_defaults:
     ******************************************************************
   CollectdExtraPlugins:
     - rrdtool
+  LoggingServers:
+    - host: 127.0.0.1
+      port: 24224
+  MonitoringRabbitHost: 127.0.0.1
+  MonitoringRabbitPort: 5676
+  MonitoringRabbitPassword: sensu
+  TtyValues:
+    - console
+    - tty1
+    - tty2
+    - tty3
+    - tty4
+    - tty5
+    - tty6
index cbcfa9b..38d24ee 100644 (file)
@@ -17,6 +17,7 @@ resource_registry:
 
 parameter_defaults:
   ControllerServices:
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
index 6e926f7..5472b49 100644 (file)
@@ -17,6 +17,7 @@ resource_registry:
 
 parameter_defaults:
   ControllerServices:
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
index dc05ab4..25fad4b 100644 (file)
@@ -12,6 +12,7 @@ resource_registry:
   OS::TripleO::Services::ManilaScheduler: ../../puppet/services/manila-scheduler.yaml
   OS::TripleO::Services::ManilaShare: ../../puppet/services/pacemaker/manila-share.yaml
   OS::TripleO::Services::ManilaBackendCephFs: ../../puppet/services/manila-backend-cephfs.yaml
+  OS::TripleO::Services::NeutronBgpVpnApi: ../../puppet/services/neutron-bgpvpn-api.yaml
   # These enable Pacemaker
   OS::TripleO::Tasks::ControllerPrePuppet: ../../extraconfig/tasks/pre_puppet_pacemaker.yaml
   OS::TripleO::Tasks::ControllerPostPuppet: ../../extraconfig/tasks/post_puppet_pacemaker.yaml
@@ -30,6 +31,7 @@ parameter_defaults:
     - OS::TripleO::Services::CephMon
     - OS::TripleO::Services::CephOSD
     - OS::TripleO::Services::CephRgw
+    - OS::TripleO::Services::Docker
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
     - OS::TripleO::Services::GlanceApi
@@ -39,6 +41,7 @@ parameter_defaults:
     - OS::TripleO::Services::HeatEngine
     - OS::TripleO::Services::MySQL
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::NeutronBgpVpnApi
     - OS::TripleO::Services::NeutronDhcpAgent
     - OS::TripleO::Services::NeutronL3Agent
     - OS::TripleO::Services::NeutronMetadataAgent
@@ -83,3 +86,5 @@ parameter_defaults:
   CephAdminKey: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ=='
   CephClientKey: 'AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw=='
   SwiftCeilometerPipelineEnabled: false
+  NeutronServicePlugins: 'router, networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin'
+  BgpvpnServiceProvider: 'BGPVPN:Dummy:networking_bgpvpn.neutron.services.service_drivers.driver_api.BGPVPNDriver:default'
index e4d8299..8638818 100644 (file)
@@ -67,11 +67,11 @@ example:
 parameter_defaults:
   ControlPlaneDefaultRoute: 192.168.122.130
   ControlPlaneSubnetCidr: "24"
-  EC2MetadataIp: "192.0.2.1"
+  EC2MetadataIp: "192.168.24.1"
 
 In this example, 192.168.122.130 is the external management IP of an
 undercloud, thus it is the default route for the configured local_ip value of
-192.0.2.1.
+192.168.24.1.
 
 
 os-collect-config
index 7266ca5..6f2bb12 100644 (file)
@@ -8,9 +8,13 @@ yum install -y \
     openstack-puppet-modules \
     os-net-config \
     openvswitch \
-    python-heat-agent*
+    python-heat-agent* \
+    openstack-selinux
 
 ln -s -f /usr/share/openstack-puppet/modules/* /etc/puppet/modules
 
 setenforce 0
 sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
+
+echo '# empty ruleset created by deployed-server bootstrap' > /etc/sysconfig/iptables
+echo '# empty ruleset created by deployed-server bootstrap' > /etc/sysconfig/ip6tables
index 36ff007..9e9e9b3 100644 (file)
@@ -8,6 +8,10 @@ yum install -y \
     openstack-puppet-modules \
     os-net-config \
     openvswitch \
-    python-heat-agent*
+    python-heat-agent* \
+    openstack-selinux
 
 ln -s -f /usr/share/openstack-puppet/modules/* /etc/puppet/modules
+
+echo '# empty ruleset created by deployed-server bootstrap' > /etc/sysconfig/iptables
+echo '# empty ruleset created by deployed-server bootstrap' > /etc/sysconfig/ip6tables
index 1e8afb2..afdb5d0 100644 (file)
@@ -81,6 +81,7 @@ resources:
   InstanceIdDeployment:
     type: OS::Heat::StructuredDeployment
     properties:
+      name: InstanceIdDeployment
       config: {get_resource: InstanceIdConfig}
       server: {get_resource: deployed-server}
     depends_on: UpgradeInitDeployment
@@ -103,6 +104,7 @@ resources:
   HostsEntryDeployment:
     type: OS::Heat::SoftwareDeployment
     properties:
+      name: HostsEntryDeployment
       config: {get_resource: HostsEntryConfig}
       server: {get_resource: deployed-server}
 
index 6c196f9..28f038c 100755 (executable)
@@ -63,7 +63,7 @@ for role in $OVERCLOUD_ROLES; do
         rg_stack=$(openstack stack resource show overcloud $role -c physical_resource_id -f value)
     done
 
-    stacks=$(openstack stack resource list $rg_stack -c physical_resource_id -f value)
+    stacks=$(openstack stack resource list $rg_stack -c resource_name -c physical_resource_id -f json | jq -r "sort_by(.resource_name) | .[] | .physical_resource_id")
 
     i=0
 
@@ -89,16 +89,16 @@ for role in $OVERCLOUD_ROLES; do
         done
 
         echo "======================"
-        echo "$role$i os-collect-config.conf configuration:"
+        echo "$role$i deployed-server.json configuration:"
 
-        config="
-[DEFAULT]
-collectors=request
-command=os-refresh-config
-polling_interval=30
-
-[request]
-metadata_url=$deployed_server_metadata_url"
+        config="{
+  \"os-collect-config\": {
+    \"collectors\": [\"request\", \"local\"],
+    \"request\": {
+      \"metadata_url\": \"$deployed_server_metadata_url\"
+    }
+  }
+}"
 
         echo "$config"
         echo "======================"
@@ -108,12 +108,11 @@ metadata_url=$deployed_server_metadata_url"
         host=
         eval host=\${${role}_hosts_a[i]}
         if [ -n "$host" ]; then
-            # Delete the os-collect-config.conf template so our file won't get
-            # overwritten
-            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo /bin/rm -f /usr/libexec/os-apply-config/templates/etc/os-collect-config.conf
-            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host "echo \"$config\" > os-collect-config.conf"
-            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo cp os-collect-config.conf /etc/os-collect-config.conf
-            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl restart os-collect-config
+            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host "echo '$config' > deployed-server.json"
+            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo mkdir -p -m 0700 /var/lib/os-collect-config/local-data/ || true
+            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo cp deployed-server.json /var/lib/os-collect-config/local-data/deployed-server.json
+            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl start os-collect-config
+            ssh $SSH_OPTIONS -i $SUBNODES_SSH_KEY $host sudo systemctl enable os-collect-config
         fi
 
         let i+=1
index 0f07943..909a2c8 100755 (executable)
@@ -61,7 +61,10 @@ def rm_container(name):
                                stderr=subprocess.PIPE)
     cmd_stdout, cmd_stderr = subproc.communicate()
     print(cmd_stdout)
-    print(cmd_stderr)
+    if cmd_stderr and \
+            cmd_stderr != 'Error response from daemon: ' \
+            'No such container: {}\n'.format(name):
+        print(cmd_stderr)
 
 process_count = int(os.environ.get('PROCESS_COUNT',
                                    multiprocessing.cpu_count()))
@@ -202,10 +205,17 @@ def mp_puppet_config((config_volume, puppet_tags, manifest, config_image, volume
                 '--volume', '/usr/share/openstack-puppet/modules/:/usr/share/openstack-puppet/modules/:ro',
                 '--volume', '/var/lib/config-data/:/var/lib/config-data/:rw',
                 '--volume', 'tripleo_logs:/var/log/tripleo/',
+                # OpenSSL trusted CA injection
+                '--volume', '/etc/pki/ca-trust/extracted:/etc/pki/ca-trust/extracted:ro',
+                '--volume', '/etc/pki/tls/certs/ca-bundle.crt:/etc/pki/tls/certs/ca-bundle.crt:ro',
+                '--volume', '/etc/pki/tls/certs/ca-bundle.trust.crt:/etc/pki/tls/certs/ca-bundle.trust.crt:ro',
+                '--volume', '/etc/pki/tls/cert.pem:/etc/pki/tls/cert.pem:ro',
+                # script injection
                 '--volume', '%s:%s:rw' % (sh_script, sh_script) ]
 
         for volume in volumes:
-            dcmd.extend(['--volume', volume])
+            if volume:
+                dcmd.extend(['--volume', volume])
 
         dcmd.extend(['--entrypoint', sh_script])
 
@@ -246,9 +256,9 @@ for config_volume in configs:
     volumes = service[4] if len(service) > 4 else []
 
     if puppet_tags:
-        puppet_tags = "file,file_line,concat,%s" % puppet_tags
+        puppet_tags = "file,file_line,concat,augeas,%s" % puppet_tags
     else:
-        puppet_tags = "file,file_line,concat"
+        puppet_tags = "file,file_line,concat,augeas"
 
     process_map.append([config_volume, puppet_tags, manifest, config_image, volumes])
 
@@ -258,4 +268,13 @@ for p in process_map:
 # Fire off processes to perform each configuration.  Defaults
 # to the number of CPUs on the system.
 p = multiprocessing.Pool(process_count)
-p.map(mp_puppet_config, process_map)
+returncodes = list(p.map(mp_puppet_config, process_map))
+config_volumes = [pm[0] for pm in process_map]
+success = True
+for returncode, config_volume in zip(returncodes, config_volumes):
+    if returncode != 0:
+        print('ERROR configuring %s' % config_volume)
+        success = False
+
+if not success:
+    sys.exit(1)
index 301d838..f0af8e2 100644 (file)
@@ -1,7 +1,14 @@
 # certain initialization steps (run in a container) will occur
-# on the first role listed in the roles file
-{% set primary_role_name = roles[0].name -%}
-
+# on the role marked as primary controller or the first role listed
+{%- set primary_role = [roles[0]] -%}
+{%- for role in roles -%}
+  {%- if 'primary' in role.tags and 'controller' in role.tags -%}
+    {%- set _ = primary_role.pop() -%}
+    {%- set _ = primary_role.append(role) -%}
+  {%- endif -%}
+{%- endfor -%}
+{%- set primary_role_name = primary_role[0].name -%}
+# primary role is: {{primary_role_name}}
 heat_template_version: ocata
 
 description: >
index 219f35e..84ac842 100644 (file)
@@ -23,7 +23,7 @@ puppet (our configuration tool of choice) into the Kolla base images. The
 undercloud nova-scheduler also requires openstack-tripleo-common to
 provide custom filters.
 
-To build Kolla images for TripleO adjust your kolla config to build your
+To build Kolla images for TripleO adjust your kolla config [*]_ to build your
 centos base image with puppet using the example below:
 
 .. code-block::
@@ -37,6 +37,10 @@ kolla-build --base centos --template-override template-overrides.j2
 
 ..
 
+.. [*] See the
+   `override file <https://github.com/openstack/tripleo-common/blob/master/contrib/tripleo_kolla_template_overrides.j2>`_
+   which can be used to build Kolla packages that work with TripleO, and an
+   `example build script <https://github.com/dprince/undercloud_containers/blob/master/build_kolla.sh>_.
 
 Docker settings
 ---------------
@@ -70,7 +74,7 @@ are re-asserted when applying latter ones.
      * puppet_tags: Puppet resource tag names that are used to generate config
        files with puppet. Only the named config resources are used to generate
        a config file. Any service that specifies tags will have the default
-       tags of 'file,concat,file_line' appended to the setting.
+       tags of 'file,concat,file_line,augeas' appended to the setting.
        Example: keystone_config
 
      * config_volume: The name of the volume (directory) where config files
index ca410d6..3229495 100644 (file)
@@ -58,29 +58,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerAodhApiImage} ]
       kolla_config:
-          /var/lib/kolla/config_files/aodh-api.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/aodh/aodh.conf
-             owner: aodh
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/aodh/aodh.conf
-           - dest: /etc/httpd/conf.d/10-aodh_wsgi.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-aodh_wsgi.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-           - dest: /var/www/cgi-bin/aodh/app
-             owner: aodh
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/aodh/app
+        /var/lib/kolla/config_files/aodh-api.json:
+          command: /usr/sbin/httpd -DFOREGROUND
       docker_config:
         step_3:
           aodh-init-log:
@@ -97,7 +76,7 @@ outputs:
             privileged: false
             detach: false
             volumes:
-              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh:ro
+              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log
@@ -110,8 +89,9 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/aodh-api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/aodh/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/aodh/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh/:ro
+              - /var/lib/config-data/aodh/etc/httpd/:/etc/httpd/:ro
+              - /var/lib/config-data/aodh/var/www/:/var/www/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log
index d3c8c59..1553df3 100644 (file)
@@ -57,13 +57,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerAodhEvaluatorImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/aodh-evaluator.json:
-           command: /usr/bin/aodh-evaluator
-           config_files:
-           - dest: /etc/aodh/aodh.conf
-             owner: aodh
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/aodh/aodh.conf
+        /var/lib/kolla/config_files/aodh-evaluator.json:
+          command: /usr/bin/aodh-evaluator
       docker_config:
         step_4:
           aodh_evaluator:
@@ -73,7 +68,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/aodh-evaluator.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/aodh/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index 7aa9618..300dfde 100644 (file)
@@ -57,13 +57,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerAodhListenerImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/aodh-listener.json:
-           command: /usr/bin/aodh-listener
-           config_files:
-           - dest: /etc/aodh/aodh.conf
-             owner: aodh
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/aodh/aodh.conf
+        /var/lib/kolla/config_files/aodh-listener.json:
+          command: /usr/bin/aodh-listener
       docker_config:
         step_4:
           aodh_listener:
@@ -73,7 +68,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/aodh-listener.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/aodh/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index f525d6b..b405660 100644 (file)
@@ -57,13 +57,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerAodhNotifierImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/aodh-notifier.json:
-           command: /usr/bin/aodh-notifier
-           config_files:
-           - dest: /etc/aodh/aodh.conf
-             owner: aodh
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/aodh/aodh.conf
+        /var/lib/kolla/config_files/aodh-notifier.json:
+          command: /usr/bin/aodh-notifier
       docker_config:
         step_4:
           aodh_notifier:
@@ -73,7 +68,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/aodh-notifier.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/aodh/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/aodh/etc/aodh/:/etc/aodh/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index 265558a..7d2d1a1 100644 (file)
@@ -62,33 +62,19 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/mongodb.json:
           command: /usr/bin/mongod --unixSocketPrefix=/var/run/mongodb --config /etc/mongod.conf run
-          config_files:
-          - dest: /etc/mongod.conf
-            source: /var/lib/kolla/config_files/src/etc/mongod.conf
-            owner: mongodb
-            perm: '0600'
-          - dest: /etc/mongos.conf
-            source: /var/lib/kolla/config_files/src/etc/mongos.conf
-            owner: mongodb
-            perm: '0600'
+          permissions:
+            - path: /var/lib/mongodb
+              owner: mongodb:mongodb
+              recurse: true
       docker_config:
         step_2:
-          mongodb_data_ownership:
-            start_order: 0
-            image: *mongodb_image
-            net: host
-            user: root
-            command: ['chown', '-R', 'mongodb:', '/var/lib/mongodb']
-            volumes:
-              - /var/lib/mongodb:/var/lib/mongodb
           mongodb:
-            start_order: 1
             image: *mongodb_image
             net: host
             privileged: false
             volumes: &mongodb_volumes
               - /var/lib/kolla/config_files/mongodb.json:/var/lib/kolla/config_files/config.json
-              - /var/lib/config-data/mongodb/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/mongodb/etc/:/etc/:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log/kolla
               - /var/lib/mongodb:/var/lib/mongodb
@@ -102,8 +88,8 @@ outputs:
           step_config: 'include ::tripleo::profile::base::database::mongodb'
           config_image: *mongodb_image
           volumes:
-          - "mongodb:/var/lib/mongodb/"
-          - "logs:/var/log/kolla:ro"
+          - /var/lib/mongodb:/var/lib/mongodb
+          - logs:/var/log/kolla:ro
       host_prep_tasks:
         - name: create /var/lib/mongodb
           file:
index 0ffd033..cba2070 100644 (file)
@@ -71,29 +71,14 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/mysql.json:
           command: /usr/bin/mysqld_safe
-          config_files:
-          - dest: /etc/mysql/my.cnf
-            source: /var/lib/kolla/config_files/src/etc/my.cnf
-            owner: mysql
-            perm: '0644'
-          - dest: /etc/my.cnf.d/galera.cnf
-            source: /var/lib/kolla/config_files/src/etc/my.cnf.d/galera.cnf
-            owner: mysql
-            perm: '0644'
+          permissions:
+            - path: /var/lib/mysql
+              owner: mysql:mysql
+              recurse: true
       docker_config:
         step_2:
-          mysql_data_ownership:
-            start_order: 0
-            detach: false
-            image: *mysql_image
-            net: host
-            user: root
-            # Kolla does only non-recursive chown
-            command: ['chown', '-R', 'mysql:', '/var/lib/mysql']
-            volumes:
-              - /var/lib/mysql:/var/lib/mysql
           mysql_bootstrap:
-            start_order: 1
+            start_order: 0
             detach: false
             image: *mysql_image
             net: host
@@ -101,7 +86,7 @@ outputs:
             command: ['bash', '-c', 'test -e /var/lib/mysql/mysql || kolla_start']
             volumes: &mysql_volumes
               - /var/lib/kolla/config_files/mysql.json:/var/lib/kolla/config_files/config.json
-              - /var/lib/config-data/mysql/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/mysql/etc/:/etc/:ro
               - /etc/localtime:/etc/localtime:ro
               - /etc/hosts:/etc/hosts:ro
               - /var/lib/mysql:/var/lib/mysql
@@ -122,7 +107,7 @@ outputs:
                             - {get_param: MysqlRootPassword}
                             - {get_param: [DefaultPasswords, mysql_root_password]}
           mysql:
-            start_order: 2
+            start_order: 1
             image: *mysql_image
             restart: always
             net: host
@@ -137,8 +122,8 @@ outputs:
           step_config: 'include ::tripleo::profile::base::database::mysql'
           config_image: *mysql_image
           volumes:
-            - "/var/lib/mysql:/var/lib/mysql/:ro"
-            - "/var/lib/config-data/mysql/root:/root:ro" #provides .my.cnf
+            - /var/lib/mysql:/var/lib/mysql/:ro
+            - /var/lib/config-data/mysql/root:/root:ro #provides .my.cnf
       host_prep_tasks:
         - name: create /var/lib/mysql
           file:
index 77e4aa0..fdfdbc6 100644 (file)
@@ -58,17 +58,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerGlanceApiImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/glance-api.json:
-           command: /usr/bin/glance-api --config-file /usr/share/glance/glance-api-dist.conf --config-file /etc/glance/glance-api.conf
-           config_files:
-           - dest: /etc/glance/glance-api.conf
-             owner: glance
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/glance/glance-api.conf
-           - dest: /etc/glance/glance-swift.conf
-             owner: glance
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/glance/glance-swift.conf
+        /var/lib/kolla/config_files/glance-api.json:
+          command: /usr/bin/glance-api --config-file /usr/share/glance/glance-api-dist.conf --config-file /etc/glance/glance-api.conf
       docker_config:
         step_3:
           glance_api_db_sync:
@@ -78,9 +69,9 @@ outputs:
             detach: false
             volumes: &glance_volumes
               - /var/lib/kolla/config_files/glance-api.json:/var/lib/kolla/config_files/config.json
+              - /var/lib/config-data/glance_api/etc/glance/:/etc/glance/:ro
               - /etc/localtime:/etc/localtime:ro
               - /lib/modules:/lib/modules:ro
-              - /var/lib/config-data/glance_api/:/var/lib/kolla/config_files/src:ro
               - /run:/run
               - /dev:/dev
               - /etc/hosts:/etc/hosts:ro
index a64d150..659785a 100644 (file)
@@ -58,29 +58,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerGnocchiApiImage} ]
       kolla_config:
-          /var/lib/kolla/config_files/gnocchi-api.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/gnocchi/gnocchi.conf
-             owner: gnocchi
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/gnocchi/gnocchi.conf
-           - dest: /etc/httpd/conf.d/10-gnocchi_wsgi.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-gnocchi_wsgi.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-           - dest: /var/www/cgi-bin/gnocchi/app
-             owner: gnocchi
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/gnocchi/app
+        /var/lib/kolla/config_files/gnocchi-api.json:
+          command: /usr/sbin/httpd -DFOREGROUND
       docker_config:
         step_3:
           gnocchi-init-log:
@@ -97,7 +76,7 @@ outputs:
             detach: false
             privileged: false
             volumes:
-              - /var/lib/config-data/gnocchi/etc/gnocchi/:/etc/gnocchi:ro
+              - /var/lib/config-data/gnocchi/etc/gnocchi/:/etc/gnocchi/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log
@@ -110,9 +89,14 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/gnocchi-api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/gnocchi/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/gnocchi/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/gnocchi/etc/gnocchi/:/etc/gnocchi/:ro
+              - /var/lib/config-data/gnocchi/etc/httpd/:/etc/httpd/:ro
+              - /var/lib/config-data/gnocchi/var/www/:/var/www/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+      upgrade_tasks:
+        - name: Stop and disable httpd service
+          tags: step2
+          service: name=httpd state=stopped enabled=no
index 6437e94..78494d6 100644 (file)
@@ -55,13 +55,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerGnocchiMetricdImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/gnocchi-metricd.json:
-           command: /usr/bin/gnocchi-metricd
-           config_files:
-           - dest: /etc/gnocchi/gnocchi.conf
-             owner: gnocchi
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/gnocchi/gnocchi.conf
+        /var/lib/kolla/config_files/gnocchi-metricd.json:
+          command: /usr/bin/gnocchi-metricd
       docker_config:
         step_4:
           gnocchi_metricd:
@@ -71,8 +66,12 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/gnocchi-metricd.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/gnocchi/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/gnocchi/etc/gnocchi/:/etc/gnocchi/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+      upgrade_tasks:
+        - name: Stop and disable openstack-gnocchi-metricd service
+          tags: step2
+          service: name=openstack-gnocchi-metricd.service state=stopped enabled=no
index 32c1652..7f43984 100644 (file)
@@ -55,13 +55,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerGnocchiStatsdImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/gnocchi-statsd.json:
-           command: /usr/bin/gnocchi-statsd
-           config_files:
-           - dest: /etc/gnocchi/gnocchi.conf
-             owner: gnocchi
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/gnocchi/gnocchi.conf
+        /var/lib/kolla/config_files/gnocchi-statsd.json:
+          command: /usr/bin/gnocchi-statsd
       docker_config:
         step_4:
           gnocchi_statsd:
@@ -71,8 +66,12 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/gnocchi-statsd.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/gnocchi/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/gnocchi/etc/gnocchi/:/etc/gnocchi/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+      upgrade_tasks:
+        - name: Stop and disable openstack-gnocchi-statsd service
+          tags: step2
+          service: name=openstack-gnocchi-statsd.service state=stopped enabled=no
index 85ad921..e122647 100644 (file)
@@ -64,13 +64,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerHeatConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/heat_api_cfn.json:
-           command: /usr/bin/heat-api-cfn --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
-           config_files:
-           - dest: /etc/heat/heat.conf
-             owner: heat
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/heat/heat.conf
+        /var/lib/kolla/config_files/heat_api_cfn.json:
+          command: /usr/bin/heat-api-cfn --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
       docker_config:
         step_4:
           heat_api_cfn:
@@ -82,12 +77,12 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/heat_api_cfn.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/heat/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/heat/etc/heat/:/etc/heat/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /dev:/dev
+              - /run:/run
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       upgrade_tasks:
index 12884f5..3212d90 100644 (file)
@@ -64,13 +64,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerHeatConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/heat_api.json:
-           command: /usr/bin/heat-api --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
-           config_files:
-           - dest: /etc/heat/heat.conf
-             owner: heat
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/heat/heat.conf
+        /var/lib/kolla/config_files/heat_api.json:
+          command: /usr/bin/heat-api --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
       docker_config:
         step_4:
           heat_api:
@@ -82,12 +77,12 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/heat_api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/heat/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/heat/etc/heat/:/etc/heat/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /dev:/dev
+              - /run:/run
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       upgrade_tasks:
index 85a00b1..83c6309 100644 (file)
@@ -59,13 +59,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerHeatEngineImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/heat_engine.json:
-           command: /usr/bin/heat-engine --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
-           config_files:
-           - dest: /etc/heat/heat.conf
-             owner: heat
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/heat/heat.conf
+        /var/lib/kolla/config_files/heat_engine.json:
+          command: /usr/bin/heat-engine --config-file /usr/share/heat/heat-dist.conf --config-file /etc/heat/heat.conf
       docker_config:
         step_3:
           heat_engine_db_sync:
@@ -74,7 +69,7 @@ outputs:
             privileged: false
             detach: false
             volumes:
-              - /var/lib/config-data/heat/etc/heat:/etc/heat:ro
+              - /var/lib/config-data/heat/etc/heat/:/etc/heat/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             command: ['heat-manage', 'db_sync']
@@ -85,11 +80,11 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/heat_engine.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/heat/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/heat/etc/heat/:/etc/heat/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
+              - /run:/run
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       upgrade_tasks:
index 5ae82d4..bef84e2 100644 (file)
@@ -61,13 +61,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerIronicConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/ironic_api.json:
-           command: /usr/bin/ironic-api
-           config_files:
-           - dest: /etc/ironic/ironic.conf
-             owner: ironic
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/ironic/ironic.conf
+        /var/lib/kolla/config_files/ironic_api.json:
+          command: /usr/bin/ironic-api
       docker_config:
         step_3:
           ironic_db_sync:
@@ -82,8 +77,6 @@ outputs:
               - /var/lib/config-data/ironic/etc/:/etc/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
-            environment:
-              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
             command: ['ironic-dbsync', '--config-file', '/etc/ironic/ironic.conf']
         step_4:
           ironic_api:
@@ -94,7 +87,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/ironic_api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/ironic/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/ironic/etc/:/etc/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index 678b8c2..3047f30 100644 (file)
@@ -69,20 +69,12 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerIronicConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/ironic_conductor.json:
-           command: /usr/bin/ironic-conductor
-           config_files:
-           - dest: /etc/ironic/ironic.conf
-             owner: ironic
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/ironic/ironic.conf
-           permissions:
-           - path: /var/lib/ironic/httpboot
-             owner: ironic:ironic
-             recurse: true
-           - path: /var/lib/ironic/tftpboot
-             owner: ironic:ironic
-             recurse: true
+        /var/lib/kolla/config_files/ironic_conductor.json:
+          command: /usr/bin/ironic-conductor
+          permissions:
+            - path: /var/lib/ironic
+              owner: ironic:ironic
+              recurse: true
       docker_config:
         step_4:
           ironic_conductor:
@@ -96,7 +88,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/ironic_conductor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/ironic/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/ironic/etc/ironic/:/etc/ironic/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /lib/modules:/lib/modules:ro
index c660709..51538e7 100644 (file)
@@ -49,52 +49,10 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerIronicConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/ironic_pxe_http.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/ironic/ironic.conf
-             owner: ironic
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/ironic/ironic.conf
-           - dest: /etc/httpd/conf.d/10-ipxe_vhost.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-ipxe_vhost.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-         /var/lib/kolla/config_files/ironic_pxe_tftp.json:
-           command: /usr/sbin/in.tftpd --foreground --user root --address 0.0.0.0:69 --map-file /var/lib/ironic/tftpboot/map-file /var/lib/ironic/tftpboot
-           config_files:
-           - dest: /etc/ironic/ironic.conf
-             owner: ironic
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/ironic/ironic.conf
-           - dest: /var/lib/ironic/tftpboot/chain.c32
-             owner: ironic
-             perm: '0744'
-             source: /var/lib/kolla/config_files/src/var/lib/ironic/tftpboot/chain.c32
-           - dest: /var/lib/ironic/tftpboot/pxelinux.0
-             owner: ironic
-             perm: '0744'
-             source: /var/lib/kolla/config_files/src/var/lib/ironic/tftpboot/pxelinux.0
-           - dest: /var/lib/ironic/tftpboot/ipxe.efi
-             owner: ironic
-             perm: '0744'
-             source: /var/lib/kolla/config_files/src/var/lib/ironic/tftpboot/ipxe.efi
-           - dest: /var/lib/ironic/tftpboot/undionly.kpxe
-             owner: ironic
-             perm: '0744'
-             source: /var/lib/kolla/config_files/src/var/lib/ironic/tftpboot/undionly.kpxe
-           - dest: /var/lib/ironic/tftpboot/map-file
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/lib/ironic/tftpboot/map-file
+        /var/lib/kolla/config_files/ironic_pxe_http.json:
+          command: /usr/sbin/httpd -DFOREGROUND
+        /var/lib/kolla/config_files/ironic_pxe_tftp.json:
+          command: /usr/sbin/in.tftpd --foreground --user root --address 0.0.0.0:69 --map-file /var/lib/ironic/tftpboot/map-file /var/lib/ironic/tftpboot
       docker_config:
         step_4:
           ironic_pxe_tftp:
@@ -108,11 +66,20 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/ironic_pxe_tftp.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/ironic/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/ironic/etc/ironic/:/etc/ironic/:ro
+              # TODO(mandre) check how docker like mounting in a bind-mounted tree
+              # This directory may contain migrated data from BM
+              - /var/lib/ironic:/var/lib/ironic/
+              # These files were generated by puppet inside the config container
+              # TODO(mandre) check the mount permission (ro/rw)
+              - /var/lib/config-data/ironic/var/lib/ironic/tftpboot/chain.c32:/var/lib/ironic/tftpboot/chain.c32
+              - /var/lib/config-data/ironic/var/lib/ironic/tftpboot/pxelinux.0:/var/lib/ironic/tftpboot/pxelinux.0
+              - /var/lib/config-data/ironic/var/lib/ironic/tftpboot/ipxe.efi:/var/lib/ironic/tftpboot/ipxe.efi
+              - /var/lib/config-data/ironic/var/lib/ironic/tftpboot/undionly.kpxe:/var/lib/ironic/tftpboot/undionly.kpxe
+              - /var/lib/config-data/ironic/var/lib/ironic/tftpboot/map-file:/var/lib/ironic/tftpboot/map-file
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /dev/log:/dev/log
-              - /var/lib/ironic:/var/lib/ironic/
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
           ironic_pxe_http:
@@ -123,8 +90,8 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/ironic_pxe_http.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/ironic/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/ironic/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/ironic/etc/ironic/:/etc/ironic/:ro
+              - /var/lib/config-data/ironic/etc/httpd/:/etc/httpd/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /var/lib/ironic:/var/lib/ironic/
index 6371367..526a357 100644 (file)
@@ -33,9 +33,12 @@ parameters:
   KeystoneTokenProvider:
     description: The keystone token format
     type: string
-    default: 'uuid'
+    default: 'fernet'
     constraints:
       - allowed_values: ['uuid', 'fernet']
+  EnableInternalTLS:
+    type: boolean
+    default: false
 
 resources:
 
@@ -47,7 +50,8 @@ resources:
       DefaultPasswords: {get_param: DefaultPasswords}
 
 conditions:
-  keystone_fernet_tokens: {equals: [{get_param: KeystoneTokenProvider}, "fernet"]}
+
+  internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
 
 outputs:
   role_data:
@@ -74,55 +78,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerKeystoneImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/keystone.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/keystone/keystone.conf
-             owner: keystone
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/keystone/keystone.conf
-           - dest: /etc/keystone/credential-keys/0
-             owner: keystone
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/keystone/credential-keys/0
-           - dest: /etc/keystone/credential-keys/1
-             owner: keystone
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/keystone/credential-keys/1
-           - dest: /etc/keystone/fernet-keys/0
-             owner: keystone
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/keystone/fernet-keys/0
-             optional: {if: [keystone_fernet_tokens, false, true]}
-           - dest: /etc/keystone/fernet-keys/1
-             owner: keystone
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/keystone/fernet-keys/1
-             optional: {if: [keystone_fernet_tokens, false, true]}
-           - dest: /etc/httpd/conf.d/10-keystone_wsgi_admin.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-keystone_wsgi_admin.conf
-           - dest: /etc/httpd/conf.d/10-keystone_wsgi_main.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-keystone_wsgi_main.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-           - dest: /var/www/cgi-bin/keystone/keystone-admin
-             owner: keystone
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/keystone/keystone-admin
-           - dest: /var/www/cgi-bin/keystone/keystone-public
-             owner: keystone
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/keystone/keystone-public
+        /var/lib/kolla/config_files/keystone.json:
+          command: /usr/sbin/httpd -DFOREGROUND
       docker_config:
         step_3:
           keystone-init-log:
@@ -140,11 +97,22 @@ outputs:
             detach: false
             volumes: &keystone_volumes
               - /var/lib/kolla/config_files/keystone.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/keystone/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/keystone/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/keystone/var/www/:/var/www/:ro
+              - /var/lib/config-data/keystone/etc/keystone/:/etc/keystone/:ro
+              - /var/lib/config-data/keystone/etc/httpd/:/etc/httpd/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - logs:/var/log
+              -
+                if:
+                  - internal_tls_enabled
+                  - /etc/pki/tls/certs/httpd:/etc/pki/tls/certs/httpd:ro
+                  - ''
+              -
+                if:
+                  - internal_tls_enabled
+                  - /etc/pki/tls/private/httpd:/etc/pki/tls/private/httpd:ro
+                  - ''
             environment:
               - KOLLA_BOOTSTRAP=True
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
index 4dd3b74..5b5e1f5 100644 (file)
@@ -61,13 +61,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerMistralConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/mistral_api.json:
-           command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/api.log --server=api
-           config_files:
-           - dest: /etc/mistral/mistral.conf
-             owner: mistral
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/mistral/mistral.conf
+        /var/lib/kolla/config_files/mistral_api.json:
+          command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/api.log --server=api
       docker_config:
         step_3:
           mistral_db_sync:
@@ -83,8 +78,6 @@ outputs:
               - /var/lib/config-data/mistral/etc/:/etc/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
-            environment:
-              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
             command: ['mistral-db-manage', '--config-file', '/etc/mistral/mistral.conf', 'upgrade', 'head']
           mistral_db_populate:
             start_order: 2
@@ -96,8 +89,6 @@ outputs:
               - /var/lib/config-data/mistral/etc/:/etc/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
-            environment:
-              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
             # NOTE: dprince this requires that we install openstack-tripleo-common into
             # the Mistral API image so that we get tripleo* actions
             command: ['mistral-db-manage', '--config-file', '/etc/mistral/mistral.conf', 'populate']
@@ -110,7 +101,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/mistral_api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/mistral/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/mistral/etc/mistral/:/etc/mistral/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index db2721b..feecd5d 100644 (file)
@@ -62,13 +62,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerMistralConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/mistral_engine.json:
-           command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/engine.log --server=engine
-           config_files:
-           - dest: /etc/mistral/mistral.conf
-             owner: mistral
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/mistral/mistral.conf
+        /var/lib/kolla/config_files/mistral_engine.json:
+          command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/engine.log --server=engine
       docker_config:
         step_4:
           mistral_engine:
@@ -82,7 +77,7 @@ outputs:
             volumes:
               - /run:/run
               - /var/lib/kolla/config_files/mistral_engine.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/mistral/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/mistral/etc/mistral/:/etc/mistral/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
@@ -91,4 +86,3 @@ outputs:
         - name: Stop and disable mistral_engine service
           tags: step2
           service: name=openstack-mistral-engine state=stopped enabled=no
-
index d68830e..45fed7b 100644 (file)
@@ -62,13 +62,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerMistralConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/mistral_executor.json:
-           command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/executor.log --server=executor
-           config_files:
-           - dest: /etc/mistral/mistral.conf
-             owner: mistral
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/mistral/mistral.conf
+        /var/lib/kolla/config_files/mistral_executor.json:
+          command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/executor.log --server=executor
       docker_config:
         step_4:
           mistral_executor:
@@ -80,11 +75,11 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/mistral_executor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/mistral/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/mistral/etc/mistral/:/etc/mistral/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
+              - /run:/run
               # FIXME: this is required in order for Nova cells
               # initialization workflows on the Undercloud. Need to
               # exclude this on the overcloud for security reasons.
index ed03de6..c5001a3 100644 (file)
@@ -62,17 +62,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerNeutronConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/neutron_api.json:
-           command: /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini
-           config_files:
-           - dest: /etc/neutron/neutron.conf
-             owner: neutron
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/neutron/neutron.conf
-           - dest: /etc/neutron/plugin.ini
-             owner: neutron
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/neutron/plugins/ml2/ml2_conf.ini
+        /var/lib/kolla/config_files/neutron_api.json:
+          command: /usr/bin/neutron-server --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini
       docker_config:
         step_3:
           neutron_db_sync:
@@ -100,7 +91,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/neutron_api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/neutron/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/neutron/etc/neutron/:/etc/neutron/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index 9be13ad..03fbf76 100644 (file)
@@ -62,17 +62,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerNeutronConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/neutron_dhcp.json:
-           command: /usr/bin/neutron-dhcp-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini --log-file /var/log/neutron/dhcp-agent.log
-           config_files:
-           - dest: /etc/neutron/neutron.conf
-             owner: neutron
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/neutron/neutron.conf
-           - dest: /etc/neutron/dhcp_agent.ini
-             owner: neutron
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/neutron/dhcp_agent.ini
+        /var/lib/kolla/config_files/neutron_dhcp.json:
+          command: /usr/bin/neutron-dhcp-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini --log-file /var/log/neutron/dhcp-agent.log
       docker_config:
         step_4:
           neutron_dhcp:
@@ -86,7 +77,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/neutron_dhcp.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/neutron/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/neutron/etc/neutron/:/etc/neutron/:ro
               - /etc/localtime:/etc/localtime:ro
               - /etc/hosts:/etc/hosts:ro
               - /lib/modules:/lib/modules:ro
index db4fa86..0b04b56 100644 (file)
@@ -59,30 +59,21 @@ outputs:
             - [ {get_param: DockerNamespace}, {get_param: DockerNeutronConfigImage} ]
       kolla_config:
         /var/lib/kolla/config_files/neutron-l3-agent.json:
-           command: /usr/bin/neutron-l3-agent --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/l3_agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini
-           config_files:
-           - dest: /etc/neutron/neutron.conf
-             owner: neutron
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/neutron/neutron.conf
-           - dest: /etc/neutron/l3_agent.ini
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/neutron/l3_agent.ini
+          command: /usr/bin/neutron-l3-agent --config-file /usr/share/neutron/neutron-dist.conf --config-dir /usr/share/neutron/l3_agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini
       docker_config:
         step_4:
           neutronl3agent:
             image:
               list_join:
-              - '/'
-              - [ {get_param: DockerNamespace}, {get_param: DockerNeutronL3AgentImage} ]
+                - '/'
+                - [ {get_param: DockerNamespace}, {get_param: DockerNeutronL3AgentImage} ]
             net: host
             pid: host
             privileged: true
             restart: always
             volumes:
               - /var/lib/kolla/config_files/neutron-l3-agent.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/neutron:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/neutron/etc/neutron/:/etc/neutron/:ro
               - /etc/localtime:/etc/localtime:ro
               - /lib/modules:/lib/modules:ro
               - /run:/run
index 4102693..bea08e9 100644 (file)
@@ -55,19 +55,6 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/neutron-openvswitch-agent.json:
            command: /usr/bin/neutron-openvswitch-agent --config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/openvswitch_agent.ini --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
-           config_files:
-           - dest: /etc/neutron/neutron.conf
-             owner: neutron
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/neutron/neutron.conf
-           - dest: /etc/neutron/plugins/ml2/openvswitch_agent.ini
-             owner: neutron
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/neutron/plugins/ml2/openvswitch_agent.ini
-           - dest: /etc/neutron/plugins/ml2/ml2_conf.ini
-             owner: neutron
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/neutron/plugins/ml2/ml2_conf.ini
       docker_config:
         step_4:
           neutronovsagent:
@@ -78,7 +65,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/neutron-openvswitch-agent.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/neutron:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/neutron/etc/neutron/:/etc/neutron/:ro
               - /etc/localtime:/etc/localtime:ro
               - /lib/modules:/lib/modules:ro
               - /run:/run
index 9e203b7..97fafb0 100644 (file)
@@ -50,7 +50,10 @@ outputs:
           - get_attr: [NovaApiBase, role_data, config_settings]
           - apache::default_vhost: false
       step_config: &step_config
-        get_attr: [NovaApiBase, role_data, step_config]
+        list_join:
+          - "\n"
+          - - "['Nova_cell_v2'].each |String $val| { noop_resource($val) }"
+            - {get_attr: [NovaApiBase, role_data, step_config]}
       service_config_settings: {get_attr: [NovaApiBase, role_data, service_config_settings]}
       # BEGIN DOCKER SETTINGS
       puppet_config:
@@ -62,13 +65,8 @@ outputs:
           - '/'
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/nova_api.json:
-           command: /usr/bin/nova-api
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
+        /var/lib/kolla/config_files/nova_api.json:
+          command: /usr/bin/nova-api
       docker_config:
         step_3:
           nova_api_db_sync:
@@ -129,13 +127,14 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/nova_api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/nova/etc/nova/:/etc/nova/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+        step_5:
           nova_api_discover_hosts:
-            start_order: 3
+            start_order: 1
             image: *nova_api_image
             net: host
             detach: false
index 0afd3e7..fb286ca 100644 (file)
@@ -55,16 +55,7 @@ outputs:
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaComputeImage} ]
       kolla_config:
         /var/lib/kolla/config_files/nova-compute.json:
-           command: /usr/bin/nova-compute --config-file /etc/nova/nova.conf --config-file /etc/nova/rootwrap.conf
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
-           - dest: /etc/nova/rootwrap.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/rootwrap.conf
+          command: /usr/bin/nova-compute --config-file /etc/nova/nova.conf --config-file /etc/nova/rootwrap.conf
       docker_config:
         # FIXME: run discover hosts here
         step_4:
@@ -76,7 +67,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/nova-compute.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova_libvirt:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/nova_libvirt/etc/nova/:/etc/nova/:ro
               - /dev:/dev
               - /etc/iscsi:/etc/iscsi
               - /etc/localtime:/etc/localtime:ro
@@ -91,3 +82,7 @@ outputs:
           file:
             path: /var/lib/libvirt
             state: directory
+      upgrade_tasks:
+        - name: Stop and disable nova-compute service
+          tags: step2
+          service: name=openstack-nova-compute state=stopped enabled=no
index f85cf54..b7a1d74 100644 (file)
@@ -60,13 +60,8 @@ outputs:
           - '/'
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/nova_conductor.json:
-           command: /usr/bin/nova-conductor
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
+        /var/lib/kolla/config_files/nova_conductor.json:
+          command: /usr/bin/nova-conductor
       docker_config:
         step_4:
           nova_conductor:
@@ -78,11 +73,11 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/nova_conductor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/nova/etc/nova/:/etc/nova/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
+              - /run:/run
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       upgrade_tasks:
index 170468a..d627042 100644 (file)
@@ -58,15 +58,6 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/nova_ironic.json:
            command: /usr/bin/nova-compute --config-file /etc/nova/nova.conf --config-file /etc/nova/rootwrap.conf
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
-           - dest: /etc/nova/rootwrap.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/rootwrap.conf
       docker_config:
         step_5:
           novacompute:
@@ -80,11 +71,15 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/nova_ironic.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/nova/etc/nova/:/etc/nova/:ro
               - /etc/localtime:/etc/localtime:ro
               - /run:/run
               - /dev:/dev
               - /etc/iscsi:/etc/iscsi
-              - nova_compute:/var/lib/nova/
+              - /var/lib/nova/:/var/lib/nova
             environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+      upgrade_tasks:
+        - name: Stop and disable nova-compute service
+          tags: step2
+          service: name=openstack-nova-compute state=stopped enabled=no
index a043716..15cee59 100644 (file)
@@ -60,12 +60,7 @@ outputs:
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaConfigImage} ]
       kolla_config:
         /var/lib/kolla/config_files/nova-libvirt.json:
-           command: /usr/sbin/libvirtd --config /etc/libvirt/libvirtd.conf
-           config_files:
-           - dest: /etc/libvirt/libvirtd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/libvirt/libvirtd.conf
+          command: /usr/sbin/libvirtd --config /etc/libvirt/libvirtd.conf
       docker_config:
         step_3:
           nova_libvirt:
@@ -79,10 +74,10 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/nova-libvirt.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova_libvirt:/var/lib/kolla/config_files/src:ro
-              - /dev:/dev
+              - /var/lib/config-data/nova_libvirt/etc/libvirt/:/etc/libvirt/:ro
               - /etc/localtime:/etc/localtime:ro
               - /lib/modules:/lib/modules:ro
+              - /dev:/dev
               - /run:/run
               - /sys/fs/cgroup:/sys/fs/cgroup
               - /var/lib/nova:/var/lib/nova
@@ -100,3 +95,7 @@ outputs:
           with_items:
             - /etc/libvirt/qemu
             - /var/lib/libvirt
+      upgrade_tasks:
+        - name: Stop and disable libvirtd service
+          tags: step2
+          service: name=libvirtd state=stopped enabled=no
index e49839b..0c595dc 100644 (file)
@@ -58,35 +58,8 @@ outputs:
           - '/'
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaPlacementImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/nova_placement.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0640'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
-           - dest: /etc/httpd/conf.d/10-placement_wsgi.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-placement_wsgi.conf
-           # puppet generates a stubbed out version of the stock one so we
-           # copy it in to overwrite the existing one
-           - dest: /etc/httpd/conf.d/00-nova-placement-api.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/00-nova-placement-api.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-           - dest: /var/www/cgi-bin/nova/nova-placement-api
-             owner: nova
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/nova/nova-placement-api
+        /var/lib/kolla/config_files/nova_placement.json:
+          command: /usr/sbin/httpd -DFOREGROUND
       docker_config:
         # start this early so it is up before computes start reporting
         step_3:
@@ -98,8 +71,9 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/nova_placement.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova_placement/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/nova_placement/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/nova_placement/etc/nova/:/etc/nova/:ro
+              - /var/lib/config-data/nova_placement/etc/httpd/:/etc/httpd/:ro
+              - /var/lib/config-data/nova_placement/var/www/:/var/www/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index de1199e..e6f4896 100644 (file)
@@ -59,13 +59,8 @@ outputs:
           - '/'
           - [ {get_param: DockerNamespace}, {get_param: DockerNovaConfigImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/nova_scheduler.json:
-           command: /usr/bin/nova-scheduler
-           config_files:
-           - dest: /etc/nova/nova.conf
-             owner: nova
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/nova/nova.conf
+        /var/lib/kolla/config_files/nova_scheduler.json:
+          command: /usr/bin/nova-scheduler
       docker_config:
         step_4:
           nova_scheduler:
@@ -77,11 +72,11 @@ outputs:
             privileged: false
             restart: always
             volumes:
-              - /run:/run
               - /var/lib/kolla/config_files/nova_scheduler.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/nova/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/nova/etc/nova/:/etc/nova/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
+              - /run:/run
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       upgrade_tasks:
index 32efc5d..f4f1f7b 100644 (file)
@@ -58,29 +58,8 @@ outputs:
             - '/'
             - [ {get_param: DockerNamespace}, {get_param: DockerPankoApiImage} ]
       kolla_config:
-         /var/lib/kolla/config_files/panko-api.json:
-           command: /usr/sbin/httpd -DFOREGROUND
-           config_files:
-           - dest: /etc/httpd/conf.d/10-panko_wsgi.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf.d/10-panko_wsgi.conf
-           - dest: /etc/httpd/conf/httpd.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/httpd.conf
-           - dest: /etc/httpd/conf/ports.conf
-             owner: root
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/etc/httpd/conf/ports.conf
-           - dest: /etc/panko/panko.conf
-             owner: panko
-             perm: '0600'
-             source: /var/lib/kolla/config_files/src/etc/panko/panko.conf
-           - dest: /var/www/cgi-bin/panko/app
-             owner: panko
-             perm: '0644'
-             source: /var/lib/kolla/config_files/src/var/www/cgi-bin/panko/app
+        /var/lib/kolla/config_files/panko-api.json:
+          command: /usr/sbin/httpd -DFOREGROUND
       docker_config:
         step_3:
           panko-init-log:
@@ -111,8 +90,9 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/panko-api.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/panko/:/var/lib/kolla/config_files/src:ro
-              - /var/lib/config-data/panko/etc/httpd/conf.modules.d:/etc/httpd/conf.modules.d:ro
+              - /var/lib/config-data/panko/etc/panko/:/etc/panko/:ro
+              - /var/lib/config-data/panko/etc/httpd/:/etc/httpd/:ro
+              - /var/lib/config-data/panko/var/www/:/var/www/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index 341ec3d..9d5a52a 100644 (file)
@@ -61,23 +61,6 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/rabbitmq.json:
           command: /usr/lib/rabbitmq/bin/rabbitmq-server
-          config_files:
-          - dest: /etc/rabbitmq/rabbitmq.config
-            owner: root
-            perm: '0644'
-            source: /var/lib/kolla/config_files/src/etc/rabbitmq/rabbitmq.config
-          - dest: /etc/rabbitmq/enabled_plugins
-            owner: root
-            perm: '0644'
-            source: /var/lib/kolla/config_files/src/etc/rabbitmq/enabled_plugins
-          - dest: /etc/rabbitmq/rabbitmq-env.conf
-            owner: root
-            perm: '0644'
-            source: /var/lib/kolla/config_files/src/etc/rabbitmq/rabbitmq-env.conf
-          - dest: /etc/rabbitmq/rabbitmqadmin.conf
-            owner: root
-            perm: '0644'
-            source: /var/lib/kolla/config_files/src/etc/rabbitmq/rabbitmqadmin.conf
       docker_config:
         step_1:
           rabbitmq_bootstrap:
@@ -87,7 +70,7 @@ outputs:
             privileged: false
             volumes:
               - /var/lib/kolla/config_files/rabbitmq.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/rabbitmq/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/rabbitmq/etc/rabbitmq/:/etc/rabbitmq/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /var/lib/rabbitmq:/var/lib/rabbitmq
@@ -113,7 +96,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/rabbitmq.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/rabbitmq/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/rabbitmq/etc/rabbitmq/:/etc/rabbitmq/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
               - /var/lib/rabbitmq:/var/lib/rabbitmq
index 84c56b5..21387c9 100644 (file)
@@ -89,3 +89,5 @@ 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_batch_tasks')).where($ != null).flatten().distinct()
           data: {get_attr: [ServiceChain, role_data]}
+      service_metadata_settings:
+        get_attr: [PuppetServices, role_data, service_metadata_settings]
index 0d7cd7b..e60aca1 100644 (file)
@@ -64,10 +64,10 @@ outputs:
             net: host
             user: swift
             restart: always
-            # I'm mounting /etc/swift as rw.  Are the rings written to at all during runtime?
             volumes:
               - /var/lib/kolla/config_files/swift_proxy.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift:/var/lib/kolla/config_files/src:ro
+              # FIXME I'm mounting /etc/swift as rw.  Are the rings written to
+              # at all during runtime?
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
index 301ef69..cccddb4 100644 (file)
@@ -115,7 +115,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_account_auditor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -131,7 +130,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_account_reaper.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -146,7 +144,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_account_replicator.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -161,7 +158,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_account_server.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -179,7 +175,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_container_auditor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -194,7 +189,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_container_replicator.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -209,7 +203,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_container_updater.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -224,7 +217,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_container_server.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -242,7 +234,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_object_auditor.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -257,7 +248,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_object_expirer.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -272,7 +262,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_object_replicator.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -287,7 +276,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_object_updater.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
@@ -302,7 +290,6 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/swift_object_server.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/swift/:/var/lib/kolla/config_files/src:ro
               - /var/lib/config-data/swift/etc/swift:/etc/swift:rw
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
index 3ec819e..21aff31 100644 (file)
@@ -57,22 +57,8 @@ outputs:
       kolla_config:
         /var/lib/kolla/config_files/zaqar.json:
           command: /usr/bin/zaqar-server --config-file /etc/zaqar/zaqar.conf
-          config_files:
-          - dest: /etc/zaqar/zaqar.conf
-            owner: zaqar
-            perm: '0640'
-            source: /var/lib/kolla/config_files/src/etc/zaqar/zaqar.conf
         /var/lib/kolla/config_files/zaqar_websocket.json:
           command: /usr/bin/zaqar-server --config-file /etc/zaqar/zaqar.conf --config-file /etc/zaqar/1.conf
-          config_files:
-          - dest: /etc/zaqar/zaqar.conf
-            owner: zaqar
-            perm: '0640'
-            source: /var/lib/kolla/config_files/src/etc/zaqar/zaqar.conf
-          - dest: /etc/zaqar/1.conf
-            owner: zaqar
-            perm: '0640'
-            source: /var/lib/kolla/config_files/src/etc/zaqar/1.conf
       docker_config:
         step_4:
           zaqar:
@@ -82,7 +68,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/zaqar.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/zaqar/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/zaqar/etc/zaqar/:/etc/zaqar/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
@@ -94,7 +80,7 @@ outputs:
             restart: always
             volumes:
               - /var/lib/kolla/config_files/zaqar_websocket.json:/var/lib/kolla/config_files/config.json:ro
-              - /var/lib/config-data/zaqar/:/var/lib/kolla/config_files/src:ro
+              - /var/lib/config-data/zaqar/etc/zaqar/:/etc/zaqar/:ro
               - /etc/hosts:/etc/hosts:ro
               - /etc/localtime:/etc/localtime:ro
             environment:
index b9a8434..dfd1589 100644 (file)
@@ -1,7 +1,7 @@
 # A Heat environment file which can be used to enable a
 # a Cinder NetApp backend, configured via puppet
 resource_registry:
-  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
+  OS::TripleO::Services::CinderBackendNetApp: ../puppet/services/cinder-backend-netapp.yaml
 
 parameter_defaults:
   CinderEnableNetappBackend: true
index 1e64f91..cca9bea 100644 (file)
@@ -8,7 +8,7 @@ resource_registry:
 
 parameter_defaults:
   ControlPlaneSubnetCidr: '24'
-  ControlPlaneDefaultRoute: 192.0.2.254
+  ControlPlaneDefaultRoute: 192.168.24.254
   InternalApiNetCidr: 10.0.0.0/24
   InternalApiAllocationPools: [{'start': '10.0.0.10', 'end': '10.0.0.200'}]
   InternalApiDefaultRoute: 10.0.0.1
@@ -17,7 +17,7 @@ parameter_defaults:
   ManagementInterfaceDefaultRoute: 10.1.0.1
   ExternalNetCidr: 10.2.0.0/24
   ExternalAllocationPools: [{'start': '10.2.0.10', 'end': '10.2.0.200'}]
-  EC2MetadataIp: 192.0.2.1  # Generally the IP of the Undercloud
+  EC2MetadataIp: 192.168.24.1  # Generally the IP of the Undercloud
   DnsServers: ["8.8.8.8","8.8.4.4"]
   VrouterPhysicalInterface: eth1
   VrouterGateway: 10.0.0.1
diff --git a/environments/deployed-server-environment.j2.yaml b/environments/deployed-server-environment.j2.yaml
new file mode 100644 (file)
index 0000000..327934d
--- /dev/null
@@ -0,0 +1,11 @@
+resource_registry:
+  OS::TripleO::Server: ../deployed-server/deployed-server.yaml
+  OS::TripleO::DeployedServer::ControlPlanePort: OS::Neutron::Port
+  OS::TripleO::DeployedServer::Bootstrap: OS::Heat::None
+
+{% for role in roles %}
+  # Default nic config mappings
+  OS::TripleO::{{role.name}}::Net::SoftwareConfig: ../net-config-static.yaml
+{% endfor %}
+
+  OS::TripleO::ControllerDeployedServer::Net::SoftwareConfig: ../net-config-static-bridge.yaml
diff --git a/environments/deployed-server-environment.yaml b/environments/deployed-server-environment.yaml
deleted file mode 100644 (file)
index 7bc1bd9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-resource_registry:
-  OS::TripleO::Server: ../deployed-server/deployed-server.yaml
-  OS::TripleO::DeployedServer::ControlPlanePort: OS::Neutron::Port
-  OS::TripleO::DeployedServer::Bootstrap: OS::Heat::None
diff --git a/environments/docker-services-tls-everywhere.yaml b/environments/docker-services-tls-everywhere.yaml
new file mode 100644 (file)
index 0000000..ec39951
--- /dev/null
@@ -0,0 +1,28 @@
+# This environment contains the services that can work with TLS-everywhere.
+resource_registry:
+  # This can be used when you don't want to run puppet on the host,
+  # e.g atomic, but it has been replaced with OS::TripleO::Services::Docker
+  # OS::TripleO::NodeUserData: ../docker/firstboot/setup_docker_host.yaml
+  OS::TripleO::Services::Docker: ../puppet/services/docker.yaml
+  # The compute node still needs extra initialization steps
+  OS::TripleO::Compute::NodeUserData: ../docker/firstboot/setup_docker_host.yaml
+
+  # NOTE: add roles to be docker enabled as we support them.
+  OS::TripleO::Services::Keystone: ../docker/services/keystone.yaml
+
+  OS::TripleO::PostDeploySteps: ../docker/post.yaml
+  OS::TripleO::PostUpgradeSteps: ../docker/post-upgrade.yaml
+
+  OS::TripleO::Services: ../docker/services/services.yaml
+
+parameter_defaults:
+  # Defaults to 'tripleoupstream'.  Specify a local docker registry
+  # Example: 192.168.24.1:8787/tripleoupstream
+  DockerNamespace: tripleoupstream
+  DockerNamespaceIsRegistry: false
+
+  ComputeServices:
+    - OS::TripleO::Services::NovaCompute
+    - OS::TripleO::Services::NovaLibvirt
+    - OS::TripleO::Services::ComputeNeutronOvsAgent
+    - OS::TripleO::Services::Docker
index e245a6a..2fdecb4 100644 (file)
@@ -12,9 +12,6 @@ resource_registry:
   OS::TripleO::Services::CertmongerUser: ../puppet/services/certmonger-user.yaml
 
   OS::TripleO::Services::HAProxyInternalTLS: ../puppet/services/haproxy-internal-tls-certmonger.yaml
-  OS::TripleO::Services::ApacheTLS: ../puppet/services/apache-internal-tls-certmonger.yaml
-  OS::TripleO::Services::MySQLTLS: ../puppet/services/database/mysql-internal-tls-certmonger.yaml
-  OS::TripleO::Services::RabbitMQTLS: ../puppet/services/rabbitmq-internal-tls-certmonger.yaml
 
   # We use apache as a TLS proxy
   OS::TripleO::Services::TLSProxyBase: ../puppet/services/apache.yaml
index fbd1fb9..bd45517 100644 (file)
@@ -13,7 +13,7 @@ parameter_defaults:
   # to control your VIPs (currently one per network)
   # NOTE: we will eventually move to one VIP per service
   #
-  ControlFixedIPs: [{'ip_address':'192.0.2.251'}]
+  ControlFixedIPs: [{'ip_address':'192.168.24.251'}]
   PublicVirtualFixedIPs: [{'ip_address':'2001:db8:fd00:1000:0000:0000:0000:0005'}]
   InternalApiVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:2000:0000:0000:0000:0005'}]
   StorageVirtualFixedIPs: [{'ip_address':'fd00:fd00:fd00:3000:0000:0000:0000:0005'}]
index 1759c04..dec9b83 100644 (file)
@@ -12,7 +12,7 @@ parameter_defaults:
   # to control your VIPs (currently one per network)
   # NOTE: we will eventually move to one VIP per service
   #
-  ControlFixedIPs: [{'ip_address':'192.0.2.251'}]
+  ControlFixedIPs: [{'ip_address':'192.168.24.251'}]
   PublicVirtualFixedIPs: [{'ip_address':'10.0.0.251'}]
   InternalApiVirtualFixedIPs: [{'ip_address':'172.16.2.251'}]
   StorageVirtualFixedIPs: [{'ip_address':'172.16.1.251'}]
index 8f74ec3..f1c90e2 100644 (file)
@@ -13,6 +13,7 @@ parameter_defaults:
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::NovaCompute
     - OS::TripleO::Services::NovaLibvirt
     - OS::TripleO::Services::Kernel
@@ -32,3 +33,4 @@ parameter_defaults:
     - OS::TripleO::Services::CephOSD
     - OS::TripleO::Services::Vpp
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::Docker
index c583ca7..ae8bd7b 100644 (file)
@@ -18,7 +18,7 @@ resource_registry:
 ## (note the use of port 24284 for ssl connections)
 #
 # LoggingServers:
-#   - host: 192.0.2.11
+#   - host: 192.168.24.11
 #     port: 24284
 # LoggingUsesSSL: true
 # LoggingSharedKey: secret
diff --git a/environments/major-upgrade-all-in-one.yaml b/environments/major-upgrade-all-in-one.yaml
deleted file mode 100644 (file)
index 4283b21..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
-  OS::TripleO::PostDeploySteps: ../puppet/major_upgrade_steps.yaml
index 5fa2f2d..40da726 100644 (file)
@@ -4,6 +4,7 @@ resource_registry:
   # enough (as we want to share the ansible tasks steps etc)
   OS::TripleO::PostDeploySteps: ../puppet/major_upgrade_steps.yaml
 parameter_defaults:
+  EnableConfigPurge: false
   UpgradeLevelNovaCompute: auto
   UpgradeInitCommonCommand: |
     #!/bin/bash
index 9ecc225..8b1617f 100644 (file)
@@ -1,13 +1,13 @@
 resource_registry:
   OS::TripleO::PostDeploySteps: ../puppet/major_upgrade_steps.yaml
 parameter_defaults:
+  EnableConfigPurge: true
   UpgradeLevelNovaCompute: auto
   UpgradeInitCommonCommand: |
     #!/bin/bash
     # Newton to Ocata, we need to remove old hiera hook data and
     # install ansible heat agents and ansible-pacemaker
     set -eu
-    yum install -y openstack-heat-agents
     yum install -y python-heat-agent-*
     yum install -y ansible-pacemaker
     rm -f /usr/libexec/os-apply-config/templates/etc/puppet/hiera.yaml
index 463206f..a3816b5 100644 (file)
@@ -3,5 +3,6 @@
 resource_registry:
   OS::TripleO::PostDeploySteps: ../docker/post.yaml
 parameter_defaults:
+  EnableConfigPurge: false
   UpgradeLevelNovaCompute: ''
   UpgradeInitCommonCommand: ''
index f09fb20..4e8bf46 100644 (file)
@@ -3,5 +3,6 @@
 resource_registry:
   OS::TripleO::PostDeploySteps: ../puppet/post.yaml
 parameter_defaults:
+  EnableConfigPurge: false
   UpgradeLevelNovaCompute: ''
   UpgradeInitCommonCommand: ''
index 210b6b0..3de5dba 100644 (file)
@@ -18,8 +18,8 @@ parameter_defaults:
   # CIDR subnet mask length for provisioning network
   ControlPlaneSubnetCidr: '24'
   # Gateway router for the provisioning network (or Undercloud IP)
-  ControlPlaneDefaultRoute: 192.0.2.254
-  EC2MetadataIp: 192.0.2.1  # Generally the IP of the Undercloud
+  ControlPlaneDefaultRoute: 192.168.24.254
+  EC2MetadataIp: 192.168.24.1  # Generally the IP of the Undercloud
   # Customize the IP subnets to match the local environment
   InternalApiNetCidr: 172.17.0.0/24
   StorageNetCidr: 172.18.0.0/24
index dc6c145..2a63248 100644 (file)
@@ -9,8 +9,8 @@
 # - OpenDaylight: BGPVPN:OpenDaylight:networking_bgpvpn.neutron.services.service_drivers.opendaylight.odl.OpenDaylightBgpvpnDriver:default
 # - Nuage: BGPVPN:Nuage:nuage_neutron.bgpvpn.services.service_drivers.driver.NuageBGPVPNDriver:default
 resource_registry:
-  OS::TripleO::Services::NeutronBgpvpnApi: ../puppet/services/neutron-bgpvpn-api.yaml
+  OS::TripleO::Services::NeutronBgpVpnApi: ../puppet/services/neutron-bgpvpn-api.yaml
 
 parameter_defaults:
-  NeutronServicePlugins: 'networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin'
+  NeutronServicePlugins: 'router, networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin'
   BgpvpnServiceProvider: 'BGPVPN:Dummy:networking_bgpvpn.neutron.services.service_drivers.driver_api.BGPVPNDriver:default'
diff --git a/environments/neutron-l2gw-api.yaml b/environments/neutron-l2gw-api.yaml
new file mode 100644 (file)
index 0000000..0989467
--- /dev/null
@@ -0,0 +1,20 @@
+# A Heat environment file that can be used to deploy Neutron L2 Gateway service
+#
+# Currently there are only two service provider for Neutron L2 Gateway
+# The default option is a dummy driver that allows to enable the API.
+# In order to enable other backend, replace the content of L2gwServiceProvider
+#
+# - L2 gateway agent: L2GW:l2gw:networking_l2gw.services.l2gateway.service_drivers.rpc_l2gw.L2gwRpcDriver:default
+# - OpenDaylight: L2GW:OpenDaylight:networking_odl.l2gateway.driver.OpenDaylightL2gwDriver:default
+resource_registry:
+  OS::TripleO::Services::NeutronL2gwApi: ../puppet/services/neutron-l2gw-api.yaml
+
+parameter_defaults:
+  NeutronServicePlugins: "networking_l2gw.services.l2gateway.plugin.L2GatewayPlugin"
+  L2gwServiceProvider: ["L2GW:l2gw:networking_l2gw.services.l2gateway.service_drivers.L2gwDriver:default"]
+
+  # Optional
+  # L2gwServiceDefaultInterfaceName:
+  # L2gwServiceDefaultDeviceName:
+  # L2gwServiceQuotaL2Gateway:
+  # L2gwServicePeriodicMonitoringInterval:
index 750d3c4..8a4a144 100644 (file)
@@ -3,12 +3,17 @@
 resource_registry:
   OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml
   OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/neutron-ml2-bigswitch.yaml
+  OS::TripleO::NeutronBigswitchAgent: ../puppet/services/neutron-bigswitch-agent.yaml
+  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
 
 parameter_defaults:
   # Required to fill in:
   NeutronBigswitchRestproxyServers:
   NeutronBigswitchRestproxyServerAuth:
-  NeutronMechanismDrivers: bsn_ml2
+  NeutronMechanismDrivers: openvswitch,bsn_ml2
+  NeutronServicePlugins: bsn_l3,bsn_service_plugin
+  KeystoneNotificationDriver: messaging
 
   # Optional:
   # NeutronBigswitchRestproxyAutoSyncOnFailure:
@@ -19,3 +24,9 @@ parameter_defaults:
   # NeutronBigswitchAgentEnabled:
   # NeutronBigswitchLLDPEnabled:
 
+  ControllerExtraConfig:
+    neutron::agents::l3::enabled: false
+    neutron::agents::dhcp::enable_force_metadata: true
+    neutron::agents::dhcp::enable_isolated_metadata: true
+    neutron::agents::dhcp::enable_metadata_network: false
+    neutron::server::l3_ha: false
index 651e956..8d46e1c 100644 (file)
@@ -5,7 +5,7 @@ resource_registry:
   OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-ml2-cisco-n1kv.yaml
 
 parameter_defaults:
-  N1000vVSMIP: '192.0.2.50'
-  N1000vMgmtGatewayIP: '192.0.2.1'
+  N1000vVSMIP: '192.168.24.50'
+  N1000vMgmtGatewayIP: '192.168.24.1'
   N1000vVSMDomainID: '100'
   N1000vVSMHostMgmtIntf: 'br-ex'
index 7489924..601554a 100644 (file)
@@ -10,7 +10,6 @@ resource_registry:
   OS::TripleO::Services::ComputeNeutronCorePlugin: ../puppet/services/neutron-compute-plugin-nuage.yaml
 
 parameter_defaults:
-  NeutronNuageOSControllerIp: '0.0.0.0'
   NeutronNuageNetPartitionName: 'default_name'
   NeutronNuageVSDIp: '0.0.0.0:0'
   NeutronNuageVSDUsername: 'username'
index ed7292b..4644725 100644 (file)
@@ -3,6 +3,7 @@ resource_registry:
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
+  OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/neutron-plugin-ml2-odl.yaml
   OS::TripleO::Services::OpenDaylightApi: ../puppet/services/opendaylight-api.yaml
   OS::TripleO::Services::OpenDaylightOvs: ../puppet/services/opendaylight-ovs.yaml
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
diff --git a/environments/nova-api-policy.yaml b/environments/nova-api-policy.yaml
new file mode 100644 (file)
index 0000000..681bd01
--- /dev/null
@@ -0,0 +1,10 @@
+# A Heat environment file which can be used to configure access policies for
+# Nova API resources. It is here for example and doesn't cover all services
+# but just Nova here.
+# While recipes for editing policy.json files is supported, modifying the
+# policy can have unexpected side effects and is not encouraged.
+
+parameter_defaults:
+  # The target is "compute:get_all", the "list all instances" API of the Compute service.
+  # The rule is an empty string meaning "always". This policy allows anybody to list instances.
+  NovaApiPolicies: { nova-context_is_admin: { key: 'compute:get_all', value: '' } }
diff --git a/environments/securetty.yaml b/environments/securetty.yaml
new file mode 100644 (file)
index 0000000..cdadf37
--- /dev/null
@@ -0,0 +1,12 @@
+resource_registry:
+  OS::TripleO::Services::Securetty: ../puppet/services/securetty.yaml
+
+parameter_defaults:
+  TtyValues:
+    - console
+    - tty1
+    - tty2
+    - tty3
+    - tty4
+    - tty5
+    - tty6
diff --git a/environments/services/ceilometer-api.yaml b/environments/services/ceilometer-api.yaml
new file mode 100644 (file)
index 0000000..1e37e73
--- /dev/null
@@ -0,0 +1,6 @@
+resource_registry:
+  OS::TripleO::Services::CeilometerApi: ../../puppet/services/ceilometer-api.yaml
+
+parameter_defaults:
+  CeilometerApiEndpoint: true
+
diff --git a/environments/services/disable-ceilometer-api.yaml b/environments/services/disable-ceilometer-api.yaml
deleted file mode 100644 (file)
index 94cd8d5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
-  OS::TripleO::Services::CeilometerApi: OS::Heat::None
diff --git a/environments/services/keystone_domain_specific_ldap_backend.yaml b/environments/services/keystone_domain_specific_ldap_backend.yaml
new file mode 100644 (file)
index 0000000..3cc9c7b
--- /dev/null
@@ -0,0 +1,18 @@
+# This is an example template on how to configure keystone domain specific LDAP
+# backends. This will configure a domain called tripleoldap will the attributes
+# specified.
+parameter_defaults:
+  KeystoneLDAPDomainEnable: true
+  KeystoneLDAPBackendConfigs:
+    tripleoldap:
+      url: ldap://192.168.24.251
+      user: cn=openstack,ou=Users,dc=tripleo,dc=example,dc=com
+      password: Secrete
+      suffix: dc=tripleo,dc=example,dc=com
+      user_tree_dn: ou=Users,dc=tripleo,dc=example,dc=com
+      user_filter: "(memberOf=cn=OSuser,ou=Groups,dc=tripleo,dc=example,dc=com)"
+      user_objectclass: person
+      user_id_attribute: cn
+      user_allow_create: false
+      user_allow_update: false
+      user_allow_delete: false
diff --git a/environments/services/panko.yaml b/environments/services/panko.yaml
deleted file mode 100644 (file)
index 28bf99f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-resource_registry:
-  OS::TripleO::Services::PankoApi: ../../puppet/services/panko-api.yaml
diff --git a/environments/services/qdr.yaml b/environments/services/qdr.yaml
new file mode 100644 (file)
index 0000000..e4ad87b
--- /dev/null
@@ -0,0 +1,2 @@
+resource_registry:
+  OS::TripleO::Services::Qdr: ../../puppet/services/qdr.yaml
diff --git a/environments/swift-external.yaml b/environments/swift-external.yaml
new file mode 100644 (file)
index 0000000..0bf0d39
--- /dev/null
@@ -0,0 +1,12 @@
+resource_registry:
+  OS::TripleO::Services::ExternalSwiftProxy: ../puppet/services/external-swift-proxy.yaml
+  OS::TripleO::Services::SwiftProxy: OS::Heat::None
+  OS::TripleO::Services::SwiftStorage: OS::Heat::None
+  OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None
+
+parameter_defaults:
+  ExternalPublicUrl: 'http://swiftproxy:9024/v1/%(tenant_id)s'
+  ExternalInternalUrl: 'http://swiftproxy:9024/v1/%(tenant_id)s'
+  ExternalAdminUrl: 'http://swiftproxy:9024/v1/%(tenant_id)s'
+  ExternalSwiftUserTenant: 'service'
+
diff --git a/environments/updates/update-from-192_0_2-subnet.yaml b/environments/updates/update-from-192_0_2-subnet.yaml
new file mode 100644 (file)
index 0000000..1813e7b
--- /dev/null
@@ -0,0 +1,3 @@
+parameter_defaults:
+  ControlPlaneDefaultRoute: 192.0.2.1
+  EC2MetadataIp: 192.0.2.1
index c66e646..56d3cbc 100644 (file)
@@ -46,7 +46,7 @@ resources:
           # Filter null values and values that contain don't contain
           # 'metadata_settings', get the values from that key and get the
           # unique ones.
-          expression: list($.data.where($ != null).where($.containsKey('metadata_settings')).metadata_settings.flatten().distinct())
+          expression: list(coalesce($.data, []).where($ != null).where($.containsKey('metadata_settings')).metadata_settings.flatten().distinct())
           data: {get_param: RoleData}
 
   # Generates entries for nova metadata with the following format:
@@ -57,7 +57,7 @@ resources:
     properties:
       value:
         yaql:
-          expression: let(fqdns => $.data.fqdns) -> dict($.data.metadata.where($ != null and $.type = 'vip').select([concat('managed_service_', $.service, $.network), concat($.service, '/', $fqdns.get($.network))]))
+          expression: let(fqdns => $.data.fqdns) -> dict(coalesce($.data.metadata, []).where($ != null and $.type = 'vip').select([concat('managed_service_', $.service, $.network), concat($.service, '/', $fqdns.get($.network))]))
           data:
             metadata: {get_attr: [IncomingMetadataSettings, value]}
             fqdns:
@@ -72,7 +72,7 @@ resources:
     properties:
       value:
         yaql:
-          expression: dict($.data.where($ != null and $.type = 'node').select([$.service, $.network.replace('_', '')]).groupBy($[0], $[1]))
+          expression: dict(coalesce($.data, []).where($ != null and $.type = 'node').select([$.service, $.network.replace('_', '')]).groupBy($[0], $[1]))
           data: {get_attr: [IncomingMetadataSettings, value]}
 
 outputs:
index e8316c5..30a8355 100644 (file)
@@ -53,6 +53,12 @@ parameters:
     type: string
   rhel_reg_http_proxy_password:
     type: string
+  UpdateOnRHELRegistration:
+    type: boolean
+    default: false
+    description: |
+      When enabled, the system will perform a yum update after performing the
+      RHEL Registration process.
 
 resources:
 
@@ -134,6 +140,37 @@ resources:
       input_values:
         REG_METHOD: {get_param: rhel_reg_method}
 
+  YumUpdateConfigurationAfterRHELRegistration:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config: |
+        #!/bin/bash
+        set -x
+        num_updates=$(yum list -q updates | wc -l)
+        if [ "$num_updates" -eq "0" ]; then
+           echo "No packages require updating"
+           exit 0
+        fi
+        full_command="yum -q -y update"
+        echo "Running: $full_command"
+        result=$($full_command)
+        return_code=$?
+        echo "$result"
+        echo "yum return code: $return_code"
+        exit $return_code
+
+  UpdateDeploymentAfterRHELRegistration:
+    type: OS::Heat::SoftwareDeployment
+    depends_on: RHELRegistrationDeployment
+    conditions:
+      update_requested: {get_param: UpdateOnRHELRegistration}
+    properties:
+      name: UpdateDeploymentAfterRHELRegistration
+      config: {get_resource: YumUpdateConfigurationAfterRHELRegistration}
+      server:  {get_param: server}
+      actions: ['CREATE'] # Only do this on CREATE
+
 outputs:
   deploy_stdout:
     description: Deployment reference, used to trigger puppet apply on changes
index 0d0fa3f..d14ed73 100644 (file)
@@ -240,7 +240,6 @@ case "${REG_METHOD:-}" in
             retry subscription-manager $repos
             retry yum install -y katello-agent || true # needed for errata reporting to satellite6
             katello-package-upload
-            retry subscription-manager repos --disable ${satellite_repo}
         else
             pushd /usr/share/rhn/
             curl --retry ${retry_max_count} --retry-delay 10 --max-time 30 -k -O $REG_SAT_URL/pub/RHN-ORG-TRUSTED-SSL-CERT
index aae4a2d..4480f74 100755 (executable)
@@ -299,9 +299,10 @@ function systemctl_swift {
 }
 
 # Special-case OVS for https://bugs.launchpad.net/tripleo/+bug/1635205
+# Update condition and add --notriggerun for +bug/1669714
 function special_case_ovs_upgrade_if_needed {
-    if [[ -n $(rpm -q --scripts openvswitch | awk '/postuninstall/,/*/' | grep "systemctl.*try-restart") ]]; then
-        echo "Manual upgrade of openvswitch - restart in postun detected"
+    if rpm -qa | grep "^openvswitch-2.5.0-14" || rpm -q --scripts openvswitch | awk '/postuninstall/,/*/' | grep "systemctl.*try-restart" ; then
+        echo "Manual upgrade of openvswitch - ovs-2.5.0-14 or restart in postun detected"
         rm -rf OVS_UPGRADE
         mkdir OVS_UPGRADE && pushd OVS_UPGRADE
         echo "Attempting to downloading latest openvswitch with yumdownloader"
@@ -310,8 +311,8 @@ function special_case_ovs_upgrade_if_needed {
             if rpm -U --test $pkg 2>&1 | grep "already installed" ; then
                 echo "Looks like newer version of $pkg is already installed, skipping"
             else
-                echo "Updating $pkg with nopostun option"
-                rpm -U --replacepkgs --nopostun $pkg
+                echo "Updating $pkg with --nopostun --notriggerun"
+                rpm -U --replacepkgs --nopostun --notriggerun $pkg
             fi
         done
         popd
diff --git a/extraconfig/tasks/swift-ring-deploy.yaml b/extraconfig/tasks/swift-ring-deploy.yaml
deleted file mode 100644 (file)
index d17f78a..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-heat_template_version: ocata
-
-parameters:
-  servers:
-    type: json
-  SwiftRingGetTempurl:
-    default: ''
-    description: A temporary Swift URL to download rings from.
-    type: string
-
-resources:
-  SwiftRingDeployConfig:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      group: script
-      inputs:
-        - name: swift_ring_get_tempurl
-      config: |
-        #!/bin/sh
-        pushd /
-        curl --insecure --silent "${swift_ring_get_tempurl}" | tar xz || true
-        popd
-
-  SwiftRingDeploy:
-    type: OS::Heat::SoftwareDeployments
-    properties:
-      name: SwiftRingDeploy
-      config: {get_resource: SwiftRingDeployConfig}
-      servers:  {get_param: servers}
-      input_values:
-        swift_ring_get_tempurl: {get_param: SwiftRingGetTempurl}
diff --git a/extraconfig/tasks/swift-ring-update.yaml b/extraconfig/tasks/swift-ring-update.yaml
deleted file mode 100644 (file)
index 440c688..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-heat_template_version: ocata
-
-parameters:
-  servers:
-    type: json
-  SwiftRingPutTempurl:
-    default: ''
-    description: A temporary Swift URL to upload rings to.
-    type: string
-
-resources:
-  SwiftRingUpdateConfig:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      group: script
-      inputs:
-        - name: swift_ring_put_tempurl
-      config: |
-        #!/bin/sh
-        TMP_DATA=$(mktemp -d)
-        function cleanup {
-          rm -Rf "$TMP_DATA"
-        }
-        trap cleanup EXIT
-        # sanity check in case rings are not consistent within cluster
-        swift-recon --md5 | grep -q "doesn't match" && exit 1
-        pushd ${TMP_DATA}
-        tar -cvzf swift-rings.tar.gz /etc/swift/*.builder /etc/swift/*.ring.gz /etc/swift/backups/*
-        resp=`curl --insecure --silent -X PUT "${swift_ring_put_tempurl}" --write-out "%{http_code}" --data-binary @swift-rings.tar.gz`
-        popd
-        if [ "$resp" != "201" ]; then
-            exit 1
-        fi
-
-  SwiftRingUpdate:
-    type: OS::Heat::SoftwareDeployments
-    properties:
-      name: SwiftRingUpdate
-      config: {get_resource: SwiftRingUpdateConfig}
-      servers: {get_param: servers}
-      input_values:
-        swift_ring_put_tempurl: {get_param: SwiftRingPutTempurl}
index 24211ab..a5a312d 100644 (file)
@@ -28,12 +28,15 @@ SCRIPT_NAME=$(basename $0)
 $(declare -f log_debug)
 $(declare -f manage_systemd_service)
 $(declare -f systemctl_swift)
+$(declare -f special_case_ovs_upgrade_if_needed)
 
 # pin nova messaging +-1 for the nova-compute service
 if [[ -n \$NOVA_COMPUTE ]]; then
     crudini  --set /etc/nova/nova.conf upgrade_levels compute auto
 fi
 
+special_case_ovs_upgrade_if_needed
+
 if [[ -n \$SWIFT_STORAGE ]]; then
     systemctl_swift stop
 fi
index 3bf72f1..20a5b65 100755 (executable)
@@ -40,9 +40,17 @@ touch "$timestamp_file"
 
 command_arguments=${command_arguments:-}
 
-list_updates=$(yum list updates)
-
-if [[ "$list_updates" == "" ]]; then
+# yum check-update exits 100 if updates are available
+set +e
+check_update=$(yum check-update 2>&1)
+check_update_exit=$?
+set -e
+
+if [[ "$check_update_exit" == "1" ]]; then
+    echo "Failed to check for package updates"
+    echo "$check_update"
+    exit 1
+elif [[ "$check_update_exit" != "100" ]]; then
     echo "No packages require updating"
     exit 0
 fi
@@ -70,6 +78,9 @@ if [[ "$pacemaker_status" == "active" && \
     fi
 fi
 
+# special case https://bugs.launchpad.net/tripleo/+bug/1635205 +bug/1669714
+special_case_ovs_upgrade_if_needed
+
 if [[ "$pacemaker_status" == "active" ]] ; then
     echo "Pacemaker running, stopping cluster node and doing full package update"
     node_count=$(pcs status xml | grep -o "<nodes_configured.*/>" | grep -o 'number="[0-9]*"' | grep -o "[0-9]*")
@@ -113,15 +124,19 @@ if [[ "$pacemaker_status" == "active" ]] ; then
         fi
     done
 
-    tstart=$(date +%s)
-    while ! clustercheck; do
-        sleep 5
-        tnow=$(date +%s)
-        if (( tnow-tstart > galera_sync_timeout )) ; then
-            echo "ERROR galera sync timed out"
-            exit 1
-        fi
-    done
+    RETVAL=$( pcs resource show galera-master | grep wsrep_cluster_address | grep -q `crm_node -n` ; echo $? )
+
+    if [[ $RETVAL -eq 0 && -e /etc/sysconfig/clustercheck ]]; then
+        tstart=$(date +%s)
+        while ! clustercheck; do
+            sleep 5
+            tnow=$(date +%s)
+            if (( tnow-tstart > galera_sync_timeout )) ; then
+                echo "ERROR galera sync timed out"
+                exit 1
+            fi
+        done
+    fi
 
     echo "Waiting for pacemaker cluster to settle"
     if ! timeout -k 10 $cluster_settle_timeout crm_resource --wait; then
index 0466481..a544d54 100644 (file)
@@ -33,7 +33,7 @@ parameters:
   ControlPlaneDefaultRoute: # Override this via parameter_defaults
     description: The default route of the control plane network.
     type: string
-    default: 192.0.2.1
+    default: 192.168.24.1
   EC2MetadataIp: # Override this via parameter_defaults
     description: The IP address of the EC2 metadata server.
     type: string
index 277bd67..c92ce37 100644 (file)
@@ -225,7 +225,6 @@ Keystone:
         net_param: KeystonePublicApi
         uri_suffixes:
             '': /v2.0
-            EC2: /v2.0/ec2tokens
             V3: /v3
         names:
             EC2: KeystoneEC2
index fecac0a..b4fcbb1 100644 (file)
@@ -6012,88 +6012,6 @@ outputs:
                         template: NETWORK_uri
             - ':'
             - get_param: [EndpointMap, KeystoneAdmin, port]
-      KeystoneEC2:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, KeystoneInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, KeystoneInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-        port:
-          get_param: [EndpointMap, KeystoneInternal, port]
-        protocol:
-          get_param: [EndpointMap, KeystoneInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, KeystoneInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, KeystoneInternal, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, KeystoneInternal, port]
-            - /v2.0/ec2tokens
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, KeystoneInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, KeystoneInternal, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, KeystonePublicApiNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, KeystoneInternal, port]
       KeystoneInternal:
         host:
           str_replace:
index a1042eb..7fb9420 100644 (file)
@@ -67,6 +67,7 @@ parameters:
       HorizonNetwork: internal_api
       MemcachedNetwork: internal_api
       RabbitmqNetwork: internal_api
+      QdrNetwork: internal_api
       RedisNetwork: internal_api
       MysqlNetwork: internal_api
       CephClusterNetwork: storage_mgmt
index b70d4a2..ee75de6 100644 (file)
@@ -13,9 +13,6 @@ resource_registry:
   OS::TripleO::Tasks::UpdateWorkflow: OS::Heat::None
   OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
 
-  OS::TripleO::Tasks::SwiftRingDeploy: extraconfig/tasks/swift-ring-deploy.yaml
-  OS::TripleO::Tasks::SwiftRingUpdate: extraconfig/tasks/swift-ring-update.yaml
-
 {% for role in roles %}
   OS::TripleO::{{role.name}}::PreNetworkConfig: OS::Heat::None
   OS::TripleO::{{role.name}}PostDeploySteps: puppet/post.yaml
@@ -122,7 +119,6 @@ resource_registry:
   # services
   OS::TripleO::Services: puppet/services/services.yaml
   OS::TripleO::Services::Apache: puppet/services/apache.yaml
-  OS::TripleO::Services::ApacheTLS: OS::Heat::None
   OS::TripleO::Services::CACerts: puppet/services/ca-certs.yaml
   OS::TripleO::Services::CephMds: OS::Heat::None
   OS::TripleO::Services::CephMon: OS::Heat::None
@@ -146,9 +142,9 @@ resource_registry:
   OS::TripleO::Services::HeatEngine: puppet/services/heat-engine.yaml
   OS::TripleO::Services::Kernel: puppet/services/kernel.yaml
   OS::TripleO::Services::MySQL: puppet/services/database/mysql.yaml
-  OS::TripleO::Services::MySQLTLS: OS::Heat::None
-  OS::TripleO::Services::NeutronBgpvpnApi: OS::Heat::None
+  OS::TripleO::Services::NeutronBgpVpnApi: OS::Heat::None
   OS::TripleO::Services::NeutronDhcpAgent: puppet/services/neutron-dhcp.yaml
+  OS::TripleO::Services::NeutronL2gwApi: OS::Heat::None
   OS::TripleO::Services::NeutronL3Agent: puppet/services/neutron-l3.yaml
   OS::TripleO::Services::NeutronMetadataAgent: puppet/services/neutron-metadata.yaml
   # FIXME(shardy) the duplicate NeutronServer line can be removed when we've updated
@@ -172,7 +168,7 @@ resource_registry:
   OS::TripleO::Services::PacemakerRemote: OS::Heat::None
   OS::TripleO::Services::NeutronSriovAgent: OS::Heat::None
   OS::TripleO::Services::RabbitMQ: puppet/services/rabbitmq.yaml
-  OS::TripleO::Services::RabbitMQTLS: OS::Heat::None
+  OS::TripleO::Services::Qdr: OS::Heat::None
   OS::TripleO::Services::HAproxy: puppet/services/haproxy.yaml
   OS::TripleO::Services::HAProxyPublicTLS: OS::Heat::None
   OS::TripleO::Services::HAProxyInternalTLS: OS::Heat::None
@@ -181,6 +177,7 @@ resource_registry:
   OS::TripleO::Services::SaharaApi: OS::Heat::None
   OS::TripleO::Services::SaharaEngine: OS::Heat::None
   OS::TripleO::Services::Sshd: OS::Heat::None
+  OS::TripleO::Services::Securetty: OS::Heat::None
   OS::TripleO::Services::Redis: puppet/services/database/redis.yaml
   OS::TripleO::Services::NovaConductor: puppet/services/nova-conductor.yaml
   OS::TripleO::Services::MongoDb: puppet/services/database/mongodb.yaml
@@ -194,6 +191,7 @@ resource_registry:
   OS::TripleO::Services::NovaLibvirt: puppet/services/nova-libvirt.yaml
   OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml
   OS::TripleO::Services::SwiftProxy: puppet/services/swift-proxy.yaml
+  OS::TripleO::Services::ExternalSwiftProxy: OS::Heat::None
   OS::TripleO::Services::SwiftStorage: puppet/services/swift-storage.yaml
   OS::TripleO::Services::SwiftRingBuilder: puppet/services/swift-ringbuilder.yaml
   OS::TripleO::Services::Snmp: puppet/services/snmp.yaml
@@ -205,6 +203,7 @@ resource_registry:
   OS::TripleO::Services::CeilometerAgentCentral: puppet/services/ceilometer-agent-central.yaml
   OS::TripleO::Services::CeilometerAgentNotification: puppet/services/ceilometer-agent-notification.yaml
   OS::TripleO::Services::ComputeCeilometerAgent: puppet/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::CeilometerAgentIpmi: puppet/services/ceilometer-agent-ipmi.yaml
   OS::TripleO::Services::Horizon: puppet/services/horizon.yaml
   #Gnocchi services
   OS::TripleO::Services::GnocchiApi: puppet/services/gnocchi-api.yaml
@@ -243,6 +242,10 @@ resource_registry:
   OS::TripleO::Services::Zaqar: OS::Heat::None
   OS::TripleO::Services::NeutronML2FujitsuCfab: OS::Heat::None
   OS::TripleO::Services::NeutronML2FujitsuFossw: OS::Heat::None
+  OS::TripleO::Services::CinderBackendDellPs: OS::Heat::None
+  OS::TripleO::Services::CinderBackendDellSc: OS::Heat::None
+  OS::TripleO::Services::CinderBackendNetApp: OS::Heat::None
+  OS::TripleO::Services::CinderBackendScaleIO: OS::Heat::None
   OS::TripleO::Services::CinderHPELeftHandISCSI: OS::Heat::None
   OS::TripleO::Services::Etcd: OS::Heat::None
   OS::TripleO::Services::Ec2Api: OS::Heat::None
index 584fdfd..a2d501d 100644 (file)
@@ -1,4 +1,12 @@
-{% set primary_role_name = roles[0].name -%}
+{%- set primary_role = [roles[0]] -%}
+{%- for role in roles -%}
+  {%- if 'primary' in role.tags and 'controller' in role.tags -%}
+    {%- set _ = primary_role.pop() -%}
+    {%- set _ = primary_role.append(role) -%}
+  {%- endif -%}
+{%- endfor -%}
+{%- set primary_role_name = primary_role[0].name -%}
+# primary role is: {{primary_role_name}}
 heat_template_version: ocata
 
 description: >
@@ -114,6 +122,11 @@ parameters:
     description: What interface to add to the HypervisorNeutronPhysicalBridge.
     type: string
 
+  NodeCreateBatchSize:
+    default: 30
+    description: Maxiumum batch size for creating nodes
+    type: number
+
   # Jinja loop for Role in role_data.yaml
 {% for role in roles %}
   # Parameters generated for {{role.name}} Role
@@ -356,6 +369,9 @@ resources:
   {{role.name}}:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
+    update_policy:
+      batch_create:
+        max_batch_size: {get_param: NodeCreateBatchSize}
     properties:
       count: {get_param: {{role.name}}Count}
       removal_policies: {get_param: {{role.name}}RemovalPolicies}
@@ -415,7 +431,7 @@ resources:
         -
 {% for role in roles %}
           - list_join:
-            - "\n"
+            - ""
             - {get_attr: [{{role.name}}, hosts_entry]}
 {% endfor %}
 
@@ -596,12 +612,24 @@ resources:
       PingTestIps:
         list_join:
         - ' '
-        - - {get_attr: [{{primary_role_name}}, resource.0.external_ip_address]}
-          - {get_attr: [{{primary_role_name}}, resource.0.internal_api_ip_address]}
-          - {get_attr: [{{primary_role_name}}, resource.0.storage_ip_address]}
-          - {get_attr: [{{primary_role_name}}, resource.0.storage_mgmt_ip_address]}
-          - {get_attr: [{{primary_role_name}}, resource.0.tenant_ip_address]}
-          - {get_attr: [{{primary_role_name}}, resource.0.management_ip_address]}
+        - - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, external_ip_address]}
+          - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, internal_api_ip_address]}
+          - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, storage_ip_address]}
+          - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, storage_mgmt_ip_address]}
+          - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, tenant_ip_address]}
+          - yaql:
+              expression: coalesce($.data, []).first(null)
+              data: {get_attr: [{{primary_role_name}}, management_ip_address]}
 
   UpdateWorkflow:
     type: OS::TripleO::Tasks::UpdateWorkflow
@@ -688,4 +716,10 @@ outputs:
     value:
 {% for role in roles %}
       {{role.name}}: {get_attr: [{{role.name}}ServiceChain, role_data]}
+{% endfor %}
+  RoleNetIpMap:
+    description: Mapping of each network to a list of IPs for each role
+    value:
+{% for role in roles %}
+      {{role.name}}: {get_attr: [{{role.name}}IpListMap, net_ip_map]}
 {% endfor %}
index f629eff..1f9c821 100644 (file)
@@ -1,5 +1,8 @@
-version: 1.0\r
-\r
-template: overcloud.yaml\r
-environments:\r
--  path: overcloud-resource-registry-puppet.yaml\r
+version: 1.0
+
+name: overcloud
+description: >
+  Default Deployment plan
+template: overcloud.yaml
+environments:
+  - path: overcloud-resource-registry-puppet.yaml
index 7337d06..cdbc76f 100644 (file)
@@ -38,7 +38,7 @@ resources:
           - ''
           - list_join:
             - ','
-            - ['file,concat,file_line', {get_param: PuppetTags}]
+            - ['file,concat,file_line,augeas', {get_param: PuppetTags}]
       outputs:
       - name: result
       inputs:
index 4099a3a..68623e2 100644 (file)
@@ -467,7 +467,6 @@ resources:
           - all_nodes # provided by allNodesConfig
           - vip_data # provided by allNodesConfig
           - '"%{::osfamily}"'
-          - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
           - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
           - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
           - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
index 533c0ee..e3f4cce 100644 (file)
@@ -27,6 +27,15 @@ resources:
             mapped_data:
               neutron::agents::bigswitch::agent_enabled: {get_input: neutron_enable_bigswitch_agent}
               neutron::agents::bigswitch::lldp_enabled: {get_input: neutron_enable_bigswitch_lldp}
+              # NOTE(aschultz): required for the puppet module but we don't
+              # actually want them defined on the compute nodes so we're
+              # relying on the puppet  module's handling of <SERVICE DEFAULT>
+              # to just not set these but still accept that they were defined.
+              # This will should be fixed in puppet-neutron and removed here,
+              # but for backportability, we need to define something.
+              neutron::plugins::ml2::bigswitch::restproxy::servers: '<SERVICE DEFAULT>'
+              neutron::plugins::ml2::bigswitch::restproxy::server_auth: '<SERVICE DEFAULT>'
+
 
   NeutronBigswitchDeployment:
     type: OS::Heat::StructuredDeployment
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
deleted file mode 100644 (file)
index 378f7f9..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-heat_template_version: ocata
-
-description: Configure hieradata for Cinder Netapp configuration
-
-parameters:
-  server:
-    description: ID of the controller node to apply this config to
-    type: string
-
-  # Config specific parameters, to be provided via parameter_defaults
-  CinderEnableNetappBackend:
-    type: boolean
-    default: true
-  CinderNetappBackendName:
-    type: string
-    default: 'tripleo_netapp'
-  CinderNetappLogin:
-    type: string
-  CinderNetappPassword:
-    type: string
-    hidden: true
-  CinderNetappServerHostname:
-    type: string
-  CinderNetappServerPort:
-    type: string
-    default: '80'
-  CinderNetappSizeMultiplier:
-    type: string
-    default: '1.2'
-  CinderNetappStorageFamily:
-    type: string
-    default: 'ontap_cluster'
-  CinderNetappStorageProtocol:
-    type: string
-    default: 'nfs'
-  CinderNetappTransportType:
-    type: string
-    default: 'http'
-  CinderNetappVfiler:
-    type: string
-    default: ''
-  CinderNetappVolumeList:
-    type: string
-    default: ''
-  CinderNetappVserver:
-    type: string
-    default: ''
-  CinderNetappPartnerBackendName:
-    type: string
-    default: ''
-  CinderNetappNfsShares:
-    type: string
-    default: ''
-  CinderNetappNfsSharesConfig:
-    type: string
-    default: '/etc/cinder/shares.conf'
-  CinderNetappNfsMountOptions:
-    type: string
-    default: ''
-  CinderNetappCopyOffloadToolPath:
-    type: string
-    default: ''
-  CinderNetappControllerIps:
-    type: string
-    default: ''
-  CinderNetappSaPassword:
-    type: string
-    default: ''
-    hidden: true
-  CinderNetappStoragePools:
-    type: string
-    default: ''
-  CinderNetappHostType:
-    type: string
-    default: ''
-  CinderNetappWebservicePath:
-    type: string
-    default: '/devmgr/v2'
-  # DEPRECATED options for compatibility with older versions
-  CinderNetappEseriesHostType:
-    type: string
-    default: 'linux_dm_mp'
-
-parameter_groups:
-- label: deprecated
-  description: Do not use deprecated params, they will be removed.
-  parameters:
-  - CinderNetappEseriesHostType
-
-resources:
-  CinderNetappConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: hiera
-      config:
-        datafiles:
-          cinder_netapp_data:
-            mapped_data:
-              tripleo::profile::base::cinder::volume::cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
-              cinder::backend::netapp::title: {get_input: NetappBackendName}
-              cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
-              cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
-              cinder::backend::netapp::netapp_server_hostname: {get_input: NetappServerHostname}
-              cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
-              cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
-              cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
-              cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
-              cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
-              cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
-              cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
-              cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
-              cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
-              cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
-              cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
-              cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
-              cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
-              cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
-              cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
-              cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
-              cinder::backend::netapp::netapp_host_type: {get_input: NetappHostType}
-              cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}
-
-  CinderNetappDeployment:
-    type: OS::Heat::StructuredDeployment
-    properties:
-      name: CinderNetappDeployment
-      config: {get_resource: CinderNetappConfig}
-      server: {get_param: server}
-      input_values:
-        EnableNetappBackend: {get_param: CinderEnableNetappBackend}
-        NetappBackendName: {get_param: CinderNetappBackendName}
-        NetappLogin: {get_param: CinderNetappLogin}
-        NetappPassword: {get_param: CinderNetappPassword}
-        NetappServerHostname: {get_param: CinderNetappServerHostname}
-        NetappServerPort: {get_param: CinderNetappServerPort}
-        NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
-        NetappStorageFamily: {get_param: CinderNetappStorageFamily}
-        NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
-        NetappTransportType: {get_param: CinderNetappTransportType}
-        NetappVfiler: {get_param: CinderNetappVfiler}
-        NetappVolumeList: {get_param: CinderNetappVolumeList}
-        NetappVserver: {get_param: CinderNetappVserver}
-        NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
-        NetappNfsShares: {get_param: CinderNetappNfsShares}
-        NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
-        NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
-        NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
-        NetappControllerIps: {get_param: CinderNetappControllerIps}
-        NetappSaPassword: {get_param: CinderNetappSaPassword}
-        NetappStoragePools: {get_param: CinderNetappStoragePools}
-        NetappHostType: {get_param: CinderNetappHostType}
-        NetappWebservicePath: {get_param: CinderNetappWebservicePath}
-
-outputs:
-  deploy_stdout:
-    description: Deployment reference, used to trigger puppet apply on changes
-    value: {get_attr: [CinderNetappDeployment, deploy_stdout]}
index 1456337..e7d0b83 100644 (file)
@@ -6,6 +6,14 @@ parameters:
   server:
     description: ID of the controller node to apply this config to
     type: string
+  NeutronBigswitchAgentEnabled:
+    description: The state of the neutron-bsn-agent service.
+    type: boolean
+    default: true
+  NeutronBigswitchLLDPEnabled:
+    description: The state of the neutron-bsn-lldp service.
+    type: boolean
+    default: false
   NeutronBigswitchRestproxyServers:
     description: 'Big Switch controllers ("IP:port,IP:port")'
     type: string
@@ -43,6 +51,8 @@ resources:
         datafiles:
           neutron_bigswitch_data:
             mapped_data:
+              neutron::agents::bigswitch::agent_enabled: {get_input: neutron_enable_bigswitch_agent}
+              neutron::agents::bigswitch::lldp_enabled: {get_input: neutron_enable_bigswitch_lldp}
               neutron::plugins::ml2::bigswitch::restproxy::servers: {get_input: restproxy_servers}
               neutron::plugins::ml2::bigswitch::restproxy::server_auth: {get_input: restproxy_server_auth}
               neutron::plugins::ml2::bigswitch::restproxy::auto_sync_on_failure: {get_input: restproxy_auto_sync_on_failure}
@@ -58,6 +68,8 @@ resources:
       config: {get_resource: NeutronBigswitchConfig}
       server: {get_param: server}
       input_values:
+        neutron_enable_bigswitch_agent: {get_param: NeutronBigswitchAgentEnabled}
+        neutron_enable_bigswitch_lldp: {get_param: NeutronBigswitchLLDPEnabled}
         restproxy_servers: {get_param: NeutronBigswitchRestproxyServers}
         restproxy_server_auth: {get_param: NeutronBigswitchRestproxyServerAuth }
         restproxy_auto_sync_on_failure: {get_param: NeutronBigswitchRestproxyAutoSyncOnFailure}
index bca6010..40b407b 100644 (file)
@@ -10,7 +10,7 @@ parameters:
   # Config specific parameters, to be provided via parameter_defaults
   N1000vVSMIP:
     type: string
-    default: '192.0.2.50'
+    default: '192.168.24.50'
   N1000vVSMDomainID:
     type: number
     default: 100
@@ -62,7 +62,7 @@ parameters:
     default: '255.255.255.0'
   N1000vMgmtGatewayIP:
     type: string
-    default: '192.0.2.1'
+    default: '192.168.24.1'
   N1000vPacemakerControl:
     type: boolean
     default: true
index 6f2dd68..c0a0778 100644 (file)
@@ -32,20 +32,6 @@ parameters:
     type: string
     hidden: true
 
-conditions:
-  # Conditions to disable any steps where the task list is empty
-{%- for role in roles %}
-  {{role.name}}UpgradeBatchConfigEnabled:
-    not:
-      equals:
-        - {get_param: [role_data, {{role.name}}, upgrade_batch_tasks]}
-        - []
-  {{role.name}}UpgradeConfigEnabled:
-    not:
-      equals:
-        - {get_param: [role_data, {{role.name}}, upgrade_tasks]}
-        - []
-{%- endfor %}
 
 resources:
 
@@ -65,18 +51,21 @@ resources:
           - "  crudini --set /etc/nova/nova.conf placement project_domain_name Default\n\n"
           - "  crudini --set /etc/nova/nova.conf placement user_domain_name Default\n\n"
           - "  crudini --set /etc/nova/nova.conf placement project_name service\n\n"
-          - "  systemctl restart openstack-nova-compute\n\n"
-          - "fi\n\n"
           - str_replace:
               template: |
                 crudini --set /etc/nova/nova.conf placement password 'SERVICE_PASSWORD'
                 crudini --set /etc/nova/nova.conf placement region_name 'REGION_NAME'
                 crudini --set /etc/nova/nova.conf placement auth_url 'AUTH_URL'
-                ROLE='ROLE_NAME'
               params:
                 SERVICE_PASSWORD: { get_param: NovaPassword }
                 REGION_NAME: { get_param: KeystoneRegion }
                 AUTH_URL: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix]}
+          - "  systemctl restart openstack-nova-compute\n\n"
+          - "fi\n\n"
+          - str_replace:
+              template: |
+                ROLE='ROLE_NAME'
+              params:
                 ROLE_NAME: {{role.name}}
           - get_file: ../extraconfig/tasks/pacemaker_common_functions.sh
           - get_file: ../extraconfig/tasks/run_puppet.sh
@@ -100,12 +89,11 @@ resources:
   {{role.name}}UpgradeBatchConfig_Step{{step}}:
     type: OS::TripleO::UpgradeConfig
   {%- if step > 0 %}
-    condition: {{role.name}}UpgradeBatchConfigEnabled
-    {% if role.name in enabled_roles %}
+    {%- if role in enabled_roles %}
     depends_on:
       - {{role.name}}UpgradeBatch_Step{{step -1}}
     {%- endif %}
-  {% else %}
+  {%- else %}
     {% for role in roles if role.disable_upgrade_deployment|default(false) %}
       {% if deliver_script.update({'deliver': True}) %} {% endif %}
     {% endfor %}
@@ -125,13 +113,11 @@ resources:
   {%- for role in enabled_roles %}
   {{role.name}}UpgradeBatch_Step{{step}}:
     type: OS::Heat::SoftwareDeploymentGroup
-    condition: {{role.name}}UpgradeBatchConfigEnabled
     {%- if step > 0 %}
     depends_on:
-      - {{role.name}}UpgradeBatch_Step{{step -1}}
-    {% else %}
-    depends_on:
-      - {{role.name}}UpgradeBatchConfig_Step{{step}}
+      {%- for role_inside in enabled_roles %}
+      - {{role_inside.name}}UpgradeBatch_Step{{step -1}}
+      {%- endfor %}
     {%- endif %}
     update_policy:
       batch_create:
@@ -185,11 +171,10 @@ resources:
   # do, and there should be minimal performance hit (creating the
   # config is cheap compared to the time to apply the deployment).
   {%- if step > 0 %}
-    condition: {{role.name}}UpgradeConfigEnabled
-    {% if role.name in enabled_roles %}
+    {%- if role in enabled_roles %}
     depends_on:
       - {{role.name}}Upgrade_Step{{step -1}}
-    {% endif %}
+    {%- endif %}
   {%- endif %}
     properties:
       UpgradeStepConfig: {get_param: [role_data, {{role.name}}, upgrade_tasks]}
@@ -201,9 +186,18 @@ resources:
   {{role.name}}Upgrade_Step{{step}}:
     type: OS::Heat::SoftwareDeploymentGroup
     {%- if step > 0 %}
-    condition: {{role.name}}UpgradeConfigEnabled
+    # Make sure we wait that all roles have finished their own
+    # previous step before going to the next, so we can guarantee
+    # state for each steps.
     depends_on:
-      - {{role.name}}Upgrade_Step{{step -1}}
+      {%- for role_inside in enabled_roles %}
+      - {{role_inside.name}}Upgrade_Step{{step -1}}
+      {%- endfor %}
+    {%- else %}
+    depends_on:
+      {%- for role_inside in enabled_roles %}
+      - {{role_inside.name}}UpgradeBatch_Step{{batch_upgrade_steps_max -1}}
+      {%- endfor %}
     {%- endif %}
     properties:
       name: {{role.name}}Upgrade_Step{{step}}
index 86af611..782a32c 100644 (file)
       input_values:
         update_identifier: {get_param: DeployIdentifier}
 
-  {% if role.name in ['Controller', 'ObjectStorage'] %}
-  {{role.name}}SwiftRingDeploy:
-    type: OS::TripleO::Tasks::SwiftRingDeploy
-    properties:
-      servers: {get_param: [servers, {{role.name}}]}
-  {% endif %}
-
   # Step through a series of configuration steps
 {% for step in range(1, 6) %}
   {{role.name}}Deployment_Step{{step}}:
       servers: {get_param: [servers, {{role.name}}]}
       input_values:
         update_identifier: {get_param: DeployIdentifier}
-
-  {% if role.name in ['Controller', 'ObjectStorage'] %}
-  {{role.name}}SwiftRingUpdate:
-    type: OS::TripleO::Tasks::SwiftRingUpdate
-    depends_on:
-  {% for dep in roles %}
-      - {{dep.name}}Deployment_Step5
-  {% endfor %}
-    properties:
-      servers: {get_param: [servers, {{role.name}}]}
-  {% endif %}
 {% endfor %}
index 8f1f314..9cfc65a 100644 (file)
@@ -483,6 +483,7 @@ resources:
     type: OS::Heat::SoftwareDeployment
     depends_on: NetworkDeployment
     properties:
+      name: UpdateDeployment
       config: {get_resource: UpdateConfig}
       server: {get_resource: {{role}}}
       input_values:
index d7c87b6..7cc6e4c 100644 (file)
@@ -24,6 +24,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  AodhApiPolicies:
+    description: |
+      A hash of policies to configure for Aodh API.
+      e.g. { aodh-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   AodhBase:
@@ -61,6 +67,7 @@ outputs:
             aodh::wsgi::apache::wsgi_process_display_name: 'aodh_wsgi'
             aodh::api::service_name: 'httpd'
             aodh::api::enable_proxy_headers_parsing: true
+            aodh::policy::policies: {get_param: AodhApiPolicies}
             tripleo.aodh_api.firewall_rules:
               '128 aodh-api':
                 dport:
diff --git a/puppet/services/apache-internal-tls-certmonger.yaml b/puppet/services/apache-internal-tls-certmonger.yaml
deleted file mode 100644 (file)
index 4c94f44..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-heat_template_version: ocata
-
-description: >
-  Apache service TLS configurations.
-
-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
-  # The following parameters are not needed by the template but are
-  # required to pass the pep8 tests
-  DefaultPasswords:
-    default: {}
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-
-resources:
-
-  ApacheNetworks:
-    type: OS::Heat::Value
-    properties:
-      value:
-        # NOTE(jaosorior) Get unique network names to create
-        # certificates for those. We skip the tenant network since
-        # we don't need a certificate for that, and the external
-        # network will be handled in another template.
-        yaql:
-          expression: list($.data.map.items().map($1[1])).distinct().where($ != external and $ != tenant)
-          data:
-            map:
-              get_param: ServiceNetMap
-
-outputs:
-  role_data:
-    description: Role data for the Apache role.
-    value:
-      service_name: apache_internal_tls_certmonger
-      config_settings:
-        generate_service_certificates: true
-        apache_certificates_specs:
-          map_merge:
-            repeat:
-              template:
-                httpd-NETWORK:
-                  service_certificate: '/etc/pki/tls/certs/httpd-NETWORK.crt'
-                  service_key: '/etc/pki/tls/private/httpd-NETWORK.key'
-                  hostname: "%{hiera('fqdn_NETWORK')}"
-                  principal: "HTTP/%{hiera('fqdn_NETWORK')}"
-              for_each:
-                NETWORK: {get_attr: [ApacheNetworks, value]}
-      metadata_settings:
-        repeat:
-          template:
-            - service: HTTP
-              network: $NETWORK
-              type: node
-          for_each:
-            $NETWORK: {get_attr: [ApacheNetworks, value]}
-      upgrade_tasks:
-        - name: Check if httpd is deployed
-          command: systemctl is-enabled httpd
-          tags: common
-          ignore_errors: True
-          register: httpd_enabled
-        - name: "PreUpgrade step0,validation: Check service httpd is running"
-          shell: /usr/bin/systemctl show 'httpd' --property ActiveState | grep '\bactive\b'
-          when: httpd_enabled.rc == 0
-          tags: step0,validation
index 2d95015..6e53b1f 100644 (file)
@@ -31,13 +31,25 @@ parameters:
     type: boolean
     default: false
 
+conditions:
+
+  internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
 
 resources:
 
-  ApacheTLS:
-    type: OS::TripleO::Services::ApacheTLS
+  ApacheNetworks:
+    type: OS::Heat::Value
     properties:
-      ServiceNetMap: {get_param: ServiceNetMap}
+      value:
+        # NOTE(jaosorior) Get unique network names to create
+        # certificates for those. We skip the tenant network since
+        # we don't need a certificate for that, and the external
+        # is for HAProxy so it isn't used for apache either.
+        yaql:
+          expression: list($.data.map.items().map($1[1])).distinct().where($ != external and $ != tenant)
+          data:
+            map:
+              get_param: ServiceNetMap
 
 outputs:
   role_data:
@@ -46,7 +58,6 @@ outputs:
       service_name: apache
       config_settings:
         map_merge:
-          - get_attr: [ApacheTLS, role_data, config_settings]
           -
             # for the given network; replacement examples (eg. for internal_api):
             # internal_api -> IP
@@ -64,8 +75,33 @@ outputs:
             apache::mod::prefork::serverlimit: { get_param: ApacheServerLimit }
             apache::mod::remoteip::proxy_ips:
               - "%{hiera('apache_remote_proxy_ips_network')}"
+          -
+            generate_service_certificates: true
+            tripleo::certmonger::apache_dirs::certificate_dir: '/etc/pki/tls/certs/httpd'
+            tripleo::certmonger::apache_dirs::key_dir: '/etc/pki/tls/private/httpd'
+            apache_certificates_specs:
+              map_merge:
+                repeat:
+                  template:
+                    httpd-NETWORK:
+                      service_certificate: '/etc/pki/tls/certs/httpd/httpd-NETWORK.crt'
+                      service_key: '/etc/pki/tls/private/httpd/httpd-NETWORK.key'
+                      hostname: "%{hiera('fqdn_NETWORK')}"
+                      principal: "HTTP/%{hiera('fqdn_NETWORK')}"
+                  for_each:
+                    NETWORK: {get_attr: [ApacheNetworks, value]}
       metadata_settings:
-        get_attr: [ApacheTLS, role_data, metadata_settings]
+        if:
+          - internal_tls_enabled
+          -
+            repeat:
+              template:
+                - service: HTTP
+                  network: $NETWORK
+                  type: node
+              for_each:
+                $NETWORK: {get_attr: [ApacheNetworks, value]}
+          - null
       upgrade_tasks:
         - name: Check if httpd is deployed
           command: systemctl is-enabled httpd
index d8787c8..91a5b01 100644 (file)
@@ -55,6 +55,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  BarbicanPolicies:
+    description: |
+      A hash of policies to configure for Barbican.
+      e.g. { barbican-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
 
@@ -77,6 +83,7 @@ outputs:
             barbican::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             barbican::keystone::authtoken::auth_url: { get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             barbican::keystone::authtoken::project_name: 'service'
+            barbican::policy::policies: {get_param: BarbicanPolicies}
             barbican::api::host_href: {get_param: [EndpointMap, BarbicanPublic, uri]}
             barbican::api::db_auto_create: false
             barbican::api::enabled_certificate_plugins: ['simple_certificate']
diff --git a/puppet/services/ceilometer-agent-ipmi.yaml b/puppet/services/ceilometer-agent-ipmi.yaml
new file mode 100644 (file)
index 0000000..26647df
--- /dev/null
@@ -0,0 +1,77 @@
+heat_template_version: ocata
+
+description: >
+  OpenStack Ceilometer Ipmi Agent service configured with Puppet
+
+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
+  RedisPassword:
+    description: The password for the redis service account.
+    type: string
+    hidden: true
+  MonitoringSubscriptionCeilometerIpmi:
+    default: 'overcloud-ceilometer-agent-ipmi'
+    type: string
+  CeilometerAgentIpmiLoggingSource:
+    type: json
+    default:
+      tag: openstack.ceilometer.agent.ipmi
+      path: /var/log/ceilometer/ipmi.log
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Agent Ipmi role.
+    value:
+      service_name: ceilometer_agent_ipmi
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerIpmi}
+      logging_source: {get_param: CeilometerAgentIpmiLoggingSource}
+      logging_groups:
+        - ceilometer
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer_redis_password: {get_param: RedisPassword}
+            ipmi_namespace: true
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::agent::polling
+      upgrade_tasks:
+        - name: Check if ceilometer-agent-ipmi is deployed
+          command: systemctl is-enabled openstack-ceilometer-ipmi
+          tags: common
+          ignore_errors: True
+          register: ceilometer_ipmi_enabled
+        - name: "PreUpgrade step0,validation: Check if openstack-ceilometer-ipmi is running"
+          shell: >
+            /usr/bin/systemctl show 'openstack-ceilometer-ipmi' --property ActiveState |
+            grep '\bactive\b'
+          when: ceilometer_ipmi_enabled.rc == 0
+          tags: step0,validation
+        - name: Stop openstack-ceilometer-ipmi service
+          tags: step1
+          when: ceilometer_ipmi_enabled.rc == 0
+          service: name=openstack-ceilometer-ipmi state=stopped
+        - name: Install openstack-ceilometer-ipmi package if it was disabled
+          tags: step3
+          yum: name=openstack-ceilometer-ipmi state=latest
+          when: ceilometer_ipmi_enabled.rc != 0
index f5ee9d4..ba94b45 100644 (file)
@@ -29,6 +29,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  CeilometerApiPolicies:
+    description: |
+      A hash of policies to configure for Ceilometer API.
+      e.g. { ceilometer-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   CeilometerServiceBase:
@@ -78,6 +84,7 @@ outputs:
                   "%{hiera('fqdn_$NETWORK')}"
                 params:
                   $NETWORK: {get_param: [ServiceNetMap, CeilometerApiNetwork]}
+            ceilometer::policy::policies: {get_param: CeilometerApiPolicies}
             ceilometer::wsgi::apache::bind_host: {get_param: [ServiceNetMap, CeilometerApiNetwork]}
             ceilometer::wsgi::apache::ssl: {get_param: EnableInternalTLS}
             ceilometer::wsgi::apache::servername:
index a9c8428..e161372 100644 (file)
@@ -37,7 +37,7 @@ parameters:
     constraints:
     - allowed_values: ['gnocchi', 'database']
   CeilometerEventDispatcher:
-    default: ['gnocchi']
+    default: ['panko', 'gnocchi']
     description: Comma-separated list of Dispatchers to process events data
     type: comma_delimited_list
     constraints:
@@ -76,6 +76,11 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  CeilometerApiEndpoint:
+    default: false
+    description: Whether to create or skip API endpoint. Set this to
+        false, if you choose to disable Ceilometer API service.
+    type: boolean
 
 outputs:
   role_data:
@@ -83,6 +88,7 @@ outputs:
     value:
       service_name: ceilometer_base
       config_settings:
+        ceilometer_auth_enabled: true
         ceilometer::debug: {get_param: Debug}
         ceilometer::db::database_connection:
           list_join:
@@ -133,6 +139,7 @@ outputs:
           ceilometer::keystone::auth::password: {get_param: CeilometerPassword}
           ceilometer::keystone::auth::region: {get_param: KeystoneRegion}
           ceilometer::keystone::auth::tenant: 'service'
+          ceilometer::keystone::auth::configure_endpoint: {get_param: CeilometerApiEndpoint}
         mysql:
           ceilometer::db::mysql::password: {get_param: CeilometerPassword}
           ceilometer::db::mysql::user: ceilometer
index 0153197..4985611 100644 (file)
@@ -73,7 +73,7 @@ outputs:
           ceph::rgw::keystone::auth::internal_url: {get_param: [EndpointMap, CephRgwInternal, uri]}
           ceph::rgw::keystone::auth::admin_url: {get_param: [EndpointMap, CephRgwAdmin, uri]}
           ceph::rgw::keystone::auth::region: {get_param: KeystoneRegion}
-          ceph::rgw::keystone::auth::roles: [ 'admin', 'member', '_member_' ]
+          ceph::rgw::keystone::auth::roles: [ 'admin', 'Member', '_member_' ]
           ceph::rgw::keystone::auth::tenant: service
           ceph::rgw::keystone::auth::user: swift
           ceph::rgw::keystone::auth::password: {get_param: SwiftPassword}
index 958b0e7..c1e6b0b 100644 (file)
@@ -46,6 +46,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  CinderApiPolicies:
+    description: |
+      A hash of policies to configure for Cinder API.
+      e.g. { cinder-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 conditions:
   cinder_workers_zero: {equals : [{get_param: CinderWorkers}, 0]}
@@ -86,6 +92,7 @@ outputs:
             cinder::keystone::authtoken::project_name: 'service'
             cinder::keystone::authtoken::user_domain_name: 'Default'
             cinder::keystone::authtoken::project_domain_name: 'Default'
+            cinder::policy::policies: {get_param: CinderApiPolicies}
             cinder::api::enable_proxy_headers_parsing: true
 
             cinder::api::nova_catalog_info: 'compute:nova:internalURL'
diff --git a/puppet/services/cinder-backend-netapp.yaml b/puppet/services/cinder-backend-netapp.yaml
new file mode 100644 (file)
index 0000000..29a0ce1
--- /dev/null
@@ -0,0 +1,129 @@
+heat_template_version: ocata
+
+description: Openstack Cinder Netapp backend
+
+parameters:
+  CinderEnableNetappBackend:
+    type: boolean
+    default: true
+  CinderNetappBackendName:
+    type: string
+    default: 'tripleo_netapp'
+  CinderNetappLogin:
+    type: string
+  CinderNetappPassword:
+    type: string
+    hidden: true
+  CinderNetappServerHostname:
+    type: string
+  CinderNetappServerPort:
+    type: string
+    default: '80'
+  CinderNetappSizeMultiplier:
+    type: string
+    default: '1.2'
+  CinderNetappStorageFamily:
+    type: string
+    default: 'ontap_cluster'
+  CinderNetappStorageProtocol:
+    type: string
+    default: 'nfs'
+  CinderNetappTransportType:
+    type: string
+    default: 'http'
+  CinderNetappVfiler:
+    type: string
+    default: ''
+  CinderNetappVolumeList:
+    type: string
+    default: ''
+  CinderNetappVserver:
+    type: string
+    default: ''
+  CinderNetappPartnerBackendName:
+    type: string
+    default: ''
+  CinderNetappNfsShares:
+    type: string
+    default: ''
+  CinderNetappNfsSharesConfig:
+    type: string
+    default: '/etc/cinder/shares.conf'
+  CinderNetappNfsMountOptions:
+    type: string
+    default: ''
+  CinderNetappCopyOffloadToolPath:
+    type: string
+    default: ''
+  CinderNetappControllerIps:
+    type: string
+    default: ''
+  CinderNetappSaPassword:
+    type: string
+    default: ''
+    hidden: true
+  CinderNetappStoragePools:
+    type: string
+    default: ''
+  CinderNetappHostType:
+    type: string
+    default: ''
+  CinderNetappWebservicePath:
+    type: string
+    default: '/devmgr/v2'
+  # DEPRECATED options for compatibility with older versions
+  CinderNetappEseriesHostType:
+    type: string
+    default: 'linux_dm_mp'
+  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: {}
+    type: json
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+
+parameter_groups:
+- label: deprecated
+  description: Do not use deprecated params, they will be removed.
+  parameters:
+  - CinderNetappEseriesHostType
+
+outputs:
+  role_data:
+    description: Role data for the Cinder NetApp backend.
+    value:
+      service_name: cinder_backend_netapp
+      config_settings:
+        tripleo::profile::base::cinder::volume::cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
+        cinder::backend::netapp::title: {get_param: CinderNetappBackendName}
+        cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
+        cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
+        cinder::backend::netapp::netapp_server_hostname: {get_param: CinderNetappServerHostname}
+        cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
+        cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
+        cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
+        cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
+        cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
+        cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
+        cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
+        cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
+        cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
+        cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
+        cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
+        cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
+        cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
+        cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
+        cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
+        cinder::backend::netapp::netapp_storage_pools: {get_param: CinderNetappStoragePools}
+        cinder::backend::netapp::netapp_host_type: {get_param: CinderNetappHostType}
+        cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
+      step_config: |
+        include ::tripleo::profile::base::cinder::volume
index b52955e..26f1a96 100644 (file)
@@ -94,11 +94,7 @@ outputs:
             tripleo::profile::base::cinder::volume::cinder_enable_nfs_backend: {get_param: CinderEnableNfsBackend}
             tripleo::profile::base::cinder::volume::cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
             tripleo::profile::base::cinder::volume::nfs::cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
-            tripleo::profile::base::cinder::volume::nfs::cinder_nfs_servers:
-              str_replace:
-                template: SERVERS
-                params:
-                  SERVERS: {get_param: CinderNfsServers}
+            tripleo::profile::base::cinder::volume::nfs::cinder_nfs_servers: {get_param: CinderNfsServers}
             tripleo::profile::base::cinder::volume::iscsi::cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
             tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_helper: {get_param: CinderISCSIHelper}
             tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_protocol: {get_param: CinderISCSIProtocol}
index fd1ee24..5f6b565 100644 (file)
@@ -47,6 +47,12 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  CongressPolicies:
+    description: |
+      A hash of policies to configure for Congress.
+      e.g. { congress-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 outputs:
   role_data:
@@ -73,6 +79,7 @@ outputs:
         congress::rabbit_port: {get_param: RabbitClientPort}
         congress::server::bind_host: {get_param: [ServiceNetMap, CongressApiNetwork]}
 
+        congress::keystone::authtoken::password: {get_param: CongressPassword}
         congress::keystone::authtoken::project_name: 'service'
         congress::keystone::authtoken::user_domain_name: 'Default'
         congress::keystone::authtoken::project_domain_name: 'Default'
@@ -86,10 +93,12 @@ outputs:
         congress::db::mysql::allowed_hosts:
           - '%'
           - {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
+        congress::policy::policies: {get_param: CongressPolicies}
 
       service_config_settings:
         keystone:
           congress::keystone::auth::tenant: 'service'
+          congress::keystone::auth::region: {get_param: KeystoneRegion}
           congress::keystone::auth::password: {get_param: CongressPassword}
           congress::keystone::auth::public_url: {get_param: [EndpointMap, CongressPublic, uri]}
           congress::keystone::auth::internal_url: {get_param: [EndpointMap, CongressInternal, uri]}
index 63ec444..5059721 100644 (file)
@@ -19,6 +19,10 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MongodbMemoryLimit:
+    default: '20G'
+    description: Limit the amount of memory mongodb uses with systemd.
+    type: string
   MongoDbLoggingSource:
     type: json
     description: Fluentd logging configuration for mongodb.
@@ -49,6 +53,7 @@ outputs:
         map_merge:
           - get_attr: [MongoDbBase, role_data, config_settings]
           - tripleo::profile::base::database::mongodb::mongodb_replset: {get_attr: [MongoDbBase, aux_parameters, rplset_name]}
+            tripleo::profile::base::database::mongodb::memory_limit: {get_param: MongodbMemoryLimit}
             mongodb::server::service_manage: True
             tripleo.mongodb.firewall_rules:
               '101 mongodb_config':
diff --git a/puppet/services/database/mysql-internal-tls-certmonger.yaml b/puppet/services/database/mysql-internal-tls-certmonger.yaml
deleted file mode 100644 (file)
index 9f7eaf5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-heat_template_version: ocata
-
-description: >
-  MySQL configurations for using TLS via certmonger.
-
-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
-  # The following parameters are not needed by the template but are
-  # required to pass the pep8 tests
-  DefaultPasswords:
-    default: {}
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-
-outputs:
-  role_data:
-    description: MySQL configurations for using TLS via certmonger.
-    value:
-      service_name: mysql_internal_tls_certmonger
-      config_settings:
-        generate_service_certificates: true
-        tripleo::profile::base::database::mysql::certificate_specs:
-          service_certificate: '/etc/pki/tls/certs/mysql.crt'
-          service_key: '/etc/pki/tls/private/mysql.key'
-          hostname:
-            str_replace:
-              template: "%{hiera('cloud_name_NETWORK')}"
-              params:
-                NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
-          principal:
-            str_replace:
-              template: "mysql/%{hiera('cloud_name_NETWORK')}"
-              params:
-                NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
-      metadata_settings:
-        - service: mysql
-          network: {get_param: [ServiceNetMap, MysqlNetwork]}
-          type: vip
index 808f135..da55da3 100644 (file)
@@ -23,6 +23,10 @@ parameters:
     description: Configures MySQL max_connections config setting
     type: number
     default: 4096
+  MysqlIncreaseFileLimit:
+    description: Flag to increase MySQL open-files-limit to 16384
+    type: boolean
+    default: true
   MysqlRootPassword:
     type: string
     hidden: true
@@ -38,13 +42,13 @@ parameters:
     description: The password for the nova db account
     type: string
     hidden: true
+  EnableInternalTLS:
+    type: boolean
+    default: false
 
-resources:
+conditions:
 
-  MySQLTLS:
-    type: OS::TripleO::Services::MySQLTLS
-    properties:
-      ServiceNetMap: {get_param: ServiceNetMap}
+  internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
 
 outputs:
   role_data:
@@ -53,7 +57,6 @@ outputs:
       service_name: mysql
       config_settings:
         map_merge:
-          - get_attr: [MySQLTLS, role_data, config_settings]
           -
             # The Galera package should work in cluster and
             # non-cluster modes based on the config file.
@@ -96,10 +99,32 @@ outputs:
                   $NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
             tripleo::profile::base::database::mysql::client_bind_address:
               {get_param: [ServiceNetMap, MysqlNetwork]}
+            tripleo::profile::base::database::mysql::generate_dropin_file_limit:
+              {get_param: MysqlIncreaseFileLimit}
+          - generate_service_certificates: true
+            tripleo::profile::base::database::mysql::certificate_specs:
+              service_certificate: '/etc/pki/tls/certs/mysql.crt'
+              service_key: '/etc/pki/tls/private/mysql.key'
+              hostname:
+                str_replace:
+                  template: "%{hiera('cloud_name_NETWORK')}"
+                  params:
+                    NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
+              principal:
+                str_replace:
+                  template: "mysql/%{hiera('cloud_name_NETWORK')}"
+                  params:
+                    NETWORK: {get_param: [ServiceNetMap, MysqlNetwork]}
       step_config: |
         include ::tripleo::profile::base::database::mysql
       metadata_settings:
-        get_attr: [MySQLTLS, role_data, metadata_settings]
+        if:
+          - internal_tls_enabled
+          -
+            - service: mysql
+              network: {get_param: [ServiceNetMap, MysqlNetwork]}
+              type: vip
+          - null
       upgrade_tasks:
         - name: Check for galera root password
           tags: step0
index 10f6d31..d1adefe 100644 (file)
@@ -42,6 +42,12 @@ parameters:
     default: 'false'
     description: Set to true to enable package installation via Puppet
     type: boolean
+  Ec2ApiPolicies:
+    description: |
+      A hash of policies to configure for EC2-API.
+      e.g. { ec2api-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 
 conditions:
@@ -67,6 +73,7 @@ outputs:
           ec2api::keystone::authtoken::password: {get_param: Ec2ApiPassword}
           ec2api::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
           ec2api::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
+          ec2api::policy::policies: {get_param: Ec2ApiPolicies}
           ec2api::api::enabled: true
           ec2api::package_manage: {get_param: EnablePackageInstall}
           ec2api::api::ec2api_listen:
@@ -91,6 +98,11 @@ outputs:
                 - {get_param: [EndpointMap, MysqlInternal, host]}
                 - '/ec2_api'
                 - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
+          ec2api::api::keystone_ec2_tokens_url:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, KeystoneV3Internal, uri]}
+                - '/ec2tokens'
         -
           if:
           - nova_workers_zero
diff --git a/puppet/services/external-swift-proxy.yaml b/puppet/services/external-swift-proxy.yaml
new file mode 100644 (file)
index 0000000..75f5b6a
--- /dev/null
@@ -0,0 +1,70 @@
+heat_template_version: ocata
+
+description: >
+  External Swift Proxy endpoint configured with Puppet
+
+parameters:
+  ExternalPublicUrl:
+    description: Public endpoint url for the external swift proxy
+    type: string
+  ExternalInternalUrl:
+    description: Internal endpoint url for the external swift proxy
+    type: string
+  ExternalAdminUrl:
+    description: External endpoint url for the external swift proxy
+    type: string
+  ExternalSwiftUserTenant:
+    description: Tenant where swift user will be set as admin
+    type: string
+    default: 'service'
+  SwiftPassword:
+    description: The password for the swift service account, used by the swift proxy services.
+    type: string
+    hidden: true
+  KeystoneRegion:
+    type: string
+    default: 'regionOne'
+    description: Keystone region for endpoint
+  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
+
+resources:
+
+outputs:
+  role_data:
+    description: Role data for External Swift proxy.
+    value:
+      service_name: external_swift_proxy
+      config_settings:
+
+      step_config:
+
+      service_config_settings:
+        keystone:
+          swift::keystone::auth::public_url: {get_param: ExternalPublicUrl}
+          swift::keystone::auth::internal_url: {get_param: ExternalInternalUrl}
+          swift::keystone::auth::admin_url: {get_param: ExternalAdminUrl}
+          swift::keystone::auth::public_url_s3: ''
+          swift::keystone::auth::internal_url_s3: ''
+          swift::keystone::auth::admin_url_s3: ''
+          swift::keystone::auth::password: {get_param: SwiftPassword}
+          swift::keystone::auth::region: {get_param: KeystoneRegion}
+          swift::keystone::auth::tenant: {get_param: ExternalSwiftUserTenant}
+          swift::keystone::auth::configure_s3_endpoint: false
+          swift::keystone::auth::operator_roles:
+            - admin
+            - swiftoperator
+            - ResellerAdmin
+
index b06f999..f61e615 100644 (file)
@@ -110,6 +110,12 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  GlanceApiPolicies:
+    description: |
+      A hash of policies to configure for Glance API.
+      e.g. { glance-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 conditions:
   use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
@@ -155,6 +161,7 @@ outputs:
             glance::api::enable_proxy_headers_parsing: true
             glance::api::debug: {get_param: Debug}
             glance::api::workers: {get_param: GlanceWorkers}
+            glance::policy::policies: {get_param: GlanceApiPolicies}
             tripleo.glance_api.firewall_rules:
               '112 glance_api':
                 dport:
index f462991..cd32370 100644 (file)
@@ -44,6 +44,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  GnocchiApiPolicies:
+    description: |
+      A hash of policies to configure for Gnocchi API.
+      e.g. { gnocchi-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
 
@@ -83,6 +89,7 @@ outputs:
             gnocchi::api::enabled: true
             gnocchi::api::enable_proxy_headers_parsing: true
             gnocchi::api::service_name: 'httpd'
+            gnocchi::policy::policies: {get_param: GnocchiApiPolicies}
             gnocchi::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             gnocchi::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             gnocchi::keystone::authtoken::password: {get_param: GnocchiPassword}
index d755556..dc6daec 100644 (file)
@@ -32,10 +32,6 @@ parameters:
   CephClientUserName:
     default: openstack
     type: string
-  KeystoneRegion:
-    type: string
-    default: 'regionOne'
-    description: Keystone region for endpoint
   RedisPassword:
     description: The password for the redis service account.
     type: string
@@ -72,7 +68,7 @@ outputs:
         gnocchi::storage::swift::swift_user: 'service:gnocchi'
         gnocchi::storage::swift::swift_auth_version: 3
         gnocchi::storage::swift::swift_key: {get_param: GnocchiPassword}
-        gnocchi::storage::swift::swift_authurl: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
+        gnocchi::storage::swift::swift_authurl: {get_param: [EndpointMap, KeystoneV3Internal, uri]}
         gnocchi::storage::ceph::ceph_pool: {get_param: GnocchiRbdPoolName}
         gnocchi::storage::ceph::ceph_username: {get_param: CephClientUserName}
         gnocchi::storage::ceph::ceph_keyring:
index e21369e..f8128bb 100644 (file)
@@ -41,6 +41,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  HeatApiPolicies:
+    description: |
+      A hash of policies to configure for Heat API.
+      e.g. { heat-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 conditions:
   heat_workers_zero: {equals : [{get_param: HeatWorkers}, 0]}
@@ -82,6 +88,7 @@ outputs:
                   - 13004
             heat::api::bind_host: {get_param: [ServiceNetMap, HeatApiNetwork]}
             heat::wsgi::apache_api::ssl: {get_param: EnableInternalTLS}
+            heat::policy::policies: {get_param: HeatApiPolicies}
             heat::api::service_name: 'httpd'
             # NOTE: bind IP is found in Heat replacing the network name with the local node IP
             # for the given network; replacement examples (eg. for internal_api):
index a166f3a..98dac4c 100644 (file)
@@ -112,7 +112,11 @@ outputs:
                   - {get_param: [EndpointMap, MysqlInternal, host]}
                   - '/heat'
                   - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
-            heat::keystone_ec2_uri: {get_param: [EndpointMap, KeystoneEC2, uri]}
+            heat::keystone_ec2_uri:
+              list_join:
+              - ''
+              - - {get_param: [EndpointMap, KeystoneV3Internal, uri]}
+                - '/ec2tokens'
             heat::keystone::domain::domain_password: {get_param: HeatStackDomainAdminPassword}
             heat::engine::auth_encryption_key:
               yaql:
index 7ae518b..8fb13c1 100644 (file)
@@ -40,6 +40,10 @@ parameters:
     type: string
     hidden: true
     default: ''
+  HorizonSecureCookies:
+    description: Set CSRF_COOKIE_SECURE / SESSION_COOKIE_SECURE in Horizon
+    type: boolean
+    default: true
   MemcachedIPv6:
     default: false
     description: Enable IPv6 features in Memcached.
@@ -88,6 +92,7 @@ outputs:
                 passwords:
                   - {get_param: HorizonSecret}
                   - {get_param: [DefaultPasswords, horizon_secret]}
+          horizon::secure_cookies: {get_param: [HorizonSecureCookies]}
           memcached_ipv6: {get_param: MemcachedIPv6}
         -
           if:
index e24d0de..1f18cb1 100644 (file)
@@ -29,6 +29,12 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  IronicApiPolicies:
+    description: |
+      A hash of policies to configure for Ironic API.
+      e.g. { ironic-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   IronicBase:
@@ -64,6 +70,7 @@ outputs:
             ironic::api::port: {get_param: [EndpointMap, IronicInternal, port]}
             # This is used to build links in responses
             ironic::api::public_endpoint: {get_param: [EndpointMap, IronicPublic, uri_no_suffix]}
+            ironic::policy::policies: {get_param: IronicApiPolicies}
             tripleo.ironic_api.firewall_rules:
               '133 ironic api':
                 dport:
index 56e1a90..be910d1 100644 (file)
@@ -32,6 +32,15 @@ parameters:
                  created yet) and should be changed to an actual UUID in
                  a post-deployment stack update.
     type: string
+  IronicDefaultNetworkInterface:
+    default: 'flat'
+    description: Network interface implementation to use by default.
+                 Set to "flat" (the default) to use one flat provider network.
+                 Set to "neutron" to make Ironic interact with the Neutron
+                 ML2 driver to enable other network types and certain
+                 advances networking features. Requires
+                 IronicProvisioningNetwork to be correctly set.
+    type: string
   IronicEnabledDrivers:
     default: ['pxe_ipmitool', 'pxe_drac', 'pxe_ilo']
     description: Enabled Ironic drivers
@@ -48,6 +57,15 @@ parameters:
     description: The password for the Ironic service and db account, used by the Ironic services
     type: string
     hidden: true
+  IronicProvisioningNetwork:
+    default: 'provisioning'
+    description: Name or UUID of the *overcloud* network used for provisioning
+                 of bare metal nodes, if IronicDefaultNetworkInterface is
+                 set to "neutron". The default value of "provisioning" can be
+                 left during the initial deployment (when no networks are
+                 created yet) and should be changed to an actual UUID in
+                 a post-deployment stack update.
+    type: string
   MonitoringSubscriptionIronicConductor:
     default: 'overcloud-ironic-conductor'
     type: string
@@ -72,6 +90,7 @@ outputs:
           - ironic::conductor::api_url: {get_param: [EndpointMap, IronicInternal, uri_no_suffix]}
             ironic::conductor::cleaning_disk_erase: {get_param: IronicCleaningDiskErase}
             ironic::conductor::cleaning_network: {get_param: IronicCleaningNetwork}
+            ironic::conductor::provisioning_network: {get_param: IronicProvisioningNetwork}
             ironic::conductor::enabled_drivers: {get_param: IronicEnabledDrivers}
             # We need an endpoint containing a real IP, not a VIP here
             ironic_conductor_http_host: {get_param: [ServiceNetMap, IronicNetwork]}
@@ -93,6 +112,8 @@ outputs:
             # NOTE(dtantsur): UEFI only works with iPXE currently for us
             ironic::drivers::pxe::uefi_pxe_config_template: '$pybasedir/drivers/modules/ipxe_config.template'
             ironic::drivers::pxe::uefi_pxe_bootfile_name: 'ipxe.efi'
+            ironic::drivers::interfaces::enabled_network_interfaces: ['flat', 'neutron']
+            ironic::drivers::interfaces::default_network_interface: {get_param: IronicDefaultNetworkInterface}
             tripleo.ironic_conductor.firewall_rules:
               '134 ironic conductor TFTP':
                 dport: 69
index fec455d..2a335b6 100644 (file)
@@ -22,6 +22,10 @@ parameters:
     default: 1048576
     description: Configures sysctl kernel.pid_max key
     type: number
+  KernelDisableIPv6:
+    default: 0
+    description: Configures sysctl net.ipv6.{default/all}.disable_ipv6 keys
+    type: number
 
 outputs:
   role_data:
@@ -31,7 +35,7 @@ outputs:
       config_settings:
         kernel_modules:
           nf_conntrack: {}
-          ip_conntrack_proto_sctp: {}
+          nf_conntrack_proto_sctp: {}
         sysctl_settings:
           net.ipv4.tcp_keepalive_intvl:
             value: 1
@@ -39,10 +43,28 @@ outputs:
             value: 5
           net.ipv4.tcp_keepalive_time:
             value: 5
+          net.ipv4.conf.default.send_redirects:
+            value: 0
+          net.ipv4.conf.all.send_redirects:
+            value: 0
+          net.ipv4.conf.default.accept_redirects:
+            value: 0
+          net.ipv4.conf.default.secure_redirects:
+            value: 0
+          net.ipv4.conf.all.secure_redirects:
+            value: 0
+          net.ipv4.conf.default.log_martians:
+            value: 1
+          net.ipv4.conf.all.log_martians:
+            value: 1
           net.nf_conntrack_max:
             value: 500000
           net.netfilter.nf_conntrack_max:
             value: 500000
+          net.ipv6.conf.default.disable_ipv6:
+            value: {get_param: KernelDisableIPv6}
+          net.ipv6.conf.all.disable_ipv6:
+            value: {get_param: KernelDisableIPv6}
           # prevent neutron bridges from autoconfiguring ipv6 addresses
           net.ipv6.conf.all.accept_ra:
             value: 0
@@ -52,9 +74,17 @@ outputs:
             value: 0
           net.ipv6.conf.default.autoconf:
             value: 0
+          net.ipv6.conf.default.accept_redirects:
+            value: 0
+          net.ipv6.conf.all.accept_redirects:
+            value: 0
           net.core.netdev_max_backlog:
             value: 10000
           kernel.pid_max:
             value: {get_param: KernelPidMax}
+          kernel.dmesg_restrict:
+            value: 1
+          fs.suid_dumpable:
+            value: 0
       step_config: |
         include ::tripleo::profile::base::kernel
index 1761686..8a0e750 100644 (file)
@@ -119,27 +119,27 @@ parameters:
         Cron to purge expired tokens - Ensure
     default: 'present'
   KeystoneCronTokenFlushMinute:
-    type: string
+    type: comma_delimited_list
     description: >
         Cron to purge expired tokens - Minute
     default: '1'
   KeystoneCronTokenFlushHour:
-    type: string
+    type: comma_delimited_list
     description: >
         Cron to purge expired tokens - Hour
-    default: '0'
+    default: '*'
   KeystoneCronTokenFlushMonthday:
-    type: string
+    type: comma_delimited_list
     description: >
         Cron to purge expired tokens - Month Day
     default: '*'
   KeystoneCronTokenFlushMonth:
-    type: string
+    type: comma_delimited_list
     description: >
         Cron to purge expired tokens - Month
     default: '*'
   KeystoneCronTokenFlushWeekday:
-    type: string
+    type: comma_delimited_list
     description: >
         Cron to purge expired tokens - Week Day
     default: '*'
@@ -158,6 +158,22 @@ parameters:
     description: >
         Cron to purge expired tokens - User
     default: 'keystone'
+  KeystonePolicies:
+    description: |
+      A hash of policies to configure for Keystone.
+      e.g. { keystone-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
+  KeystoneLDAPDomainEnable:
+    description: Trigger to call ldap_backend puppet keystone define.
+    type: boolean
+    default: False
+  KeystoneLDAPBackendConfigs:
+    description: Hash containing the configurations for the LDAP backends
+                 configured in keystone.
+    type: json
+    default: {}
+    hidden: true
 
 resources:
 
@@ -171,6 +187,7 @@ resources:
 
 conditions:
   keystone_fernet_tokens: {equals: [{get_param: KeystoneTokenProvider}, "fernet"]}
+  keystone_ldap_domain_enabled: {equals: [{get_param: KeystoneLDAPDomainEnable}, True]}
 
 outputs:
   role_data:
@@ -197,6 +214,7 @@ outputs:
             keystone::admin_token: {get_param: AdminToken}
             keystone::admin_password: {get_param: AdminPassword}
             keystone::roles::admin::password: {get_param: AdminPassword}
+            keystone::policy::policies: {get_param: KeystonePolicies}
             keystone_ssl_certificate: {get_param: KeystoneSSLCertificate}
             keystone_ssl_certificate_key: {get_param: KeystoneSSLCertificateKey}
             keystone::token_provider: {get_param: KeystoneTokenProvider}
@@ -293,6 +311,15 @@ outputs:
             keystone::cron::token_flush::maxdelay: {get_param: KeystoneCronTokenFlushMaxDelay}
             keystone::cron::token_flush::destination: {get_param: KeystoneCronTokenFlushDestination}
             keystone::cron::token_flush::user: {get_param: KeystoneCronTokenFlushUser}
+          -
+            if:
+            - keystone_ldap_domain_enabled
+            -
+              tripleo::profile::base::keystone::ldap_backend_enable: True
+              keystone::using_domain_config: True
+              tripleo::profile::base::keystone::ldap_backends_config:
+                get_param: KeystoneLDAPBackendConfigs
+            - {}
 
       step_config: |
         include ::tripleo::profile::base::keystone
@@ -305,6 +332,13 @@ outputs:
           keystone::db::mysql::allowed_hosts:
             - '%'
             - "%{hiera('mysql_bind_host')}"
+        horizon:
+          if:
+          - keystone_ldap_domain_enabled
+          -
+            horizon::keystone_multidomain_support: true
+            horizon::keystone_default_domain: 'Default'
+          - {}
       # Ansible tasks to handle upgrade
       upgrade_tasks:
         - name: Stop keystone service (running under httpd)
index 1c7d6bd..02c6939 100644 (file)
@@ -22,6 +22,12 @@ parameters:
     default: 1
     description: The number of workers for the mistral-api.
     type: number
+  MistralApiPolicies:
+    description: |
+      A hash of policies to configure for Mistral API.
+      e.g. { mistral-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   MistralBase:
@@ -41,6 +47,7 @@ outputs:
           - get_attr: [MistralBase, role_data, config_settings]
           - mistral::api::api_workers: {get_param: MistralWorkers}
             mistral::api::bind_host: {get_param: [ServiceNetMap, MistralApiNetwork]}
+            mistral::policy::policies: {get_param: MistralApiPolicies}
             tripleo.mistral_api.firewall_rules:
               '133 mistral':
                 dport:
index e103034..d5c2169 100644 (file)
@@ -74,7 +74,11 @@ outputs:
         mistral::keystone_password: {get_param: MistralPassword}
         mistral::keystone_tenant: 'service'
         mistral::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri]}
-        mistral::keystone_ec2_uri: {get_param: [EndpointMap, KeystoneEC2, uri]}
+        mistral::keystone_ec2_uri:
+          list_join:
+          - ''
+          - - {get_param: [EndpointMap, KeystoneV3Internal, uri]}
+            - '/ec2tokens'
         mistral::identity_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
       service_config_settings:
         keystone:
index aba2b1e..4b5f36a 100644 (file)
@@ -81,4 +81,4 @@ outputs:
         - name: Install sensu package if it was disabled
           tags: step3
           yum: name=sensu state=latest
-          when: sensu_client.rc != 0
+          when: sensu_client_enabled.rc != 0
index db9f083..0cd1f82 100644 (file)
@@ -27,7 +27,7 @@ parameters:
     description: vRouter physical interface
     type: string
   ContrailVrouterGateway:
-    default: '192.0.2.1'
+    default: '192.168.24.1'
     description: vRouter default gateway
     type: string
   ContrailVrouterNetmask:
index bb102c0..9b9d1c7 100644 (file)
@@ -57,6 +57,15 @@ parameters:
     default:
       tag: openstack.neutron.api
       path: /var/log/neutron/server.log
+  EnableInternalTLS:
+    type: boolean
+    default: false
+  NeutronApiPolicies:
+    description: |
+      A hash of policies to configure for Neutron API.
+      e.g. { neutron-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
   # DEPRECATED: the following options are deprecated and are currently maintained
   # for backwards compatibility. They will be removed in the Ocata cycle.
@@ -71,10 +80,6 @@ parameters:
       removed in Ocata.  Future releases will enable L3 HA by default if it is
       appropriate for the deployment type. Alternate mechanisms will be
       available to override.
-  EnableInternalTLS:
-    type: boolean
-    default: false
-
 parameter_groups:
 - label: deprecated
   description: |
@@ -128,6 +133,7 @@ outputs:
                   - {get_param: [EndpointMap, MysqlInternal, host]}
                   - '/ovs_neutron'
                   - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
+            neutron::policy::policies: {get_param: NeutronApiPolicies}
             neutron::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
             neutron::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             neutron::server::api_workers: {get_param: NeutronWorkers}
@@ -204,3 +210,5 @@ outputs:
           tags: step1
           when: neutron_server_enabled.rc == 0
           service: name=neutron-server state=stopped
+      metadata_settings:
+        get_attr: [TLSProxyBase, role_data, metadata_settings]
index 5536193..9f60506 100644 (file)
@@ -22,6 +22,10 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  DatabaseSyncTimeout:
+    default: 300
+    description: DB Sync Timeout default
+    type: number
   NeutronDhcpAgentsPerNetwork:
     type: number
     default: 0
@@ -44,10 +48,10 @@ parameters:
     description: Set to True to enable debugging on all services.
   EnableConfigPurge:
     type: boolean
-    default: true
+    default: false
     description: >
-        Remove configuration that is not generated by TripleO. Setting
-        to false may result in configuration remnants after updates/upgrades.
+        Remove configuration that is not generated by TripleO. Used to avoid
+        configuration remnants after upgrades.
   NeutronGlobalPhysnetMtu:
     type: number
     default: 1500
@@ -95,6 +99,7 @@ outputs:
             neutron::host: '%{::fqdn}'
             neutron::db::database_db_max_retries: -1
             neutron::db::database_max_retries: -1
+            neutron::db::sync::db_sync_timeout: {get_param: DatabaseSyncTimeout}
             neutron::global_physnet_mtu: {get_param: NeutronGlobalPhysnetMtu}
           - if:
             - dhcp_agents_zero
diff --git a/puppet/services/neutron-bigswitch-agent.yaml b/puppet/services/neutron-bigswitch-agent.yaml
new file mode 100644 (file)
index 0000000..845f0da
--- /dev/null
@@ -0,0 +1,31 @@
+heat_template_version: ocata
+
+description: >
+  Installs bigswitch agent and enables the services
+
+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
+
+
+outputs:
+  role_data:
+    description: Configure the bigswitch agent services
+    value:
+      service_name: neutron_bigswitch_agent
+      step_config: |
+        if hiera('step') >= 4 {
+          include ::neutron::agents::bigswitch
+        }
index 04431e2..ea71769 100644 (file)
@@ -22,6 +22,10 @@ parameters:
     description: The password for the nova service account, used by nova-api.
     type: string
     hidden: true
+  NuageMetadataPort:
+    description: TCP Port to listen for metadata server requests
+    type: string
+    default: '9697'
 
 outputs:
   role_data:
@@ -32,5 +36,11 @@ outputs:
         tripleo::profile::base::neutron::agents::nuage::nova_os_tenant_name: 'service'
         tripleo::profile::base::neutron::agents::nuage::nova_os_password: {get_param: NovaPassword}
         tripleo::profile::base::neutron::agents::nuage::nova_auth_ip: {get_param: [EndpointMap, KeystoneInternal, host]}
+        tripleo.neutron_compute_plugin_nuage.firewall_rules:
+          '118 neutron vxlan networks':
+            proto: 'udp'
+            dport: 4789
+          '100 metadata agent':
+            dport: {get_param: NuageMetadataPort}
       step_config: |
         include ::tripleo::profile::base::neutron::agents::nuage
index e3a4da9..0dca29a 100644 (file)
@@ -48,6 +48,7 @@ outputs:
         ovn::controller::ovn_encap_type: {get_param: OVNTunnelEncapType}
         ovn::controller::ovn_encap_ip: {get_param: [ServiceNetMap, NeutronApiNetwork]}
         ovn::controller::ovn_bridge_mappings: {get_param: NeutronBridgeMappings}
+        nova::compute::force_config_drive: true
         tripleo.neutron_compute_plugin_ovn.firewall_rules:
           '118 neutron vxlan networks':
                 proto: 'udp'
diff --git a/puppet/services/neutron-l2gw-api.yaml b/puppet/services/neutron-l2gw-api.yaml
new file mode 100644 (file)
index 0000000..b6f0d28
--- /dev/null
@@ -0,0 +1,54 @@
+heat_template_version: ocata
+
+description: >
+  L2 Gateway service plugin configured with Puppet
+
+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
+  L2gwServiceDefaultInterfaceName:
+    default: 'FortyGigE1/0/1'
+    description: default interface name of the L2 gateway
+    type: string
+  L2gwServiceDefaultDeviceName:
+    default: 'Switch1'
+    description: default device name of the L2 gateway
+    type: string
+  L2gwServiceQuotaL2Gateway:
+    default: 5
+    description: quota of the L2 gateway
+    type: number
+  L2gwServicePeriodicMonitoringInterval:
+    default: 5
+    description: The periodic interval at which the plugin
+    type: number
+  L2gwServiceProvider:
+    default: ["L2GW:l2gw:networking_l2gw.services.l2gateway.service_drivers.L2gwDriver:default"]
+    description: Backend to use as a service provider for L2 Gateway
+    type: comma_delimited_list
+
+outputs:
+  role_data:
+    description: Role data for the L2 Gateway role.
+    value:
+      service_name: neutron_l2gw_api
+      config_settings:
+        neutron::services::l2gw::default_interface_name: {get_param: L2gwServiceDefaultInterfaceName}
+        neutron::services::l2gw::default_device_name: {get_param: L2gwServiceDefaultDeviceName}
+        neutron::services::l2gw::quota_l2_gateway: {get_param: L2gwServiceQuotaL2Gateway}
+        neutron::services::l2gw::periodic_monitoring_interval: {get_param: L2gwServicePeriodicMonitoringInterval}
+        neutron::services::l2gw::service_providers: {get_param: L2gwServiceProvider}
+      step_config: |
+        include tripleo::profile::base::neutron::l2gw
index 01471ba..ef2485d 100644 (file)
@@ -82,6 +82,9 @@ resources:
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
 
+  OpenVswitchUpgrade:
+    type: ./openvswitch-upgrade.yaml
+
 outputs:
   role_data:
     description: Role data for the Neutron OVS agent service.
@@ -121,16 +124,22 @@ outputs:
       step_config: |
         include ::tripleo::profile::base::neutron::ovs
       upgrade_tasks:
-        - name: Check if neutron_ovs_agent is deployed
-          command: systemctl is-enabled neutron-openvswitch-agent
-          tags: common
-          ignore_errors: True
-          register: neutron_ovs_agent_enabled
-        - name: "PreUpgrade step0,validation: Check service neutron-openvswitch-agent is running"
-          shell: /usr/bin/systemctl show 'neutron-openvswitch-agent' --property ActiveState | grep '\bactive\b'
-          when: neutron_ovs_agent_enabled.rc == 0
-          tags: step0,validation
-        - name: Stop neutron_ovs_agent service
-          tags: step1
-          when: neutron_ovs_agent_enabled.rc == 0
-          service: name=neutron-openvswitch-agent state=stopped
+        yaql:
+          expression: $.data.ovs_upgrade + $.data.neutron_ovs_upgrade
+          data:
+            ovs_upgrade:
+              get_attr: [OpenVswitchUpgrade, role_data, upgrade_tasks]
+            neutron_ovs_upgrade:
+              - name: Check if neutron_ovs_agent is deployed
+                command: systemctl is-enabled neutron-openvswitch-agent
+                tags: common
+                ignore_errors: True
+                register: neutron_ovs_agent_enabled
+              - name: "PreUpgrade step0,validation: Check service neutron-openvswitch-agent is running"
+                shell: /usr/bin/systemctl show 'neutron-openvswitch-agent' --property ActiveState | grep '\bactive\b'
+                when: neutron_ovs_agent_enabled.rc == 0
+                tags: step0,validation
+              - name: Stop neutron_ovs_agent service
+                tags: step1
+                when: neutron_ovs_agent_enabled.rc == 0
+                service: name=neutron-openvswitch-agent state=stopped
index e25bc49..80516fe 100644 (file)
@@ -62,6 +62,9 @@ resources:
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
 
+  OpenVswitchUpgrade:
+    type: ./openvswitch-upgrade.yaml
+
 outputs:
   role_data:
     description: Role data for the Neutron OVS DPDK Agent service.
@@ -69,7 +72,10 @@ outputs:
       service_name: neutron_ovs_dpdk_agent
       config_settings:
         map_merge:
-          - get_attr: [NeutronOvsAgent, role_data, config_settings]
+          - map_replace:
+            - get_attr: [NeutronOvsAgent, role_data, config_settings]
+            - keys:
+                tripleo.neutron_ovs_agent.firewall_rules: tripleo.neutron_ovs_dpdk_agent.firewall_rules
           - neutron::agents::ml2::ovs::enable_dpdk: true
             neutron::agents::ml2::ovs::datapath_type: {get_param: NeutronDatapathType}
             neutron::agents::ml2::ovs::vhostuser_socket_dir: {get_param: NeutronVhostuserSocketDir}
@@ -79,3 +85,5 @@ outputs:
             vswitch::dpdk::socket_mem: {get_param: NeutronDpdkSocketMemory}
             vswitch::dpdk::driver_type: {get_param: NeutronDpdkDriverType}
       step_config: {get_attr: [NeutronOvsAgent, role_data, step_config]}
+      upgrade_tasks:
+        get_attr: [OpenVswitchUpgrade, role_data, upgrade_tasks]
diff --git a/puppet/services/neutron-plugin-ml2-odl.yaml b/puppet/services/neutron-plugin-ml2-odl.yaml
new file mode 100644 (file)
index 0000000..acacadf
--- /dev/null
@@ -0,0 +1,45 @@
+heat_template_version: ocata
+
+description: >
+  OpenStack Neutron ML2/OpenDaylight plugin configured with Puppet
+
+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
+  OpenDaylightPortBindingController:
+    description: OpenDaylight port binding controller
+    type: string
+    default: 'network-topology'
+
+resources:
+
+  NeutronMl2Base:
+    type: ./neutron-plugin-ml2.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron ML2/ODL plugin.
+    value:
+      service_name: neutron_plugin_ml2_odl
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronMl2Base, role_data, config_settings]
+          - neutron::plugins::ml2::opendaylight::port_binding_controller: {get_param: OpenDaylightPortBindingController}
+      step_config: |
+        include ::tripleo::profile::base::neutron::plugins::ml2
index e09cd70..6229a3f 100644 (file)
@@ -19,10 +19,6 @@ parameters:
                  via parameter_defaults in the resource registry.
     type: json
   # Config specific parameters, to be provided via parameter_defaults
-  NeutronNuageOSControllerIp:
-    description: IP address of the OpenStack Controller
-    type: string
-
   NeutronNuageNetPartitionName:
     description: Specifies the title that you will see on the VSD
     type: string
@@ -76,8 +72,7 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
-          - neutron::plugins::nuage::nuage_oscontroller_ip: {get_param: NeutronNuageOSControllerIp}
-            neutron::plugins::nuage::nuage_net_partition_name: {get_param: NeutronNuageNetPartitionName}
+          - neutron::plugins::nuage::nuage_net_partition_name: {get_param: NeutronNuageNetPartitionName}
             neutron::plugins::nuage::nuage_vsd_ip: {get_param: NeutronNuageVSDIp}
             neutron::plugins::nuage::nuage_vsd_username: {get_param: NeutronNuageVSDUsername}
             neutron::plugins::nuage::nuage_vsd_password: {get_param: NeutronNuageVSDPassword}
index 473c24b..18d9b92 100644 (file)
@@ -62,6 +62,12 @@ parameters:
     default: 300
     description: Timeout for Nova db sync
     type: number
+  NovaApiPolicies:
+    description: |
+      A hash of policies to configure for Nova API.
+      e.g. { nova-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 conditions:
   nova_workers_zero: {equals : [{get_param: NovaWorkers}, 0]}
@@ -145,6 +151,7 @@ outputs:
           nova::api::neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
           nova::api::instance_name_template: {get_param: InstanceNameTemplate}
           nova_enable_db_purge: {get_param: NovaEnableDBPurge}
+          nova::policy::policies: {get_param: NovaApiPolicies}
         -
           if:
           - nova_workers_zero
@@ -227,7 +234,7 @@ outputs:
         - name: Setup cell_v2 (map cell0)
           tags: step5
           when: is_bootstrap_node
-          command: nova-manage cell_v2 map_cell0
+          shell: nova-manage cell_v2 map_cell0 --database_connection=$(hiera nova::cell0_database_connection)
         - name: Setup cell_v2 (create default cell)
           tags: step5
           when: is_bootstrap_node
@@ -243,15 +250,15 @@ outputs:
           command: nova-manage db sync
           async: {get_param: NovaDbSyncTimeout}
           poll: 10
-        - name: Setup cell_v2 (migrate hosts)
-          tags: step5
-          when: is_bootstrap_node
-          command: nova-manage cell_v2 map_cell_and_hosts
         - name: Setup cell_v2 (get cell uuid)
           tags: step5
           when: is_bootstrap_node
           shell: nova-manage cell_v2 list_cells | sed -e '1,3d' -e '$d' | awk -F ' *| *' '$2 == "default" {print $4}'
           register: nova_api_cell_uuid
+        - name: Setup cell_v2 (migrate hosts)
+          tags: step5
+          when: is_bootstrap_node
+          command: nova-manage cell_v2 discover_hosts --cell_uuid {{nova_api_cell_uuid.stdout}} --verbose
         - name: Setup cell_v2 (migrate instances)
           tags: step5
           when: is_bootstrap_node
index ceacb0b..9e7f014 100644 (file)
@@ -52,16 +52,20 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  DatabaseSyncTimeout:
+    default: 300
+    description: DB Sync Timeout default
+    type: number
   Debug:
     type: string
     default: ''
     description: Set to True to enable debugging on all services.
   EnableConfigPurge:
     type: boolean
-    default: true
+    default: false
     description: >
-        Remove configuration that is not generated by TripleO. Setting
-        to false may result in configuration remnants after updates/upgrades.
+        Remove configuration that is not generated by TripleO. Used to avoid
+        configuration remnants after upgrades.
   NovaIPv6:
     default: false
     description: Enable IPv6 features in Nova
@@ -151,6 +155,16 @@ outputs:
                 - {get_param: [EndpointMap, MysqlInternal, host]}
                 - '/nova'
                 - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
+          nova::cell0_database_connection:
+            list_join:
+              - ''
+              - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+                - '://nova:'
+                - {get_param: NovaPassword}
+                - '@'
+                - {get_param: [EndpointMap, MysqlInternal, host]}
+                - '/nova_cell0'
+                - '?read_default_file=/etc/my.cnf.d/tripleo.cnf&read_default_group=tripleo'
           nova::api_database_connection:
             list_join:
               - ''
@@ -188,6 +202,8 @@ outputs:
           nova::network::neutron::neutron_auth_type: 'v3password'
           nova::db::database_db_max_retries: -1
           nova::db::database_max_retries: -1
+          nova::db::sync::db_sync_timeout: {get_param: DatabaseSyncTimeout}
+          nova::db::sync_api::db_sync_timeout: {get_param: DatabaseSyncTimeout}
           nova::glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
           nova::use_ipv6: {get_param: NovaIPv6}
           nova::network::neutron::neutron_ovs_bridge: {get_param: NovaOVSBridge}
index 9057c71..b171143 100644 (file)
@@ -52,7 +52,7 @@ parameters:
       For different formats, refer to the nova.conf documentation for
       pci_passthrough_whitelist configuration
     type: json
-    default: {}
+    default: ''
   NovaVcpuPinSet:
     description: >
       A list or range of physical CPU cores to reserve for virtual machine
@@ -108,7 +108,11 @@ outputs:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
           - nova::compute::libvirt::manage_libvirt_services: false
-            nova::compute::pci_passthrough: {get_param: NovaPCIPassthrough}
+            nova::compute::pci_passthrough:
+              str_replace:
+                template: "JSON_PARAM"
+                params:
+                  JSON_PARAM: {get_param: NovaPCIPassthrough}
             nova::compute::vcpu_pin_set: {get_param: NovaVcpuPinSet}
             nova::compute::reserved_host_memory: {get_param: NovaReservedHostMemory}
             # we manage migration in nova common puppet profile
index 843f44c..f1d8dff 100644 (file)
@@ -51,3 +51,7 @@ outputs:
             nova::scheduler::filter::scheduler_host_manager: 'ironic_host_manager'
       step_config: |
         include tripleo::profile::base::nova::compute::ironic
+      upgrade_tasks:
+        - name: Stop openstack-nova-compute service
+          tags: step1
+          service: name=openstack-nova-compute state=stopped enabled=no
index 909a303..2f898a6 100644 (file)
@@ -34,6 +34,12 @@ parameters:
     default:
       tag: openstack.octavia.api
       path: /var/log/octavia/api.log
+  OctaviaApiPolicies:
+    description: |
+      A hash of policies to configure for Octavia API.
+      e.g. { octavia-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
 
@@ -57,6 +63,7 @@ outputs:
         map_merge:
           - get_attr: [OctaviaBase, role_data, config_settings]
           - octavia::keystone::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+            octavia::policy::policies: {get_param: OctaviaApiPolicies}
             octavia::db::database_connection:
               list_join:
                 - ''
index a3f616f..db15aa1 100644 (file)
@@ -24,10 +24,10 @@ parameters:
     description: Set to True to enable debugging on all services.
   EnableConfigPurge:
     type: boolean
-    default: true
+    default: false
     description: >
-        Remove configuration that is not generated by TripleO. Setting
-        to false may result in configuration remnants after updates/upgrades.
+        Remove configuration that is not generated by TripleO. Used to avoid
+        configuration remnants after upgrades.
   RabbitPassword:
     description: The password for RabbitMQ
     type: string
index 3db0848..ed572b4 100644 (file)
@@ -48,6 +48,10 @@ parameters:
     default: {}
     type: json
 
+resources:
+  OpenVswitchUpgrade:
+    type: ./openvswitch-upgrade.yaml
+
 outputs:
   role_data:
     description: Role data for the OpenDaylight service.
@@ -60,11 +64,7 @@ outputs:
         opendaylight_check_url: {get_param: OpenDaylightCheckURL}
         opendaylight::nb_connection_protocol: {get_param: OpenDaylightConnectionProtocol}
         neutron::agents::ml2::ovs::local_ip: {get_param: [ServiceNetMap, NeutronTenantNetwork]}
-        neutron::plugins::ovs::opendaylight::provider_mappings:
-          str_replace:
-            template: MAPPINGS
-            params:
-              MAPPINGS: {get_param: OpenDaylightProviderMappings}
+        neutron::plugins::ovs::opendaylight::provider_mappings: {get_param: OpenDaylightProviderMappings}
         tripleo.opendaylight_ovs.firewall_rules:
           '118 neutron vxlan networks':
              proto: 'udp'
@@ -74,16 +74,22 @@ outputs:
       step_config: |
         include tripleo::profile::base::neutron::plugins::ovs::opendaylight
       upgrade_tasks:
-        - name: Check if openvswitch is deployed
-          command: systemctl is-enabled openvswitch
-          tags: common
-          ignore_errors: True
-          register: openvswitch_enabled
-        - name: "PreUpgrade step0,validation: Check service openvswitch is running"
-          shell: /usr/bin/systemctl show 'openvswitch' --property ActiveState | grep '\bactive\b'
-          when: openvswitch_enabled.rc == 0
-          tags: step0,validation
-        - name: Stop openvswitch service
-          tags: step1
-          when: openvswitch_enabled.rc == 0
-          service: name=openvswitch state=stopped
+        yaql:
+          expression: $.data.ovs_upgrade + $.data.opendaylight_upgrade
+          data:
+            ovs_upgrade:
+              get_attr: [OpenVswitchUpgrade, role_data, upgrade_tasks]
+            opendaylight_upgrade:
+              - name: Check if openvswitch is deployed
+                command: systemctl is-enabled openvswitch
+                tags: common
+                ignore_errors: True
+                register: openvswitch_enabled
+              - name: "PreUpgrade step0,validation: Check service openvswitch is running"
+                shell: /usr/bin/systemctl show 'openvswitch' --property ActiveState | grep '\bactive\b'
+                when: openvswitch_enabled.rc == 0
+                tags: step0,validation
+              - name: Stop openvswitch service
+                tags: step1
+                when: openvswitch_enabled.rc == 0
+                service: name=openvswitch state=stopped
diff --git a/puppet/services/openvswitch-upgrade.yaml b/puppet/services/openvswitch-upgrade.yaml
new file mode 100644 (file)
index 0000000..fea1ba9
--- /dev/null
@@ -0,0 +1,50 @@
+heat_template_version: ocata
+
+description: >
+  Openvswitch package special handling for upgrade.
+
+outputs:
+  role_data:
+    description: Upgrade task for special handling of Openvswitch (OVS) upgrade.
+    value:
+      service_name: openvswitch_upgrade
+      upgrade_tasks:
+        - name: Check openvswitch version.
+          tags: step2
+          register: ovs_version
+          ignore_errors: true
+          shell: rpm -qa | awk -F- '/^openvswitch-2/{print $2 "-" $3}'
+        - name: Check openvswitch packaging.
+          tags: step2
+          shell: rpm -q --scripts openvswitch | awk '/postuninstall/,/*/' | grep -q "systemctl.*try-restart"
+          register: ovs_packaging_issue
+          ignore_errors: true
+        - block:
+            - name: "Ensure empty directory: emptying."
+              file:
+                state: absent
+                path: /root/OVS_UPGRADE
+            - name: "Ensure empty directory: creating."
+              file:
+                state: directory
+                path: /root/OVS_UPGRADE
+                owner: root
+                group: root
+                mode: 0750
+            - name: Download OVS packages.
+              command: yumdownloader --destdir /root/OVS_UPGRADE --resolve openvswitch
+            - name: Get rpm list for manual upgrade of OVS.
+              shell: ls -1 /root/OVS_UPGRADE/*.rpm
+              register: ovs_list_of_rpms
+            - name: Manual upgrade of OVS
+              shell: |
+                rpm -U --test {{item}} 2>&1 | grep "already installed" || \
+                rpm -U --replacepkgs --notriggerun --nopostun {{item}};
+              args:
+                chdir: /root/OVS_UPGRADE
+              with_items:
+                - "{{ovs_list_of_rpms.stdout_lines}}"
+          tags: step2
+          when: "'2.5.0-14' in '{{ovs_version.stdout}}'
+                or
+                ovs_packaging_issue|succeeded"
index 7f81afd..6b8be77 100644 (file)
@@ -36,5 +36,11 @@ outputs:
           ovn::northbound::port: {get_param: OVNNorthboundServerPort}
           ovn::southbound::port: {get_param: OVNSouthboundServerPort}
           ovn::northd::dbs_listen_ip: {get_param: [ServiceNetMap, OvnDbsNetwork]}
+          tripleo.ovn_dbs.firewall_rules:
+            '121 OVN DB server ports':
+              proto: 'tcp'
+              dport:
+                - {get_param: OVNNorthboundServerPort}
+                - {get_param: OVNSouthboundServerPort}
       step_config: |
         include ::tripleo::profile::base::neutron::ovn_northd
index 762d009..f7a0edf 100644 (file)
@@ -87,10 +87,16 @@ parameters:
         \[(?<pid>[^ ]*)\]
         (?<host>[^ ]*)
         (?<message>.*)$/
+
+  EnableLoadBalancer:
+    default: true
+    description: Whether to deploy a LoadBalancer on the Controller
+    type: boolean
+
   PacemakerResources:
     type: comma_delimited_list
     description: List of resources managed by pacemaker
-    default: ['rabbitmq','haproxy','galera']
+    default: ['rabbitmq', 'galera']
 
 outputs:
   role_data:
@@ -135,6 +141,8 @@ outputs:
         - name: Check pacemaker cluster running before upgrade
           tags: step0,validation
           pacemaker_cluster: state=online check_and_fail=true
+          async: 30
+          poll: 4
         - name: Stop pacemaker cluster
           tags: step2
           pacemaker_cluster: state=offline
@@ -147,3 +155,9 @@ outputs:
             resource: "{{ item }}"
             max_wait: 500
           with_items: {get_param: PacemakerResources}
+        - name: Check pacemaker haproxy resource
+          tags: step4
+          pacemaker_is_active:
+            resource: haproxy
+            max_wait: 500
+          when: {get_param: EnableLoadBalancer}
index eed9825..43e7aa1 100644 (file)
@@ -24,6 +24,12 @@ parameters:
   EnableInternalTLS:
     type: boolean
     default: false
+  PankoApiPolicies:
+    description: |
+      A hash of policies to configure for Panko API.
+      e.g. { panko-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   PankoBase:
@@ -58,6 +64,7 @@ outputs:
                   "%{hiera('fqdn_$NETWORK')}"
                 params:
                   $NETWORK: {get_param: [ServiceNetMap, PankoApiNetwork]}
+            panko::policy::policies: {get_param: PankoApiPolicies}
             panko::api::service_name: 'httpd'
             panko::api::enable_proxy_headers_parsing: true
             tripleo.panko_api.firewall_rules:
diff --git a/puppet/services/qdr.yaml b/puppet/services/qdr.yaml
new file mode 100644 (file)
index 0000000..f8746ce
--- /dev/null
@@ -0,0 +1,60 @@
+heat_template_version: ocata
+
+description: >
+  Qpid dispatch router service configured with Puppet
+
+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
+  RabbitUserName:
+    default: guest
+    description: The username for Qdr
+    type: string
+  RabbitPassword:
+    description: The password for Qdr
+    type: string
+    hidden: true
+  RabbitClientPort:
+    description: Listening port for Qdr
+    default: 5672
+    type: number
+  MonitoringSubscriptionQdr:
+    default: 'overcloud-qdr'
+    type: string
+
+outputs:
+  role_data:
+    description: Role data for the Qdr role.
+    value:
+      service_name: rabbitmq
+      monitoring_subscription: {get_param: MonitoringSubscriptionQdr}
+      global_config_settings:
+        messaging_notify_service_name: 'amqp'
+        messaging_rpc_service_name: 'amqp'
+        keystone::messaging::amqp::amqp_pre_settled: 'notify'
+      config_settings:
+        tripleo.rabbitmq.firewall_rules:
+          '109 qdr':
+            dport:
+              - {get_param: RabbitClientPort}
+        qdr::listener_addr: {get_param: [ServiceNetMap, QdrNetwork]}
+        # cannot pass qdr::listener_port directly because it needs to be a string
+        # we do the conversion in the puppet layer
+        tripleo::profile::base::qdr::qdr_listener_port: {get_param: RabbitClientPort}
+        tripleo::profile::base::qdr::qdr_username: {get_param: RabbitUserName}
+        tripleo::profile::base::qdr::qdr_password: {get_param: RabbitPassword}
+
+      step_config: |
+        include ::tripleo::profile::base::qdr
diff --git a/puppet/services/rabbitmq-internal-tls-certmonger.yaml b/puppet/services/rabbitmq-internal-tls-certmonger.yaml
deleted file mode 100644 (file)
index 39d6b90..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-heat_template_version: ocata
-
-description: >
-  RabbitMQ configurations for using TLS via certmonger.
-
-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
-  # The following parameters are not needed by the template but are
-  # required to pass the pep8 tests
-  DefaultPasswords:
-    default: {}
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-
-outputs:
-  role_data:
-    description: RabbitMQ configurations for using TLS via certmonger.
-    value:
-      service_name: rabbitmq_internal_tls_certmonger
-      config_settings:
-        generate_service_certificates: true
-        tripleo::profile::base::rabbitmq::certificate_specs:
-          service_certificate: '/etc/pki/tls/certs/rabbitmq.crt'
-          service_key: '/etc/pki/tls/private/rabbitmq.key'
-          hostname:
-            str_replace:
-              template: "%{hiera('fqdn_NETWORK')}"
-              params:
-                NETWORK: {get_param: [ServiceNetMap, RabbitmqNetwork]}
-          principal:
-            str_replace:
-              template: "rabbitmq/%{hiera('fqdn_NETWORK')}"
-              params:
-                NETWORK: {get_param: [ServiceNetMap, RabbitmqNetwork]}
-      metadata_settings:
-        - service: rabbitmq
-          network: {get_param: [ServiceNetMap, RabbitmqNetwork]}
-          type: node
index 92a0015..4747978 100644 (file)
@@ -52,14 +52,8 @@ parameters:
     type: boolean
     default: false
 
-resources:
-
-  RabbitMQTLS:
-    type: OS::TripleO::Services::RabbitMQTLS
-    properties:
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
+conditions:
+  internal_tls_enabled: {equals: [{get_param: EnableInternalTLS}, true]}
 
 outputs:
   role_data:
@@ -69,7 +63,6 @@ outputs:
       monitoring_subscription: {get_param: MonitoringSubscriptionRabbitmq}
       config_settings:
         map_merge:
-          - get_attr: [RabbitMQTLS, role_data, config_settings]
           -
             rabbitmq::file_limit: {get_param: RabbitFDLimit}
             rabbitmq::default_user: {get_param: RabbitUserName}
@@ -124,6 +117,24 @@ outputs:
             # TODO(jaosorior): Remove this once we set a proper default in
             # puppet-tripleo
             tripleo::profile::base::rabbitmq::enable_internal_tls: {get_param: EnableInternalTLS}
+          -
+            if:
+            - internal_tls_enabled
+            - generate_service_certificates: true
+              tripleo::profile::base::rabbitmq::certificate_specs:
+                service_certificate: '/etc/pki/tls/certs/rabbitmq.crt'
+                service_key: '/etc/pki/tls/private/rabbitmq.key'
+                hostname:
+                  str_replace:
+                    template: "%{hiera('fqdn_NETWORK')}"
+                    params:
+                      NETWORK: {get_param: [ServiceNetMap, RabbitmqNetwork]}
+                principal:
+                  str_replace:
+                    template: "rabbitmq/%{hiera('fqdn_NETWORK')}"
+                    params:
+                      NETWORK: {get_param: [ServiceNetMap, RabbitmqNetwork]}
+            - {}
       step_config: |
         include ::tripleo::profile::base::rabbitmq
       upgrade_tasks:
@@ -134,4 +145,10 @@ outputs:
           tags: step4
           service: name=rabbitmq-server state=started
       metadata_settings:
-        get_attr: [RabbitMQTLS, role_data, metadata_settings]
+        if:
+          - internal_tls_enabled
+          -
+            - service: rabbitmq
+              network: {get_param: [ServiceNetMap, RabbitmqNetwork]}
+              type: node
+          - null
index 96b3d6e..d9f2115 100644 (file)
@@ -38,6 +38,12 @@ parameters:
     default:
       tag: openstack.sahara.api
       path: /var/log/sahara/sahara-api.log
+  SaharaApiPolicies:
+    description: |
+      A hash of policies to configure for Sahara API.
+      e.g. { sahara-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 resources:
   SaharaBase:
@@ -60,6 +66,7 @@ outputs:
         map_merge:
           - get_attr: [SaharaBase, role_data, config_settings]
           - sahara::port: {get_param: [EndpointMap, SaharaInternal, port]}
+            sahara::policy::policies: {get_param: SaharaApiPolicies}
             sahara::service::api::api_workers: {get_param: SaharaWorkers}
             # NOTE: bind IP is found in Heat replacing the network name with the local node IP
             # for the given network; replacement examples (eg. for internal_api):
diff --git a/puppet/services/securetty.yaml b/puppet/services/securetty.yaml
new file mode 100644 (file)
index 0000000..6d32fe8
--- /dev/null
@@ -0,0 +1,36 @@
+heat_template_version: ocata
+
+description: >
+  Configure securetty values
+
+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
+  TtyValues:
+    default: {}
+    description: Configures console values in securetty
+    type: json
+    constraints:
+      - length: { min: 1}
+
+outputs:
+  role_data:
+    description: Console data for the securetty
+    value:
+      service_name: securetty
+      config_settings:
+        tripleo::profile::base::securetty::tty_list: {get_param: TtyValues}
+      step_config: |
+        include ::tripleo::profile::base::securetty
index a2286d1..9820b43 100644 (file)
@@ -90,14 +90,11 @@ outputs:
         # fluentd user.
         yaql:
           expression: >
-            set($.data.groups.flatten()).where($)
+            set(($.data.default + $.data.extra + $.data.role_data.where($ != null).select($.get('logging_groups'))).flatten()).where($)
           data:
-            groups:
-              - [{get_attr: [LoggingConfiguration, LoggingDefaultGroups]}]
-              - yaql:
-                  expression: list($.data.role_data.where($ != null).select($.get('logging_groups')).where($ != null))
-                  data: {role_data: {get_attr: [ServiceChain, role_data]}}
-              - [{get_attr: [LoggingConfiguration, LoggingExtraGroups]}]
+            default: {get_attr: [LoggingConfiguration, LoggingDefaultGroups]}
+            extra: {get_attr: [LoggingConfiguration, LoggingExtraGroups]}
+            role_data: {get_attr: [ServiceChain, role_data]}
       config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
       global_config_settings:
         map_merge:
index 0c3cc1e..0ecc942 100644 (file)
@@ -63,10 +63,14 @@ parameters:
         Rabbit client subscriber parameter to specify
         an SSL connection to the RabbitMQ host.
     type: string
+  EnableInternalTLS:
+    type: boolean
+    default: false
 
 conditions:
 
   ceilometer_pipeline_enabled: {equals : [{get_param: SwiftCeilometerPipelineEnabled}, True]}
+  use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
 
 resources:
   SwiftBase:
@@ -76,6 +80,14 @@ resources:
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
 
+  TLSProxyBase:
+    type: OS::TripleO::Services::TLSProxyBase
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      EnableInternalTLS: {get_param: EnableInternalTLS}
+
 outputs:
   role_data:
     description: Role data for the Swift proxy service.
@@ -85,7 +97,7 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [SwiftBase, role_data, config_settings]
-
+          - get_attr: [TLSProxyBase, role_data, config_settings]
           - swift::proxy::authtoken::auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri]}
             swift::proxy::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
             swift::proxy::authtoken::password: {get_param: SwiftPassword}
@@ -146,7 +158,22 @@ outputs:
             # internal_api -> IP
             # internal_api_uri -> [IP]
             # internal_api_subnet - > IP/CIDR
-            swift::proxy::proxy_local_net_ip: {get_param: [ServiceNetMap, SwiftProxyNetwork]}
+            tripleo::profile::base::swift::proxy::tls_proxy_bind_ip:
+              get_param: [ServiceNetMap, SwiftProxyNetwork]
+            tripleo::profile::base::swift::proxy::tls_proxy_fqdn:
+              str_replace:
+                template:
+                  "%{hiera('fqdn_$NETWORK')}"
+                params:
+                  $NETWORK: {get_param: [ServiceNetMap, SwiftProxyNetwork]}
+            tripleo::profile::base::swift::proxy::tls_proxy_port:
+              get_param: [EndpointMap, SwiftInternal, port]
+            swift::proxy::port: {get_param: [EndpointMap, SwiftInternal, port]}
+            swift::proxy::proxy_local_net_ip:
+              if:
+              - use_tls_proxy
+              - 'localhost'
+              - {get_param: [ServiceNetMap, SwiftProxyNetwork]}
       step_config: |
         include ::tripleo::profile::base::swift::proxy
       service_config_settings:
@@ -169,3 +196,5 @@ outputs:
         - name: Stop swift_proxy service
           tags: step1
           service: name=openstack-swift-proxy state=stopped
+      metadata_settings:
+        get_attr: [TLSProxyBase, role_data, metadata_settings]
index 2e3c818..f62d5e1 100644 (file)
@@ -42,6 +42,14 @@ parameters:
     default: true
     description: 'Use a local directory for Swift storage services when building rings'
     type: boolean
+  SwiftRingGetTempurl:
+    default: ''
+    description: A temporary Swift URL to download rings from.
+    type: string
+  SwiftRingPutTempurl:
+    default: ''
+    description: A temporary Swift URL to upload rings to.
+    type: string
 
 conditions:
   swift_use_local_dir:
@@ -59,6 +67,8 @@ outputs:
     value:
       service_name: swift_ringbuilder
       config_settings:
+        tripleo::profile::base::swift::ringbuilder::swift_ring_get_tempurl: {get_param: SwiftRingGetTempurl}
+        tripleo::profile::base::swift::ringbuilder::swift_ring_put_tempurl: {get_param: SwiftRingPutTempurl}
         tripleo::profile::base::swift::ringbuilder::build_ring: {get_param: SwiftRingBuild}
         tripleo::profile::base::swift::ringbuilder::replicas: {get_param: SwiftReplicas}
         tripleo::profile::base::swift::ringbuilder::part_power: {get_param: SwiftPartPower}
index a4c139b..c14e061 100644 (file)
@@ -47,6 +47,12 @@ parameters:
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  TackerPolicies:
+    description: |
+      A hash of policies to configure for Tacker.
+      e.g. { tacker-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 outputs:
   role_data:
@@ -87,10 +93,12 @@ outputs:
         tacker::db::mysql::allowed_hosts:
           - '%'
           - {get_param: [EndpointMap, MysqlInternal, host_nobrackets]}
+        tacker::policy::policies: {get_param: TackerPolicies}
 
       service_config_settings:
         keystone:
           tacker::keystone::auth::tenant: 'service'
+          tacker::keystone::auth::region: {get_param: KeystoneRegion}
           tacker::keystone::auth::password: {get_param: TackerPassword}
           tacker::keystone::auth::public_url: {get_param: [EndpointMap, TackerPublic, uri]}
           tacker::keystone::auth::internal_url: {get_param: [EndpointMap, TackerInternal, uri]}
index 67e14d9..ff2b067 100644 (file)
@@ -37,3 +37,9 @@ outputs:
         tripleo::firewall::purge_firewall_rules: {get_param: PurgeFirewallRules}
       step_config: |
         include ::tripleo::firewall
+      upgrade_tasks:
+        - name: blank ipv6 rule before activating ipv6 firewall.
+          tags: step3
+          shell: cat /etc/sysconfig/ip6tables > /etc/sysconfig/ip6tables.n-o-upgrade; cat</dev/null>/etc/sysconfig/ip6tables
+          args:
+            creates: /etc/sysconfig/ip6tables.n-o-upgrade
index a320f69..33769d0 100644 (file)
@@ -30,6 +30,12 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  ZaqarPolicies:
+    description: |
+      A hash of policies to configure for Zaqar.
+      e.g. { zaqar-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    default: {}
+    type: json
 
 
 outputs:
@@ -38,6 +44,7 @@ outputs:
     value:
       service_name: zaqar
       config_settings:
+        zaqar::policy::policies: {get_param: ZaqarPolicies}
         zaqar::keystone::authtoken::password: {get_param: ZaqarPassword}
         zaqar::keystone::authtoken::project_name: 'service'
         zaqar::keystone::authtoken::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
diff --git a/releasenotes/notes/add-ceilometer-agent-ipmi-2c86726d0373d354.yaml b/releasenotes/notes/add-ceilometer-agent-ipmi-2c86726d0373d354.yaml
new file mode 100644 (file)
index 0000000..d1f7340
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support to configure Ceilometer Agent Ipmi profiles.
diff --git a/releasenotes/notes/add-ipv6-diable-options-9aaee219bb87ac6a.yaml b/releasenotes/notes/add-ipv6-diable-options-9aaee219bb87ac6a.yaml
new file mode 100644 (file)
index 0000000..8b57f58
--- /dev/null
@@ -0,0 +1,7 @@
+---
+security:
+  - |
+    Add IPv6 disable option and make it configurable for user to disable IPv6
+    when it's not used, this will descrease the risk of ipv6 attack.
+    Both net.ipv6.conf.default.disable_ipv6 & net.ipv6.conf.all.disable_ipv6
+    will be explicitly set to the default value (0) which is enabled.
diff --git a/releasenotes/notes/add-l2gw-api-support-2206d3d14f409088.yaml b/releasenotes/notes/add-l2gw-api-support-2206d3d14f409088.yaml
new file mode 100644 (file)
index 0000000..8183532
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for L2 Gateway Neutron service plugin
diff --git a/releasenotes/notes/add-ldap-backend-0bda702fb0aa24bf.yaml b/releasenotes/notes/add-ldap-backend-0bda702fb0aa24bf.yaml
new file mode 100644 (file)
index 0000000..19452f2
--- /dev/null
@@ -0,0 +1,5 @@
+---
+features:
+  - Add capabilities to configure LDAP backends as for keystone domains.
+    This can be done by using the KeystoneLDAPDomainEnable and
+    KeystoneLDAPBackendConfigs parameters.
diff --git a/releasenotes/notes/add-qdr-99a27dffef42c13e.yaml b/releasenotes/notes/add-qdr-99a27dffef42c13e.yaml
new file mode 100644 (file)
index 0000000..163536d
--- /dev/null
@@ -0,0 +1,8 @@
+---
+features:
+  - Introduce the ability to deploy the qpid-dispatch-router (Qdr) for
+    the oslo.messaging AMQP 1.0 driver backend. The Qdr provides
+    direct messaging (e.g. brokerless) communications for
+    oslo.messaging services. To facilitate simple use for evaluation
+    in an overcloud deployment, the Qdr aliases the RabbitMQ service
+    to provide the messaging backend.
diff --git a/releasenotes/notes/add_db_sync_timeout-c9b2f401cca0b37d.yaml b/releasenotes/notes/add_db_sync_timeout-c9b2f401cca0b37d.yaml
new file mode 100644 (file)
index 0000000..ecf3593
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Adds DatabaseSyncTimeout parameter to Nova and Neutron templates.
diff --git a/releasenotes/notes/api-policy-4ca739519537f6f4.yaml b/releasenotes/notes/api-policy-4ca739519537f6f4.yaml
new file mode 100644 (file)
index 0000000..54beb30
--- /dev/null
@@ -0,0 +1,13 @@
+---
+features:
+  - |
+    TripleO is now able to configure role-based access API policies with new
+    parameters for each API service.
+    For example, Nova API service has now NovaApiPolicies and the value
+    could be { nova-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
+    It will configure /etc/nova/policy.json file and configure context_is_admin
+    to true. Puppet will take care of this configuration and API services are
+    restarted when the file is touched.
+    We're also adding augeas resource to the list of Puppet providers that
+    container deployments grab in the catalog to generate configurations, so
+    this feature can be used when deploying TripleO in containers.
diff --git a/releasenotes/notes/big-switch-agent-4c743a2112251234.yaml b/releasenotes/notes/big-switch-agent-4c743a2112251234.yaml
new file mode 100644 (file)
index 0000000..49ede20
--- /dev/null
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Updated bigswitch environment file to include the bigswitch agent
+    installation and correct support for the restproxy configuration.
diff --git a/releasenotes/notes/deployed-server-firewall-purge-9d9fe73faf925056.yaml b/releasenotes/notes/deployed-server-firewall-purge-9d9fe73faf925056.yaml
new file mode 100644 (file)
index 0000000..298a8ec
--- /dev/null
@@ -0,0 +1,6 @@
+---
+fixes:
+  - The initial firewall will now be purged by the deployed-server bootstrap
+    scripts. This is needed to prevent possible issues with bootstrapping the
+    initial Pacemaker cluster. See
+    https://bugs.launchpad.net/tripleo/+bug/1679234
diff --git a/releasenotes/notes/disable-ceilo-api-dfe5d0947563bbe0.yaml b/releasenotes/notes/disable-ceilo-api-dfe5d0947563bbe0.yaml
new file mode 100644 (file)
index 0000000..2661f7c
--- /dev/null
@@ -0,0 +1,4 @@
+---
+deprecations:
+  - Deprecate and disable ceilometer Api by default. This can be enabled
+    by passing in an env file to deploy command.
diff --git a/releasenotes/notes/disable-core-dump-for-setuid-programs-e83a2a5da908b9c3.yaml b/releasenotes/notes/disable-core-dump-for-setuid-programs-e83a2a5da908b9c3.yaml
new file mode 100644 (file)
index 0000000..3168a54
--- /dev/null
@@ -0,0 +1,12 @@
+---
+upgrade:
+  - |
+    The fs.suid_dumpable kernel parameter is now explicitly set to 0 to prevent
+    exposing sensitive data through core dumps of processes with elevated
+    permissions. Deployments that set or depend on non-zero values for
+    fs.suid_dumpable may be affected by upgrading.
+security:
+  - |
+    Explicitly disable core dump for setuid programs by setting
+    fs.suid_dumpable = 0, this will descrease the risk of unauthorized access
+    of core dump file generated by setuid program.
diff --git a/releasenotes/notes/disable-kernel-parameter-for-icmp-redirects-f325f91d71b58b5f.yaml b/releasenotes/notes/disable-kernel-parameter-for-icmp-redirects-f325f91d71b58b5f.yaml
new file mode 100644 (file)
index 0000000..0f226a8
--- /dev/null
@@ -0,0 +1,19 @@
+---
+upgrade:
+  - The net.ipv4.conf.default.send_redirects & net.ipv4.conf.all.send_redirects
+    are now set to 0 to prevent a compromised host from sending invalid ICMP
+    redirects to other router devices.
+  - The net.ipv4.conf.default.accept_redirects,
+    net.ipv6.conf.default.accept_redirects & net.ipv6.conf.all.accept_redirects
+    are now set to 0 to prevent forged ICMP packet from altering host's routing
+    tables.
+  - The net.ipv4.conf.default.secure_redirects &
+    net.ipv4.conf.all.secure_redirects are now set to 0 to disable acceptance
+    of secure ICMP redirected packets.
+security:
+  - Invalide ICMP redirects may corrupt routing and have users access a system
+    set up by the attacker as opposed to a valid system.
+  - Routing tables may be altered by bogus ICMP redirect messages and send
+    packets to incorrect networks.
+  - Secure ICMP redirects are the same as ICMP redirects, except they come from
+    gateways listed on the default gateway list.
diff --git a/releasenotes/notes/docker-service-all-roles-5c22a018caeafcf0.yaml b/releasenotes/notes/docker-service-all-roles-5c22a018caeafcf0.yaml
new file mode 100644 (file)
index 0000000..734db08
--- /dev/null
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    When deploying with environments/docker.yaml, the docker service
+    is now deployed on all predefined roles.
diff --git a/releasenotes/notes/enable-logging-suspicious-packets-d5545586f917d2ca.yaml b/releasenotes/notes/enable-logging-suspicious-packets-d5545586f917d2ca.yaml
new file mode 100644 (file)
index 0000000..bb2543f
--- /dev/null
@@ -0,0 +1,9 @@
+---
+upgrade:
+  - |
+    The net.ipv4.conf.default.log_martians & net.ipv4.conf.all.log_martians are
+    now set to 1 to enable logging of suspicious packets.
+security:
+  - |
+    Logging of suspicious packets allows an administrator to investigate the
+    spoofed packets sent to their system.
diff --git a/releasenotes/notes/enable-support-for-external-swift-proxy-941917f8bcc63a5d.yaml b/releasenotes/notes/enable-support-for-external-swift-proxy-941917f8bcc63a5d.yaml
new file mode 100644 (file)
index 0000000..83b05bb
--- /dev/null
@@ -0,0 +1,5 @@
+---
+features:
+  - Added support for external swift proxy. Users may need to
+    configure endpoints pointing to swift proxy service
+    already available.
diff --git a/releasenotes/notes/fix-cinder-nfs-share-usage-0968f88eff7ffb99.yaml b/releasenotes/notes/fix-cinder-nfs-share-usage-0968f88eff7ffb99.yaml
new file mode 100644 (file)
index 0000000..682171c
--- /dev/null
@@ -0,0 +1,6 @@
+---
+fixes:
+  - Fixes an issue when using the CinderNfsServers
+    parameter_defaults setting.  It now works using a
+    single share as well as a comma-separated list of
+    shares.
diff --git a/releasenotes/notes/fix-neutron-dpdk-firewall-436aee39a0d7ed65.yaml b/releasenotes/notes/fix-neutron-dpdk-firewall-436aee39a0d7ed65.yaml
new file mode 100644 (file)
index 0000000..bb18aed
--- /dev/null
@@ -0,0 +1,5 @@
+---
+fixes:
+  - Fixes firewall rules from neutron OVS agent not being
+    inherited correctly and applied in neutron OVS DPDK
+    template.
diff --git a/releasenotes/notes/fix-odl-provider-mapping-hiera-5b3472184be490e2.yaml b/releasenotes/notes/fix-odl-provider-mapping-hiera-5b3472184be490e2.yaml
new file mode 100644 (file)
index 0000000..79cea05
--- /dev/null
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Fixes OpenDaylightProviderMappings parsing on a
+    comma delimited list.
diff --git a/releasenotes/notes/get-occ-config-local-connector-5bbec3f591a9f311.yaml b/releasenotes/notes/get-occ-config-local-connector-5bbec3f591a9f311.yaml
new file mode 100644 (file)
index 0000000..ef8877a
--- /dev/null
@@ -0,0 +1,10 @@
+---
+fixes:
+  - The deployed-server Heat agent configuration script,
+    get-occ-config.sh, is now updated to configure the
+    local data source for os-collect-config instead of
+    configuring /etc/os-collect-config.conf directly. Doing
+    so means that the configuration template for os-apply-config
+    no longer has to be deleted as the file will be rendered
+    correctly with the right data. See
+    https://bugs.launchpad.net/tripleo/+bug/1679705
diff --git a/releasenotes/notes/install-openstack-selinux-d14b2e26feb6d04e.yaml b/releasenotes/notes/install-openstack-selinux-d14b2e26feb6d04e.yaml
new file mode 100644 (file)
index 0000000..d2b2eb9
--- /dev/null
@@ -0,0 +1,6 @@
+---
+fixes:
+  - openstack-selinux is now installed by the deployed-server
+    bootstrap scripts. Previously, it was not installed, so
+    if SELinux was set to enforcing, all OpenStack policy
+    was missing.
diff --git a/releasenotes/notes/ironic-neutron-integration-76c4f9e0d10785e4.yaml b/releasenotes/notes/ironic-neutron-integration-76c4f9e0d10785e4.yaml
new file mode 100644 (file)
index 0000000..dd99acc
--- /dev/null
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    Allow setting the Ironic provisioning network UUID or name via new
+    ``IronicProvisioningNetwork`` configuration.
+  - |
+    Enable support for "neutron" Ironic networking plugin, enabling advanced
+    integration with Neutron, such as VLAN/VXLAN network support, bonding and
+    security groups.
diff --git a/releasenotes/notes/leave-satellite-repo-enabled-8b60528bd5450c7b.yaml b/releasenotes/notes/leave-satellite-repo-enabled-8b60528bd5450c7b.yaml
new file mode 100644 (file)
index 0000000..c327265
--- /dev/null
@@ -0,0 +1,6 @@
+---
+fixes:
+  - |
+    Previously the RHEL registration script disabled the satellite repo after
+    installing the necessary packages from it.  This makes it awkward to
+    update those packages later, so the repo will no longer be disabled.
diff --git a/releasenotes/notes/make-panko-default-8d0e824fc91cef56.yaml b/releasenotes/notes/make-panko-default-8d0e824fc91cef56.yaml
new file mode 100644 (file)
index 0000000..d062426
--- /dev/null
@@ -0,0 +1,4 @@
+---
+fixes:
+  - Since panko is enabled by default, include it the default dispatcher
+    for ceilometer events.
diff --git a/releasenotes/notes/ovn-fcd4b0168e6745a8.yaml b/releasenotes/notes/ovn-fcd4b0168e6745a8.yaml
new file mode 100644 (file)
index 0000000..f5ccec0
--- /dev/null
@@ -0,0 +1,6 @@
+---
+features:
+  - Support configuring NeutronBridgeMappings
+  - Set force_config_drive to true as OVN doesn't support metadata service
+  - Add necessary iptables rules to allow Geneve traffic and ovsdb-server
+    traffic for Northbound and Southbound databases.
diff --git a/releasenotes/notes/ovs-2.5-2.6-composable-upgrades-workaround-73f4e56127c910b4.yaml b/releasenotes/notes/ovs-2.5-2.6-composable-upgrades-workaround-73f4e56127c910b4.yaml
new file mode 100644 (file)
index 0000000..8c21082
--- /dev/null
@@ -0,0 +1,12 @@
+---
+issues:
+  - During the ovs upgrade for 2.5 to 2.6 we need to workaround the classic
+    yum update command by handling the upgrade of the package separately to not
+    loose the IPs and the connectivity on the nodes. The workaround is
+    discussed here https://bugs.launchpad.net/tripleo/+bug/1669714
+upgrade:
+  - The upgrade from openvswitch 2.5 to 2.6 is handled gracefully and there should
+    be no user impact in particular no restart of the openvswitch service. For more
+    information please see the related bug above which also links the relevant code reviews.
+    The workaround (transparent to the user/doesn't require any input) is to download the OVS
+    package and install with --nopostun and --notriggerun options provided by the rpm binary.
diff --git a/releasenotes/notes/replace-references-to-old-ctlplane-0df7f2ae8910559c.yaml b/releasenotes/notes/replace-references-to-old-ctlplane-0df7f2ae8910559c.yaml
new file mode 100644 (file)
index 0000000..09d3be0
--- /dev/null
@@ -0,0 +1,20 @@
+---
+upgrade:
+  - |
+    The default network for the ctlplane changed from 192.0.2.0/24 to
+    192.168.24.0/24. All references to the ctlplane network in the templates
+    have been updated to reflect this change. When upgrading from a previous
+    release, if the default network was used for the ctlplane (192.0.2.0/24),
+    then it is necessary to provide as input, via environment file, the correct
+    setting for all the parameters that previously defaulted to 192.0.2.x and
+    now default to 192.168.24.x; there is an environment file which could be
+    used on upgrade `environments/updates/update-from-192_0_2-subnet.yaml` to
+    cover a simple scenario but it won't be enough for scenarios using an
+    external load balancer, Contrail or Cisto N1KV. Follows a list of params to
+    be provided on upgrade.
+    From contrail-net.yaml: EC2MetadataIp, ControlPlaneDefaultRoute
+    From external-loadbalancer-vip-v6.yaml: ControlFixedIPs
+    From external-loadbalancer-vip.yaml: ControlFixedIPs
+    From network-environment.yaml: EC2MetadataIp, ControlPlaneDefaultRoute
+    From neutron-ml2-cisco-n1kv.yaml: N1000vVSMIP, N1000vMgmtGatewayIP
+    From contrail-vrouter.yaml: ContrailVrouterGateway
diff --git a/releasenotes/notes/restrict-access-to-kernel-message-buffer-809160674b92a073.yaml b/releasenotes/notes/restrict-access-to-kernel-message-buffer-809160674b92a073.yaml
new file mode 100644 (file)
index 0000000..c24e892
--- /dev/null
@@ -0,0 +1,11 @@
+---
+upgrade:
+  - |
+    The kernel.dmesg_restrict is now set to 1 to prevent exposure of sensitive
+    kernel address information with unprivileged access. Deployments that set
+    or depend on values other than 1 for kernel.dmesg_restrict may be affected
+    by upgrading.
+security:
+  - |
+    Kernel syslog contains sensitive kernel address information, setting
+    kernel.dmesg_restrict to avoid unprivileged access to this information.
diff --git a/releasenotes/notes/restrict-mongodb-memory-de7bf6754d7234d9.yaml b/releasenotes/notes/restrict-mongodb-memory-de7bf6754d7234d9.yaml
new file mode 100644 (file)
index 0000000..86622bc
--- /dev/null
@@ -0,0 +1,3 @@
+---
+fixes:
+  - Add knobs to limit memory comsumed by mongodb with systemd
diff --git a/releasenotes/notes/role-tags-16ac2e9e8fcab218.yaml b/releasenotes/notes/role-tags-16ac2e9e8fcab218.yaml
new file mode 100644 (file)
index 0000000..dadbfa4
--- /dev/null
@@ -0,0 +1,18 @@
+---
+features:
+  - |
+    Adds tags to roles that allow an operator to specify custom tags to use
+    when trying to find functionality available from a role. Currently a role
+    with both the 'primary' and 'controller' tag is consider to be the primary
+    role.  Historically the role named 'Controller' was the 'primary' role and
+    this primary designation is used to determine items like memcache ip
+    addresses. If no roles have the both the 'primary' and 'controller' tags,
+    the first role specified in the roles_data.yaml is used as the primary
+    role.
+upgrade:
+  - |
+    If using custom roles data, the logic was changed to leverage the first
+    role listed in the roles_data.yaml file to be the primary role. This can
+    be worked around by adding the 'primary' and 'controller' tags to the
+    custom controller role in your roles_data.yaml to ensure that the defined
+    custom controller role is still considered the primary role.
diff --git a/releasenotes/notes/set-ceilometer-auth-flag-382f68ddb2cbcb6b.yaml b/releasenotes/notes/set-ceilometer-auth-flag-382f68ddb2cbcb6b.yaml
new file mode 100644 (file)
index 0000000..07407f2
--- /dev/null
@@ -0,0 +1,5 @@
+---
+fixes:
+  - We need ceilometer user in cases where ceilometer API is disabled.
+    This is to ensure other ceilometer services can still authenticate
+    with keystone.
diff --git a/releasenotes/notes/sriov-pci-passthrough-8f28719b889bdaf7.yaml b/releasenotes/notes/sriov-pci-passthrough-8f28719b889bdaf7.yaml
new file mode 100644 (file)
index 0000000..20146b0
--- /dev/null
@@ -0,0 +1,4 @@
+---
+fixes:
+  - The ``pci_passthrough`` hiera value should be passed as a string
+    (`bug 1675036 <https://bugs.launchpad.net/tripleo/+bug/1675036>`__).
diff --git a/releasenotes/notes/token-flush-twice-a-day-d4b00a2953a6b383.yaml b/releasenotes/notes/token-flush-twice-a-day-d4b00a2953a6b383.yaml
new file mode 100644 (file)
index 0000000..70051f6
--- /dev/null
@@ -0,0 +1,7 @@
+---
+fixes:
+  - The token flush cron job has been modified to run hourly instead of once
+    a day. This is because this was causing issues with larger deployments, as
+    the operation would take too long and sometimes even fail because of the
+    transaction being so large. Note that this only affects people using the
+    UUID token provider.
diff --git a/releasenotes/notes/update-on-rhel-registration-afbef3ead983b08f.yaml b/releasenotes/notes/update-on-rhel-registration-afbef3ead983b08f.yaml
new file mode 100644 (file)
index 0000000..ad1f39c
--- /dev/null
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds a new boolean parameter for RHEL Registration called
+    'UpdateOnRHELRegistration' that when enabled will trigger a yum update
+    on the node after the registration process completes.
diff --git a/releasenotes/notes/update-plan-environment-4e164b57a801e2cb.yaml b/releasenotes/notes/update-plan-environment-4e164b57a801e2cb.yaml
new file mode 100644 (file)
index 0000000..29d32cb
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Add name and description fields to plan-environment.yaml
index 8da995b..ec158ce 100644 (file)
@@ -52,9 +52,9 @@ copyright = u'2017, TripleO Developers'
 # built documents.
 #
 # The full version, including alpha/beta/rc tags.
-release = '6.0.0.0b3'
+release = '7.0.0.0b1'
 # The short X.Y version.
-version = '6.0.0'
+version = '7.0.0'
 
 # The full version, including alpha/beta/rc tags.
 
index 057aa28..df8a71f 100644 (file)
@@ -1,6 +1,6 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-pbr>=1.8 # Apache-2.0
+pbr>=2.0.0 # Apache-2.0
 Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause)
 six>=1.9.0 # MIT
index 130451f..8d3b507 100644 (file)
 # ServicesDefault: (list) optional default list of services to be deployed
 # on the role, defaults to an empty list. Sets the default for the
 # {{role.name}}Services parameter in overcloud.yaml
-
-- name: Controller # the 'primary' role goes first
+#
+# tags: (list) list of tags used by other parts of the deployment process to
+# find the role for a specific type of functionality. Currently a role
+# with both 'primary' and 'controller' is used as the primary role for the
+# deployment process. If no roles have have 'primary' and 'controller', the
+# first role in this file is used as the primary role.
+#
+- name: Controller
   CountDefault: 1
+  tags:
+    - primary
+    - controller
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CertmongerUser
     - OS::TripleO::Services::CinderBackup
     - OS::TripleO::Services::CinderScheduler
     - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::CinderBackendDellPs
+    - OS::TripleO::Services::CinderBackendDellSc
+    - OS::TripleO::Services::CinderBackendNetApp
+    - OS::TripleO::Services::CinderBackendScaleIO
     - OS::TripleO::Services::Congress
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Keystone
@@ -53,8 +66,9 @@
     - OS::TripleO::Services::HeatEngine
     - OS::TripleO::Services::MySQL
     - OS::TripleO::Services::MySQLClient
-    - OS::TripleO::Services::NeutronBgpvpnApi
+    - OS::TripleO::Services::NeutronBgpVpnApi
     - OS::TripleO::Services::NeutronDhcpAgent
+    - OS::TripleO::Services::NeutronL2gwApi
     - OS::TripleO::Services::NeutronL3Agent
     - OS::TripleO::Services::NeutronMetadataAgent
     - OS::TripleO::Services::NeutronApi
     - OS::TripleO::Services::Ec2Api
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::SwiftProxy
+    - OS::TripleO::Services::ExternalSwiftProxy
     - OS::TripleO::Services::SwiftStorage
     - OS::TripleO::Services::SwiftRingBuilder
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::Timezone
-    - OS::TripleO::Services::CeilometerApi
     - OS::TripleO::Services::CeilometerCollector
     - OS::TripleO::Services::CeilometerExpirer
     - OS::TripleO::Services::CeilometerAgentCentral
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::NovaCompute
     - OS::TripleO::Services::NovaLibvirt
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::Vpp
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::Docker
 
 - name: BlockStorage
   ServicesDefault:
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::SensuClient
     - OS::TripleO::Services::AuditD
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::Docker
 
 - name: ObjectStorage
   disable_upgrade_deployment: True
     - OS::TripleO::Services::SwiftRingBuilder
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::AuditD
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::Docker
 
 - name: CephStorage
   ServicesDefault:
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::Snmp
     - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Securetty
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::AuditD
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::Docker
index 8e83071..df2e196 100644 (file)
@@ -1,6 +1,9 @@
-- name: Undercloud # the 'primary' role goes first
+- name: Undercloud
   CountDefault: 1
   disable_constraints: True
+  tags:
+    - primary
+    - controller
   ServicesDefault:
     - OS::TripleO::Services::Ntp
     - OS::TripleO::Services::MySQL
index f456b31..b3109a0 100755 (executable)
@@ -13,14 +13,16 @@ write_entries() {
 
     if grep -q "^# HEAT_HOSTS_START" "$file"; then
         temp=$(mktemp)
-        awk -v v="$entries" '/^# HEAT_HOSTS_START/ {
-            print $0
-            print v
-            f=1
-            }f &&!/^# HEAT_HOSTS_END$/{next}/^# HEAT_HOSTS_END$/{f=0}!f' "$file" > "$temp"
-            echo "INFO: Updating hosts file $file, check below for changes"
-            diff "$file" "$temp" || true
-            cat "$temp" > "$file"
+        (
+        sed '/^# HEAT_HOSTS_START/,$d' "$file"
+        echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n"
+        echo "$entries"
+        echo -ne "# HEAT_HOSTS_END\n\n"
+        sed '1,/^# HEAT_HOSTS_END/d' "$file"
+        ) > "$temp"
+        echo "INFO: Updating hosts file $file, check below for changes"
+        diff "$file" "$temp" || true
+        cat "$temp" > "$file"
     else
         echo -ne "\n# HEAT_HOSTS_START - Do not edit manually within this section!\n" >> "$file"
         echo "$entries" >> "$file"
index 782bb21..566d844 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -25,5 +25,5 @@ except ImportError:
     pass
 
 setuptools.setup(
-    setup_requires=['pbr>=1.8'],
+    setup_requires=['pbr>=2.0.0'],
     pbr=True)
index 5ff6f13..5669a8a 100755 (executable)
@@ -212,8 +212,10 @@ def validate(filename):
                   % filename)
             return 1
 
+        # qdr aliases rabbitmq service to provide alternative messaging backend
         if (filename.startswith('./puppet/services/') and
-                filename != './puppet/services/services.yaml'):
+                filename not in ['./puppet/services/services.yaml',
+                                 './puppet/services/qdr.yaml']):
             retval = validate_service(filename, tpl)
 
         if (filename.startswith('./docker/services/') and