如何使用 Ansible 在 AWS 机密管理器中设置 key/value 机密?
How do you set key/value secret in AWS secrets manager using Ansible?
下面的代码没有为秘密设置 key/value 对。它只创建一个字符串。但是我想创建 key/value 而文档甚至没有提到它....
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Add string to AWS Secrets Manager
aws_secret:
name: 'testvar'
state: present
secret_type: 'string'
secret: "i love devops"
register: secret_facts
- debug:
var: secret_facts
如果这匹配 Secrets Manager CLI 之类的任何内容,那么要设置键值对,您应该期望创建如下所示的键值对:
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Add string to AWS Secrets Manager
aws_secret:
name: 'testvar'
state: present
secret_type: 'string'
secret: "{\"username\":\"bob\",\"password\":\"abc123xyz456\"}"
register: secret_facts
- debug:
var: secret_facts
虽然这里的答案不是“错误”,但如果您需要使用变量来构建您的秘密,它将不起作用。原因是当字符串被移交给 Jinja2 来处理变量时,会发生一些变量杂耍,最终双引号被单引号替换 无论你做什么 !
所以上面的例子是用变量完成的:
secret: "{\"username\":\"{{ myusername }}\",\"password\":\"{{ mypassword }}\"}"
结果为:
{'username:'bob','password':'abc123xyz456'}
当然 AWS 无法解析它。解决方案非常简单,我在这里找到了它:
如果您在字符串的开头放一个 space 或换行就可以了!
secret: " {\"username\":\"{{ myusername }}\",\"password\":\"{{ mypassword }}\"}"
下面的代码没有为秘密设置 key/value 对。它只创建一个字符串。但是我想创建 key/value 而文档甚至没有提到它....
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Add string to AWS Secrets Manager
aws_secret:
name: 'testvar'
state: present
secret_type: 'string'
secret: "i love devops"
register: secret_facts
- debug:
var: secret_facts
如果这匹配 Secrets Manager CLI 之类的任何内容,那么要设置键值对,您应该期望创建如下所示的键值对:
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Add string to AWS Secrets Manager
aws_secret:
name: 'testvar'
state: present
secret_type: 'string'
secret: "{\"username\":\"bob\",\"password\":\"abc123xyz456\"}"
register: secret_facts
- debug:
var: secret_facts
虽然这里的答案不是“错误”,但如果您需要使用变量来构建您的秘密,它将不起作用。原因是当字符串被移交给 Jinja2 来处理变量时,会发生一些变量杂耍,最终双引号被单引号替换 无论你做什么 !
所以上面的例子是用变量完成的:
secret: "{\"username\":\"{{ myusername }}\",\"password\":\"{{ mypassword }}\"}"
结果为:
{'username:'bob','password':'abc123xyz456'}
当然 AWS 无法解析它。解决方案非常简单,我在这里找到了它:
如果您在字符串的开头放一个 space 或换行就可以了!
secret: " {\"username\":\"{{ myusername }}\",\"password\":\"{{ mypassword }}\"}"