Skip to content

Commit 57f57dc

Browse files
committed
support ec2 metadata uri options
1 parent fa31438 commit 57f57dc

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed

plugins/modules/ec2_metadata_facts.py

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,42 @@
3131
type: int
3232
default: 60
3333
version_added: 8.2.0
34+
ec2_metadata_token_uri:
35+
description:
36+
- This option is for testing purpuse.
37+
- If not specified, V(http://169.254.169.254/latest/api/token) is used.
38+
type: str
39+
version_added: 8.3.0
40+
ec2_metadata_uri:
41+
description:
42+
- This option is for testing purpuse.
43+
- If not specified, V(http://169.254.169.254/latest/meta-data/) is used.
44+
type: str
45+
version_added: 8.3.0
46+
ec2_metadata_instance_tags_uri:
47+
description:
48+
- This option is for testing purpuse.
49+
- If not specified, V(http://169.254.169.254/latest/meta-data/tags/instance) is used.
50+
type: str
51+
version_added: 8.3.0
52+
ec2_sshdata_uri:
53+
description:
54+
- This option is for testing purpuse.
55+
- If not specified, V(http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key) is used.
56+
type: str
57+
version_added: 8.3.0
58+
ec2_userdata_uri:
59+
description:
60+
- This option is for testing purpuse.
61+
- If not specified, V(http://169.254.169.254/latest/user-data/) is used.
62+
type: str
63+
version_added: 8.3.0
64+
ec2_dynamicdata_uri:
65+
description:
66+
- This option is for testing purpuse.
67+
- If not specified, V(http://169.254.169.254/latest/dynamic/) is used.
68+
type: str
69+
version_added: 8.3.0
3470
"""
3571

3672
EXAMPLES = r"""
@@ -672,6 +708,12 @@ def run(self):
672708
def main():
673709
argument_spec = dict(
674710
metadata_token_ttl_seconds=dict(required=False, default=60, type="int", no_log=False),
711+
ec2_metadata_token_uri=dict(required=False, default=None, type="str"),
712+
ec2_metadata_uri=dict(required=False, default=None, type="str"),
713+
ec2_metadata_instance_tags_uri=dict(required=False, default=None, type="str"),
714+
ec2_sshdata_uri=dict(required=False, default=None, type="str"),
715+
ec2_userdata_uri=dict(required=False, default=None, type="str"),
716+
ec2_dynamicdata_uri=dict(required=False, default=None, type="str"),
675717
)
676718

677719
module = AnsibleModule(
@@ -684,7 +726,15 @@ def main():
684726
if metadata_token_ttl_seconds <= 0 or metadata_token_ttl_seconds > 21600:
685727
module.fail_json(msg="The option 'metadata_token_ttl_seconds' must be set to a value between 1 and 21600.")
686728

687-
ec2_metadata_facts = Ec2Metadata(module).run()
729+
ec2_metadata_facts = Ec2Metadata(
730+
module,
731+
ec2_metadata_token_uri=module.params["ec2_metadata_token_uri"],
732+
ec2_metadata_uri=module.params["ec2_metadata_uri"],
733+
ec2_metadata_instance_tags_uri=module.params["ec2_metadata_instance_tags_uri"],
734+
ec2_sshdata_uri=module.params["ec2_sshdata_uri"],
735+
ec2_userdata_uri=module.params["ec2_userdata_uri"],
736+
ec2_dynamicdata_uri=module.params["ec2_dynamicdata_uri"],
737+
).run()
688738
ec2_metadata_facts_result = dict(changed=False, ansible_facts=ec2_metadata_facts)
689739

690740
module.exit_json(**ec2_metadata_facts_result)

tests/unit/plugins/modules/test_ec2_metadata_facts.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,13 @@ def test__fetch_user_data_plain(m_fetch_url, ec2_instance):
9999

100100
m_fetch_url.return_value = (io.BytesIO(user_data), {"status": 200})
101101
assert ec2_instance._fetch("http://169.254.169.254/latest/user-data") == user_data.decode("utf-8")
102+
103+
104+
@patch(module_name + ".fetch_url")
105+
def test__custom_uri(m_fetch_url, ec2_instance):
106+
module = MagicMock()
107+
module.params = {
108+
"ec2_metadata_token_uri": "http://example.com/ec2_metadata_token_uri"
109+
}
110+
default = ec2_metadata_facts.Ec2Metadata(module)
111+
assert default.ec2_metadata_token_uri == "http://example.com/ec2_metadata_token_uri"

0 commit comments

Comments
 (0)