amazon.aws.ssm_parameter 查找 – 获取 SSM 参数的值或路径下的所有参数
注意
此查找插件是 amazon.aws 集合(版本 9.0.0)的一部分。
如果您使用的是 ansible
包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install amazon.aws
。您需要其他要求才能使用此查找插件,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定:amazon.aws.ssm_parameter
。
概要
获取 Amazon Simple Systems Manager 参数或参数层次结构的值。您传递给查找的第一个参数可以是参数名称或参数层次结构。层次结构以正斜杠开头,以参数名称结尾。最多可以指定 5 层。
如果按名称查找显式列出的不存在的参数,则查找将生成错误。在这种情况下,您可以使用
default
过滤器来提供默认值,但必须将 on_missing 参数设置为skip
或warn
。您还必须将default
过滤器的第二个参数设置为true
(请参阅下面的示例)。当查找路径下参数时,将为每个路径返回一个字典。如果该路径下没有参数,则查找将生成错误。
如果由于缺少权限或 AWS 客户端错误而导致查找失败,则 aws_ssm 将生成错误。如果您想在这种情况下继续,则必须设置两个 Ansible 任务,一个设置变量并忽略失败,另一个使用该变量的值和默认值。请参阅下面的示例。
在 6.0.0 版本之前,此模块称为
aws_ssm
,用法保持不变。
别名:aws_ssm
要求
执行此查找的本地控制器节点上需要满足以下要求。
python >= 3.6
boto3 >= 1.28.0
botocore >= 1.31.0
关键字参数
这描述了查找的关键字参数。这些是以下示例中的值 key1=value1
、key2=value2
等:lookup('amazon.aws.ssm_parameter', key1=value1, key2=value2, ...)
和 query('amazon.aws.ssm_parameter', key1=value1, key2=value2, ...)
参数 |
注释 |
---|---|
AWS 访问密钥 ID。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 aws_access_key 和 profile 选项是互斥的。 为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_access_key_id 别名。 ec2_access_key 别名已被弃用,将在 2024-12-01 之后的版本中删除。 配置
|
|
一个布尔值,指示参数是否作为层次结构提供。 选项
|
|
一个布尔值,指示是否解密参数。 选项
|
|
如果拒绝访问 SSM 参数,则采取的操作。 当拒绝访问 SSM 参数时,
选项
|
|
如果 SSM 参数缺失,要采取的操作。
选项
|
|
用于身份验证的命名 AWS 配置文件。 有关命名配置文件的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html。 profile 选项与 aws_access_key、aws_secret_key 和 security_token 选项互斥。 boto_profile 别名已弃用,将在 2024-12-01 之后的版本中删除。 配置
|
|
一个布尔值,指示是否检索层次结构中的所有参数。 选项
|
|
要使用的 AWS 区域。 有关更多信息,请参阅 Amazon AWS 文档 http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region。 配置
|
|
AWS 密钥访问密钥。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 secret_key 和 profile 选项互斥。 为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_secret_access_key 别名。 ec2_secret_key 别名已弃用,将在 2024-12-01 之后的版本中删除。 配置
|
|
用于临时凭证的 AWS STS 会话令牌。 有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys。 security_token 和 profile 选项互斥。 别名 aws_session_token 和 session_token 在 3.2.0 版本中添加,参数在 6.0.0 版本中从 security_token 重命名为 session_token。 security_token、aws_security_token 和 access_token 别名已弃用,将在 2024-12-01 之后的版本中删除。 配置
|
|
说明
注意
注意: 对于模块,环境变量和配置文件是从 Ansible “主机” 上下文读取的,而不是从 “控制器” 上下文读取的。 因此,可能需要将文件显式复制到 “主机”。对于查找和连接插件,环境变量和配置文件是从 Ansible “控制器” 上下文读取的,而不是从 “主机” 上下文读取的。
Ansible 使用的 AWS SDK (boto3) 也可能从 Ansible “主机” 上下文中的配置文件(通常是
~/.aws/credentials
)读取凭据和其他设置的默认值,例如区域。 有关更多信息,请参阅 https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html。
示例
# lookup sample:
- name: lookup ssm parameter store in the current region
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'Hello' ) }}"
- name: lookup ssm parameter store in specified region
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'Hello', region='us-east-2' ) }}"
- name: lookup ssm parameter store without decryption
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'Hello', decrypt=False ) }}"
- name: lookup ssm parameter store using a specified aws profile
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'Hello', profile='myprofile' ) }}"
- name: lookup ssm parameter store using explicit aws credentials
debug:
msg: >-
{{ lookup('amazon.aws.aws_ssm', 'Hello', access_key=my_aws_access_key, secret_key=my_aws_secret_key, session_token=my_session_token ) }}"
- name: lookup ssm parameter store with all options
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'Hello', decrypt=false, region='us-east-2', profile='myprofile') }}"
- name: lookup ssm parameter and fail if missing
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'missing-parameter') }}"
- name: lookup a key which doesn't exist, returning a default ('root')
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'AdminID', on_missing="skip") | default('root', true) }}"
- name: lookup a key which doesn't exist failing to store it in a fact
set_fact:
temp_secret: "{{ lookup('amazon.aws.aws_ssm', '/NoAccess/hiddensecret') }}"
ignore_errors: true
- name: show fact default to "access failed" if we don't have access
debug: msg="{{ 'the secret was:' ~ temp_secret | default('could not access secret') }}"
- name: return a dictionary of ssm parameters from a hierarchy path
debug: msg="{{ lookup('amazon.aws.aws_ssm', '/PATH/to/params', region='ap-southeast-2', bypath=true, recursive=true ) }}"
- name: return a dictionary of ssm parameters from a hierarchy path with shortened names (param instead of /PATH/to/params/foo/bar/param)
debug: msg="{{ lookup('amazon.aws.aws_ssm', '/PATH/to/params', region='ap-southeast-2', shortnames=true, bypath=true, recursive=true ) }}"
- name: return a dictionary of ssm parameters from a hierarchy path with the heirarchy path dropped (foo/bar/param instead of /PATH/to/params/foo/bar/param)
debug: msg="{{ lookup('amazon.aws.aws_ssm', '/PATH/to/params', region='ap-southeast-2', droppath=true, bypath=true, recursive=true ) }}"
- name: Iterate over a parameter hierarchy (one iteration per parameter)
debug: msg='Key contains {{ item.key }} , with value {{ item.value }}'
loop: "{{ lookup('amazon.aws.aws_ssm', '/demo/', region='ap-southeast-2', bypath=True) | dict2items }}"
- name: Iterate over multiple paths as dictionaries (one iteration per path)
debug: msg='Path contains {{ item }}'
loop: "{{ lookup('amazon.aws.aws_ssm', '/demo/', '/demo1/', bypath=True)}}"
- name: lookup ssm parameter warn if access is denied
debug: msg="{{ lookup('amazon.aws.aws_ssm', 'missing-parameter', on_denied="warn" ) }}"