Introduce role-specific NodeUserData, use for docker
authorSteve Baker <sbaker@redhat.com>
Thu, 8 Dec 2016 01:44:35 +0000 (14:44 +1300)
committerFlavio Percoco <flaper87@gmail.com>
Mon, 19 Dec 2016 17:13:57 +0000 (18:13 +0100)
Currently when the docker environments are invoked, every node has the
boot script run which replaces os-collect-config with the heat-agents
container. This should only be happening on Compute nodes currently,
and each role will be converted to heat-agents one at a time.

This change implements a role-specific NodeUserData resource and uses
that mechanism to run docker/firstboot/install_docker_agents.yaml only
on Compute nodes.

Change-Id: Id81811dbcaf0e661c3980aa25f3ca80db5ef0954

environments/docker.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/blockstorage-role.yaml
puppet/cephstorage-role.yaml
puppet/compute-role.yaml
puppet/controller-role.yaml
puppet/objectstorage-role.yaml
puppet/role.role.j2.yaml

index 0755c61..9b0f65f 100644 (file)
@@ -1,6 +1,6 @@
 resource_registry:
   # Docker container with heat agents for containerized compute node.
-  OS::TripleO::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
+  OS::TripleO::Compute::NodeUserData: ../docker/firstboot/install_docker_agents.yaml
   OS::TripleO::Services::NovaLibvirt: ../docker/services/nova-libvirt.yaml
   OS::TripleO::Services::ComputeNeutronOvsAgent: ../docker/services/neutron-ovs-agent.yaml
   OS::TripleO::Services::NovaCompute: ../docker/services/nova-compute.yaml
index ebbeef6..a267ac6 100644 (file)
@@ -49,10 +49,14 @@ resource_registry:
 
   # Hooks for operator extra config
   # NodeUserData == Cloud-init additional user-data, e.g cloud-config
+  # role::NodeUserData == Role specific cloud-init additional user-data
   # ControllerExtraConfigPre == Controller configuration pre service deployment
   # NodeExtraConfig == All nodes configuration pre service deployment
   # NodeExtraConfigPost == All nodes configuration post service deployment
   OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
+{% for role in roles %}
+  OS::TripleO::{{role.name}}::NodeUserData: firstboot/userdata_default.yaml
+{% endfor %}
   OS::TripleO::NodeTLSCAData: OS::Heat::None
   OS::TripleO::NodeTLSData: OS::Heat::None
   OS::TripleO::NodeExtraConfig: puppet/extraconfig/pre_deploy/default.yaml
index 00f586c..e788e79 100644 (file)
@@ -142,6 +142,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -153,6 +155,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::BlockStorage::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::BlockStorage::Ports::ExternalPort
     properties:
index 82cc013..1d6cbae 100644 (file)
@@ -148,6 +148,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -159,6 +161,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::CephStorage::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::CephStorage::Ports::ExternalPort
     properties:
index 30a6483..2eb287c 100644 (file)
@@ -162,6 +162,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -173,6 +175,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::Compute::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::Compute::Ports::ExternalPort
     properties:
index a60cc94..c286f26 100644 (file)
@@ -181,6 +181,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -192,6 +194,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::Controller::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::Controller::Ports::ExternalPort
     properties:
index 49b2704..61be37f 100644 (file)
@@ -142,6 +142,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -153,6 +155,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::ObjectStorage::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::SwiftStorage::Ports::ExternalPort
     properties:
index d0eeed1..ac31a9d 100644 (file)
@@ -160,6 +160,8 @@ resources:
         type: multipart
       - config: {get_resource: NodeUserData}
         type: multipart
+      - config: {get_resource: RoleUserData}
+        type: multipart
 
   # Creates the "heat-admin" user if configured via the environment
   # Should return a OS::Heat::MultipartMime reference via OS::stack_id
@@ -171,6 +173,11 @@ resources:
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  # For optional operator role-specific userdata
+  # Should return a OS::Heat::MultipartMime reference via OS::stack_id
+  RoleUserData:
+    type: OS::TripleO::{{role}}::NodeUserData
+
   ExternalPort:
     type: OS::TripleO::{{role}}::Ports::ExternalPort
     properties: