Azure: IMDS service not retried on timeout

Bug #1800223 reported by Chad Smith
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Fix Released
Undecided
Unassigned

Bug Description

cloud-init 18.4-7-g4652b196-0ubuntu1 on Azure does not retry IMDS if the service is not yet available.

Per configuration in the azure datasource, it should retry 4 times before failing, but logs only list one attempt at http://169.254.169.254/metadata/instance?api-version=2017-12-01

We can see this in the following excerpt of /var/log/cloud-init.log

2018-10-26 17:26:51,162 - url_helper.py[DEBUG]: [0/4] open 'http://169.254.169.254/metadata/instance?api-version=2017-12-01' with {'url': 'http://169.254.169.254/metadata/instance?api-version=2017-12-01', 'allow_redirects': True, 'method': 'GET', 'timeout': 1.0, 'headers': {'User-Agent': 'Cloud-Init/18.4-7-g4652b196-0ubuntu1', 'Metadata': 'true'}} configuration
2018-10-26 17:26:52,168 - DataSourceAzure.py[DEBUG]: Ignoring IMDS instance metadata: HTTPConnectionPool(host='169.254.169.254', port=80): Max retries exceeded with url: /metadata/instance?api-version=2017-12-01 (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7f392a7c5668>, 'Connection to 169.254.169.254 timed out. (connect timeout=1.0)'))
2018-10-26 17:26:52,168 - util.py[DEBUG]: Crawl of Azure Instance Metadata Service (IMDS) took 1.007 seconds

Only 1 attempt (out of 4) was attempted and then Azure datasource gave up after receiving a ConnectTimeoutError.

At a later time on the instance, I was able to see that the IMDS service was available using the following python script:

$ python3 -c 'from cloudinit.sources.DataSourceAzure import get_metadata_from_imds; print(get_metadata_from_imds("eth0", retries=2))';

{'compute': {'location': 'eastus2', 'name': 'my-c1', 'offer': 'UbuntuServer', 'osType': 'Linux', 'placementGroupId': '', 'platformFaultDomain': '0', 'platformUpdateDomain': '0', 'publisher': 'Canonical', 'resourceGroupName': 'srugroup1', 'sku': '18.10-DAILY', 'subscriptionId': '12aad61c-6de4-4e53-a6c6-5aff52a83777', 'tags': '', 'version': '18.10.201810230', 'vmId': 'ec22ac8c-f728-425f-852f-5b86d0c9f2f7', 'vmScaleSetName': '', 'vmSize': 'Standard_DS1_v2', 'zone': ''}, 'network': {'interface': [{'ipv4': {'ipAddress': [{'privateIpAddress': '10.0.0.4', 'publicIpAddress': '40.70.24.192'}], 'subnet': [{'address': '10.0.0.0', 'prefix': '24'}]}, 'ipv6': {'ipAddress': []}, 'macAddress': '000D3A03582B'}]}}

Related branches

Revision history for this message
Chad Smith (chad.smith) wrote :

Released in cloud-init v18.4-22-g6062595b-0ubuntu1. Currently avaialable in Ubuntu Disco series.

Changed in cloud-init:
status: New → Fix Released
Revision history for this message
James Falcon (falcojr) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.