summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClint Byrum <clint@fewbar.com>2013-07-31 14:13:36 -0700
committerClint Byrum <clint@fewbar.com>2013-08-14 20:27:58 -0700
commit46c4ce37173e23a1a5bc68f9f5b0921e6f83be8b (patch)
treeb47dae5d58787e90a9807c9522989014f614b18a
parent99a1e7525015f4e710e3de6e041cffcd264153cf (diff)
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
-rw-r--r--overcloud-source.yaml86
-rw-r--r--undercloud-vm.yaml50
2 files changed, 116 insertions, 20 deletions
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
diff --git a/undercloud-vm.yaml b/undercloud-vm.yaml
index b68c0e57..5fbe51f8 100644
--- a/undercloud-vm.yaml
+++ b/undercloud-vm.yaml
@@ -20,7 +20,7 @@ Resources:
AccessPolicy:
Properties:
AllowedResources:
- - notcompute
+ - notcomputeConfig
Type: OS::Heat::AccessPolicy
Key:
Properties:
@@ -32,13 +32,20 @@ Resources:
Policies:
- Ref: AccessPolicy
Type: AWS::IAM::User
- notcompute:
+ notcomputeConfig:
+ Type: AWS::AutoScaling::LaunchConfiguration
+ Properties:
+ ImageId: '0'
+ InstanceType: foo
Metadata:
OpenStack::Heat::Stack: {}
Openstack::ImageBuilder::Elements: [ boot-stack, heat-cfntools, neutron-network-node ]
admin-password: unset
admin-token: unset
- controller-address: 0.0.0.0
+ controller-address:
+ Fn::GetAtt:
+ - notcompute
+ - PrivateIp
cinder:
db: mysql://cinder:unset@localhost/cinder
volume_size_mb: '5000'
@@ -52,14 +59,29 @@ 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"
os-collect-config:
cfn:
access_key_id:
Ref: Key
- path: Resources.notcompute
+ path: notcomputeConfig.Metadata
secret_access_key:
Fn::GetAtt:
- Key
@@ -110,6 +132,8 @@ Resources:
store_user: unset
store_key: unset
service-password: unset
+ notcompute:
+ Type: AWS::EC2::Instance
Properties:
ImageId:
Ref: Image
@@ -118,3 +142,15 @@ Resources:
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