From 46c4ce37173e23a1a5bc68f9f5b0921e6f83be8b Mon Sep 17 00:00:00 2001 From: Clint Byrum Date: Wed, 31 Jul 2013 14:13:36 -0700 Subject: Load local IP using separate post-boot Metadata. Previously we could not feed the IP of an instance into its own Metadata because of circular dependency problems. 0.0.0.0 was used with the heat-localip element to work around this problem. This caused problems though, as heat-localip would edit the source local heat metadata, which would make cfn-hup and/or os-collect-config think that the Metadata had changed, causing it to restart everything every time we query the Metadata, which was about every five minutes. Now we can just query this inert LaunchConfiguration resource to get its' Metadata once it is ready. This resource will only change when legitimate things are changed in the stack, and so we won't restart everything every five minutes anymore. Note that when the native Heat DSL lands, the OS::Heat::SoftwareConfig resource is meant for exactly this purpose. After this is merged we no longer need the heat-localip element. Fixes bug #1202322 Change-Id: Id06323ba43203570eeebfa5b3d03fa56c16c0c10 --- overcloud-source.yaml | 86 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 73 insertions(+), 13 deletions(-) (limited to 'overcloud-source.yaml') diff --git a/overcloud-source.yaml b/overcloud-source.yaml index 88e21f08..cb385ed1 100644 --- a/overcloud-source.yaml +++ b/overcloud-source.yaml @@ -34,6 +34,7 @@ Resources: Properties: AllowedResources: - notcompute + - notcomputeConfig Type: OS::Heat::AccessPolicy ComputeAccessPolicy: Properties: @@ -78,7 +79,11 @@ Resources: Policies: - Ref: AccessPolicy Type: AWS::IAM::User - notcompute: + notcomputeConfig: + Type: AWS::AutoScaling::LaunchConfiguration + Properties: + ImageId: '0' + InstanceType: '0' Metadata: OpenStack::Heat::Stack: {} Openstack::ImageBuilder::Elements: @@ -91,16 +96,22 @@ Resources: cinder: db: mysql://cinder:unset@localhost/cinder volume_size_mb: '5000' - controller-address: 0.0.0.0 + controller-address: + Fn::GetAtt: + - notcompute + - PrivateIp db-password: unset glance: db: mysql://glance:unset@localhost/glance - host: 0.0.0.0 + host: + Fn::GetAtt: + - notcompute + - PrivateIp os-collect-config: cfn: access_key_id: Ref: Key - path: notcompute.Metadata + path: notcomputeConfig.Metadata secret_access_key: Fn::GetAtt: - Key @@ -113,33 +124,71 @@ Resources: admin_user: heat auth_encryption_key: unset___________ db: mysql://heat:unset@localhost/heat - heat_watch_server_url: http://0.0.0.0:8003 - metadata_server_url: http://0.0.0.0:8000 - waitcondition_server_url: http://0.0.0.0:8000/v1/waitcondition + heat_watch_server_url: + Fn::Join: + - '' + - - 'http://' + - Fn::GetAtt: + - notcompute + - PrivateIp + - ':8003' + metadata_server_url: + Fn::Join: + - '' + - - 'http://' + - Fn::GetAtt: + - notcompute + - PrivateIp + - ':8000' + waitcondition_server_url: + Fn::Join: + - '' + - - 'http://' + - Fn::GetAtt: + - notcompute + - PrivateIp + - ':8000/v1/waitcondition' interfaces: control: eth0 keystone: db: mysql://keystone:unset@localhost/keystone - host: 0.0.0.0 + host: + Fn::GetAtt: + - notcompute + - PrivateIp nova: compute_driver: libvirt.LibvirtDriver db: mysql://nova:unset@localhost/nova - host: 0.0.0.0 + host: + Fn::GetAtt: + - notcompute + - PrivateIp metadata-proxy: true neutron: - host: 0.0.0.0 + host: + Fn::GetAtt: + - notcompute + - PrivateIp metadata_proxy_shared_secret: unset ovs: enable_tunneling: 'True' - local_ip: 0.0.0.0 + local_ip: + Fn::GetAtt: + - notcompute + - PrivateIp public_interface: eth0 physical_bridge: br-ex tenant_network_type: gre ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8 rabbit: - host: 0.0.0.0 + host: + Fn::GetAtt: + - notcompute + - PrivateIp password: guest service-password: unset + notcompute: + Type: AWS::EC2::Instance Properties: ImageId: Ref: notcomputeImage @@ -147,4 +196,15 @@ Resources: Ref: InstanceType KeyName: Ref: KeyName - Type: AWS::EC2::Instance + Metadata: + os-collect-config: + cfn: + access_key_id: + Ref: Key + path: notcomputeConfig.Metadata + secret_access_key: + Fn::GetAtt: + - Key + - SecretAccessKey + stack_name: + Ref: AWS::StackName -- cgit 1.2.3-korg