在 ansible 中使用 aws_secret

Using aws_secret in ansible

我正在尝试使用 ansible 2.8 通过查找从 aws secret manager 检索密码。

以下内容对我不起作用:

  1. 在 .bashrc 中,我导出了区域
  2. 任务中的 Ansible 环境变量
  3. 在pre_tasks
  4. 中设置ansible变量
- hosts: StagingApps
  remote_user: staging
  gather_facts: false

  tasks:
  - debug:
      var: "{{ lookup('aws_secret', 'staging_mongodb_pass', region='us-east-1') }}"
      msg: "{{ query('aws_secret', 'staging_mongodb_pass', region='us-east-1') }}"
      environment:
        region: 'us-east-1'

错误信息:

FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'aws_secret'. Error was a , original message: 'Requested entry (plugin_type: lookup plugin: aws_secret setting: region ) was not defined in configuration.'"}

下面的剧本对我有用

  - name: "register mongodb from secretsmanager"
    shell: "aws secretsmanager get-secret-value --secret-id staging_mongodb"
    register: mongodb_pass
    delegate_to: 127.0.0.1

  - set_fact:
      mongodb_pass_dict: "{{ mongodb_pass.stdout | from_json | json_query('SecretString')  }}"

  - set_fact:
      mongodb_pass_list: "{{ ['staging_mongodb'] | map('extract', mongodb_pass_dict) | list  }}"

  - set_fact:
      mongodb_pass: "{{ mongodb_pass_list[0] }}"

    - template:
      src: application.properties.j2
      dest: application.properties
      mode: 0644
      backup: yes

看起来 Ansible 在损坏的状态下发布了这个查找插件。他们有一个问题并打开了一个 PR 来修复它:

非常失望,因为我已经等了这个插件好几个月了。