[openstack][heat-cfn] CFN Signaling with heat

Zane Bitter zbitter at redhat.com
Wed Oct 9 01:29:27 UTC 2019


I'm not an expert on stuff that happens on the guest, but it looks like 
this is the problem:

 > [2019-10-05 17:32:47,724] (heat-config) [ERROR] Skipping group
 > Heat::Ungrouped with no hook script None

You're using the default group that has no handler for it configured. It 
looks like 55_heat_config bails out before attempting to signal a 
response in this case. (That seems crazy to me, but here we are.)

Try configuring a group (like 'script') that actually does something.

Also why not use HEAT_SIGNAL as the transport? It's 2019 ;)

cheers,
Zane.

On 5/10/19 1:34 PM, Ajay Kalambur (akalambu) wrote:
> Hi
> 
> I was trying the Software Deployment/Structured deployment of heat.
> 
> I somehow can never get the signaling to work I see that authentication 
> is happening but I don’t see a POST from the VM as a result stack is 
> stuck in CREATE_IN_PROGRESS
> 
> I see this message in my heat api cfn log which seems to suggest 
> authentication is successful but it does not seem to POST. Have included 
> debug output from VM and also the sample heat template I used. Don’t 
> know if the template is correct as I referred some online examples to 
> build it
> 
> 2019-10-05 10:30:00.908 7 INFO heat.api.aws.ec2token [-] Checking AWS 
> credentials..
> 
> 2019-10-05 10:30:00.909 7 INFO heat.api.aws.ec2token [-] AWS credentials 
> found, checking against keystone.
> 
> 2019-10-05 10:30:00.910 7 INFO heat.api.aws.ec2token [-] Authenticating 
> with http://10.10.173.9:5000/v3/ec2tokens
> 
> 2019-10-05 10:30:01.315 7 INFO heat.api.aws.ec2token [-] AWS 
> authentication successful.
> 
> 2019-10-05 10:30:02.326 7 INFO eventlet.wsgi.server 
> [req-506f22c6-4062-4a84-8e85-40317a4099ed - 
> adccd09df89e4b71b0a42f462679e75a-b1c6eb69-3877-466b-b00d-03dc051 - 
> 0ecadd4762a34de1ac08508db4d3caa9 0ecadd4762a34de1ac08508db4d3caa9] 
> 10.11.59.36,10.10.173.9 - - [05/Oct/2019 10:30:02] "GET 
> /v1/?SignatureVersion=2&AWSAccessKeyId=f7874ac9898248edaae53511230534a4&StackName=test_stack&SignatureMethod=HmacSHA256&Signature=c03Q7Hb35q9tPPuYOv6YByn5YekF96p2s5zx36sX7x4%3D&Action=DescribeStackResource&LogicalResourceId=sig-vm-1 
> HTTP/1.1" 200 4669 1.418045
> 
> Some debugging output from my VM:
> 
> [root at sig-vm-1 fedora]# sudo os-collect-config --force --one-time --debug
> 
> /var/lib/os-collect-config/local-data not found. Skipping
> 
> [2019-10-05 17:32:47,058] (os-refresh-config) [INFO] Starting phase 
> pre-configure
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 ----------------------- 
> PROFILING -----------------------
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Target: pre-configure.d
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> Script                                     Seconds
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> ---------------------------------------  ----------
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 --------------------- END 
> PROFILING ---------------------
> 
> [2019-10-05 17:32:47,091] (os-refresh-config) [INFO] Completed phase 
> pre-configure
> 
> [2019-10-05 17:32:47,092] (os-refresh-config) [INFO] Starting phase 
> configure
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Running 
> /usr/libexec/os-refresh-config/configure.d/20-os-apply-config
> 
> [2019/10/05 05:32:47 PM] [INFO] writing /var/run/heat-config/heat-config
> 
> [2019/10/05 05:32:47 PM] [INFO] writing /etc/os-collect-config.conf
> 
> [2019/10/05 05:32:47 PM] [INFO] success
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 20-os-apply-config completed
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Running 
> /usr/libexec/os-refresh-config/configure.d/50-heat-config-docker-compose
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 50-heat-config-docker-compose 
> completed
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Running 
> /usr/libexec/os-refresh-config/configure.d/50-heat-config-kubelet
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 50-heat-config-kubelet completed
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Running 
> /usr/libexec/os-refresh-config/configure.d/55-heat-config
> 
> [2019-10-05 17:32:47,724] (heat-config) [ERROR] Skipping group 
> Heat::Ungrouped with no hook script None
> 
> [2019-10-05 17:32:47,724] (heat-config) [ERROR] Skipping group 
> Heat::Ungrouped with no hook script None
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 55-heat-config completed
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 ----------------------- 
> PROFILING -----------------------
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Target: configure.d
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Script              
>                         Seconds
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> ---------------------------------------  ----------
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> 20-os-apply-config                            0.345
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> 50-heat-config-docker-compose                 0.064
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> 50-heat-config-kubelet                        0.134
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 
> 55-heat-config                                0.065
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 --------------------- END 
> PROFILING ---------------------
> 
> [2019-10-05 17:32:47,787] (os-refresh-config) [INFO] Completed phase 
> configure
> 
> [2019-10-05 17:32:47,787] (os-refresh-config) [INFO] Starting phase 
> post-configure
> 
> dib-run-parts Sat Oct  5 17:32:47 UTC 2019 Running 
> /usr/libexec/os-refresh-config/post-configure.d/99-refresh-completed
> 
> ++ os-apply-config --key completion-handle --type raw --key-default ''
> 
> + HANDLE=
> 
> ++ os-apply-config --key completion-signal --type raw --key-default ''
> 
> + SIGNAL=
> 
> ++ os-apply-config --key instance-id --type raw --key-default ''
> 
> + ID=i-0000000d
> 
> + '[' -n i-0000000d ']'
> 
> + '[' -n '' ']'
> 
> + '[' -n '' ']'
> 
> ++ os-apply-config --key deployments --type raw --key-default ''
> 
> ++ jq -r 'map(select(.group == "os-apply-config") |
> 
>                select(.inputs[].name == "deploy_signal_id") |
> 
>                .id + (.inputs | map(select(.name == "deploy_signal_id")) 
> | .[].value)) |
> 
>                .[]'
> 
> + DEPLOYMENTS=
> 
> + DEPLOYED_DIR=/var/lib/os-apply-config-deployments/deployed
> 
> + '[' '!' -d /var/lib/os-apply-config-deployments/deployed ']'
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 99-refresh-completed completed
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 ----------------------- 
> PROFILING -----------------------
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 Target: post-configure.d
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 
> Script                                     Seconds
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 
> ---------------------------------------  ----------
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 
> 99-refresh-completed                          1.206
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 --------------------- END 
> PROFILING ---------------------
> 
> [2019-10-05 17:32:49,041] (os-refresh-config) [INFO] Completed phase 
> post-configure
> 
> [2019-10-05 17:32:49,042] (os-refresh-config) [INFO] Starting phase 
> migration
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 ----------------------- 
> PROFILING -----------------------
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 Target: migration.d
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 
> Script                                     Seconds
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 
> ---------------------------------------  ----------
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019
> 
> dib-run-parts Sat Oct  5 17:32:49 UTC 2019 --------------------- END 
> PROFILING ---------------------
> 
> [2019-10-05 17:32:49,073] (os-refresh-config) [INFO] Completed phase 
> migration
> 
> onfig]# cat /var/run/heat-config/heat-config
> 
> [{"inputs": [{"type": "String", "name": "foo", "value": "fu"}, {"type": 
> "String", "name": "bar", "value": "barmy"}, {"type": "String", "name": 
> "deploy_server_id", "value": "226ed96d-2335-436e-9707-95af73041e5f", 
> "description": "ID of the server being deployed to"}, {"type": "String", 
> "name": "deploy_action", "value": "CREATE", "description": "Name of the 
> current action being deployed"}, {"type": "String", "name": 
> "deploy_stack_id", "value": 
> "test_stack/b1c6eb69-3877-466b-b00d-03dc051d1893", "description": "ID of 
> the stack this deployment belongs to"}, {"type": "String", "name": 
> "deploy_resource_name", "value": "other_deployment", "description": 
> "Name of this deployment resource in the stack"}, {"type": "String", 
> "name": "deploy_signal_transport", "value": "CFN_SIGNAL", "description": 
> "How the server should signal to heat with the deployment output 
> values."}, {"type": "String", "name": "deploy_signal_id", "value": 
> "http://172.29.85.87:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Aadccd09df89e4b71b0a42f462679e75a%3Astacks/test_stack/b1c6eb69-3877-466b-b00d-03dc051d1893/resources/other_deployment?Timestamp=2019-10-05T01%3A11%3A46Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=28a09f5d996240b8b4a117ecb0e0142b&SignatureVersion=2&Signature=IqXbRf9MzJ%2FnzqM7CLNAsR3BiwmaaHyWQspegxYc3D8%3D", 
> "description": "ID of signal to use for signaling output values"}, 
> {"type": "String", "name": "deploy_signal_verb", "value": "POST", 
> "description": "HTTP verb to use for signaling outputvalues"}], "group": 
> "Heat::Ungrouped", "name": "test_stack-config-bmekpj67pq6p", "outputs": 
> [], "creation_time": "2019-10-05T01:14:31Z", "options": {}, "config": 
> {"config_value_foo": "fu", "config_value_bar": "barmy"}, "id": 
> "5c404619-ce79-48cd-b001-00ac6ff4f4e8"}, {"inputs": [{"type": "String", 
> "name": "foo", "value": "fooooo"}, {"type": "String", "name": "bar", 
> "value": "baaaaa"}, {"type": "String", "name": "deploy_server_id", 
> "value": "226ed96d-2335-436e-9707-95af73041e5f", "description": "ID of 
> the server being deployed to"}, {"type": "String", "name": 
> "deploy_action", "value": "CREATE", "description": "Name of the current 
> action being deployed"}, {"type": "String", "name": "deploy_stack_id", 
> "value": "test_stack/b1c6eb69-3877-466b-b00d-03dc051d1893", 
> "description": "ID of the stack this deployment belongs to"}, {"type": 
> "String", "name": "deploy_resource_name", "value": "deployment", 
> "description": "Name of this deployment resource in the stack"}, 
> {"type": "String", "name": "deploy_signal_transport", "value": 
> "CFN_SIGNAL", "description": "How the server should signal to heat with 
> the deployment output values."}, {"type": "String", "name": 
> "deploy_signal_id", "value": 
> "http://172.29.85.87:8000/v1/signal/arn%3Aopenstack%3Aheat%3A%3Aadccd09df89e4b71b0a42f462679e75a%3Astacks/test_stack/b1c6eb69-3877-466b-b00d-03dc051d1893/resources/deployment?Timestamp=2019-10-05T01%3A11%3A46Z&SignatureMethod=HmacSHA256&AWSAccessKeyId=4c3d718796e0452ea94f2ce8dc6973ef&SignatureVersion=2&Signature=rxtSBNUSF%2FEXn9wvVK4XMU%2F1RzXVDGILtZr1hmkl7gg%3D", 
> "description": "ID of signal to use for signaling output values"}, 
> {"type": "String", "name": "deploy_signal_verb", "value": "POST", 
> "description": "HTTP verb to use for signaling outputvalues"}], "group": 
> "Heat::Ungrouped", "name": "test_stack-config-bmekpj67pq6p", "outputs": 
> [], "creation_time": "2019-10-05T01:14:31Z", "options": {}, "config": 
> {"config_value_foo": "fooooo", "config_value_bar": "baaaaa"}, "id": 
> "f4dea0c1-73c9-4ce4-aa04-c76ef9b08859"}][root at sig-vm-1 heat-config]#
> 
> [root at sig-vm-1 heat-config]# cat /etc/os-collect-config.conf
> 
> [DEFAULT]
> 
> command = os-refresh-config
> 
> collectors = ec2
> 
> collectors = cfn
> 
> collectors = local
> 
> [cfn]
> 
> metadata_url = http://172.29.85.87:8000/v1/
> 
> stack_name = test_stack
> 
> secret_access_key = npa^GWsPtbRL7D*MYObOI*kV0i1yqKOG
> 
> access_key_id = f7874ac9898248edaae53511230534a4
> 
> path = sig-vm-1.Metadata
> 
> *Here is my basic sample temple*
> 
> heat_template_version: 2013-05-23
> 
> description: >
> 
>    This template demonstrates how to use OS::Heat::StructuredDeployment
> 
>    to override substitute get_input placeholders defined in
> 
>    OS::Heat::StructuredConfig config.
> 
>    As there is no hook on the server to act on the configuration data,
> 
>    these deployment resource will perform no actual configuration.
> 
> parameters:
> 
>    flavor:
> 
>      type: string
> 
>      default: 'a061cb6c-99e7-4bdb-93e4-f0037ee3e947'
> 
>    image:
> 
>      type: string
> 
>      default: 3be29d9f-2ce6-4b95-b80c-0dbca7acfdfe
> 
>    public_net_id:
> 
>      type: string
> 
>      default: 67ae0e17-6258-4fb6-8b9b-0f29f6adb9db
> 
>    private_net_id:
> 
>      type: string
> 
>      description: Private network id
> 
>      default: 995fc046-1c58-468a-b81c-e42c06fc8966
> 
>    private_subnet_id:
> 
>      type: string
> 
>      description: Private subnet id
> 
>      default: 7598c805-3a9b-4c27-be5b-dca4d89f058c
> 
>    password:
> 
>      type: string
> 
>      description: SSH password
> 
>      default: lab123
> 
> resources:
> 
>    the_sg:
> 
>      type: OS::Neutron::SecurityGroup
> 
>      properties:
> 
>        name: the_sg
> 
>        description: Ping and SSH
> 
>        rules:
> 
>        - protocol: icmp
> 
>        - protocol: tcp
> 
>          port_range_min: 22
> 
>          port_range_max: 22
> 
>    config:
> 
>      type: OS::Heat::StructuredConfig
> 
>      properties:
> 
>        config:
> 
>         config_value_foo: {get_input: foo}
> 
>         config_value_bar: {get_input: bar}
> 
>    deployment:
> 
>      type: OS::Heat::StructuredDeployment
> 
>      properties:
> 
>        signal_transport: CFN_SIGNAL
> 
>        config:
> 
>          get_resource: config
> 
>        server:
> 
>          get_resource: sig-vm-1
> 
>        input_values:
> 
>          foo: fooooo
> 
>          bar: baaaaa
> 
>    other_deployment:
> 
>      type: OS::Heat::StructuredDeployment
> 
>      properties:
> 
>        signal_transport: CFN_SIGNAL
> 
>        config:
> 
>          get_resource: config
> 
>        server:
> 
>          get_resource: sig-vm-1
> 
>        input_values:
> 
>          foo: fu
> 
>          bar: barmy
> 
>    server1_port0:
> 
>      type: OS::Neutron::Port
> 
>      properties:
> 
>        network_id: { get_param: private_net_id }
> 
>        security_groups:
> 
>          - default
> 
>        fixed_ips:
> 
>          - subnet_id: { get_param: private_subnet_id }
> 
>    server1_public:
> 
>      type: OS::Neutron::FloatingIP
> 
>      properties:
> 
>        floating_network_id: { get_param: public_net_id }
> 
>        port_id: { get_resource: server1_port0 }
> 
>    sig-vm-1:
> 
>      type: OS::Nova::Server
> 
>      properties:
> 
>        name: sig-vm-1
> 
>        image: { get_param: image }
> 
>        flavor: { get_param: flavor }
> 
>        networks:
> 
>          - port: { get_resource: server1_port0 }
> 
>        user_data_format: SOFTWARE_CONFIG
> 
>        user_data:
> 
>          get_resource: cloud_config
> 
>    cloud_config:
> 
>      type: OS::Heat::CloudConfig
> 
>      properties:
> 
>        cloud_config:
> 
>          password: { get_param: password }
> 
>          chpasswd: { expire: False }
> 
>          ssh_pwauth: True
> 




More information about the openstack-discuss mailing list