Merge "Add NodeAdminUserData interface for "heat-admin" user"
[apex-tripleo-heat-templates.git] / puppet / swift-storage-puppet.yaml
index 7f4e2b0..5c4ff5a 100644 (file)
@@ -62,6 +62,21 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  Hostname:
+    type: string
+    default: '' # Defaults to Heat created hostname
+  ExtraConfig:
+    default: {}
+    description: |
+      Additional hiera configuration to inject into the cluster. Note
+      that ObjectStorageExtraConfig takes precedence over ExtraConfig.
+    type: json
+  ObjectStorageExtraConfig:
+    default: {}
+    description: |
+      Role specific additional hiera configuration to inject into the cluster.
+    type: json
+
 
 resources:
 
@@ -74,8 +89,26 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
-      user_data: {get_resource: NodeUserData}
+      user_data: {get_resource: UserData}
+      name: {get_param: Hostname}
+
+  # Combine the NodeAdminUserData and NodeUserData mime archives
+  UserData:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+      - config: {get_resource: NodeAdminUserData}
+        type: multipart
+      - config: {get_resource: NodeUserData}
+        type: multipart
 
+  # Creates the "heat-admin" user if configured via the environment
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  NodeAdminUserData:
+    type: OS::TripleO::NodeAdminUserData
+
+  # For optional operator additional userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
@@ -104,6 +137,7 @@ resources:
   NetIpMap:
     type: OS::TripleO::Network::Ports::NetIpMap
     properties:
+      ControlPlaneIp: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
       StorageIp: {get_attr: [StoragePort, ip_address]}
       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
@@ -122,6 +156,8 @@ resources:
         hiera:
           hierarchy:
             - heat_config_%{::deploy_config_name}
+            - object_extraconfig
+            - extraconfig
             - object
             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
             - all_nodes # provided by allNodesConfig
@@ -130,6 +166,10 @@ resources:
           datafiles:
             common:
               raw_data: {get_file: hieradata/common.yaml}
+            object_extraconfig:
+              mapped_data: {get_param: ObjectStorageExtraConfig}
+            extraconfig:
+              mapped_data: {get_param: ExtraConfig}
             object:
               raw_data: {get_file: hieradata/object.yaml}
               mapped_data: # data supplied directly to this deployment configuration, etc
@@ -146,15 +186,15 @@ resources:
                 tripleo::ringbuilder::build_ring: True
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
-                enable_package_install: {get_input: enable_package_install}
+                tripleo::packages::enable_install: {get_input: enable_package_install}
 
 
   SwiftStorageHieraDeploy:
     type: OS::Heat::StructuredDeployment
+    depends_on: NetworkDeployment
     properties:
       server: {get_resource: SwiftStorage}
       config: {get_resource: SwiftStorageHieraConfig}
-      signal_transport: NO_SIGNAL
       input_values:
         local_ip: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
@@ -188,9 +228,9 @@ outputs:
   hosts_entry:
     value:
       str_replace:
-        template: "IP HOST"
+        template: "IP HOST.localdomain HOST"
         params:
-          IP: {get_attr: [SwiftStorage, networks, ctlplane, 0]}
+          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ObjectStorageHostnameResolveNetwork]}]}
           HOST: {get_attr: [SwiftStorage, name]}
   nova_server_resource:
     description: Heat resource handle for the swift storage server
@@ -215,4 +255,3 @@ outputs:
   config_identifier:
     description: identifier which changes if the node configuration may need re-applying
     value: {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
-