使用 Ansible amazon.aws.aws_secret 仅从 SecretString 中提取秘密值
Extract secret value only from SecretString using Ansible amazon.aws.aws_secret
我正在尝试使用 Ansible 从 AWS Secret Manager 获取 var 的秘密值。我原来的尝试是这样的:
mySecret: "{{ lookup('amazon.aws.aws_secret', 'my/awesome/secret', region='eu-west-2')}}"
这个 return 的值类似于:
{"password" : "mypassword"}
我想要的只是mypassword
值
我尝试了多种使用 json_query
的方法,包括:
mySecret: "{{ lookup('amazon.aws.aws_secret', 'my/awesome/secret', region='eu-west-2') | from_json | json_query('SecretString.password') }}"
但这不是 return 值。
仅在使用 json_query 和 Ansible 时提取值的正确方法是什么?
Ansible 的 JSON 功能非常强大,它可以正确读取 JSON 对象并通过点 .
符号获取所述 JSON 文档的属性。
鉴于 JSON
{
"secret": {
"password" : "mypassword"
}
}
您可以在 Ansible 中通过 secret.password
轻松访问它。
现在,从您的评论看来,查找 amazon.aws.aws_secret
没有返回 JSON,而是一个字符串,表示 JSON。因此,为了访问它,您必须首先使用 to_json
过滤器,正如您已经尝试过的那样。
但是,除此之外,上面的解释仍然适用,所以,这就是您要查找的内容:
secret: >-
{{
(lookup(
'amazon.aws.aws_secret',
'my/awesome/secret',
region='eu-west-2'
) | from_json).password
}}
我正在尝试使用 Ansible 从 AWS Secret Manager 获取 var 的秘密值。我原来的尝试是这样的:
mySecret: "{{ lookup('amazon.aws.aws_secret', 'my/awesome/secret', region='eu-west-2')}}"
这个 return 的值类似于:
{"password" : "mypassword"}
我想要的只是mypassword
值
我尝试了多种使用 json_query
的方法,包括:
mySecret: "{{ lookup('amazon.aws.aws_secret', 'my/awesome/secret', region='eu-west-2') | from_json | json_query('SecretString.password') }}"
但这不是 return 值。
仅在使用 json_query 和 Ansible 时提取值的正确方法是什么?
Ansible 的 JSON 功能非常强大,它可以正确读取 JSON 对象并通过点 .
符号获取所述 JSON 文档的属性。
鉴于 JSON
{
"secret": {
"password" : "mypassword"
}
}
您可以在 Ansible 中通过 secret.password
轻松访问它。
现在,从您的评论看来,查找 amazon.aws.aws_secret
没有返回 JSON,而是一个字符串,表示 JSON。因此,为了访问它,您必须首先使用 to_json
过滤器,正如您已经尝试过的那样。
但是,除此之外,上面的解释仍然适用,所以,这就是您要查找的内容:
secret: >-
{{
(lookup(
'amazon.aws.aws_secret',
'my/awesome/secret',
region='eu-west-2'
) | from_json).password
}}