尝试将Ansible Vault与SSM参数存储相结合

虽然我认为可能有更好的方法。

安装Ansible Vault

使用ansible-vault命令来创建或编辑敏感信息。
例如,在hosts/hoge目录下进行主机清单配置时,考虑要为所有主机设置敏感信息。在这种情况下,只需在hosts/hoge/group_vars/all目录下创建一个名为vault.yml的文件作为敏感信息即可。

$ ansible-vault create /hosts/hoge/group_vars/all/vault.yml

在执行上述命令时,需输入用于加密和解密的密码。

当编辑已创建的vault.yml时,使用edit子命令。

$ ansible-vault edit /hosts/hoge/group_vars/all/vault.yml

任何一个设备的默认编辑器都可以启动并进行编辑。

在vault.yml中,使用vault_作为变量前缀来定义变量,并且在明文的变量文件中引用它可以更方便地处理(如果直接在角色中引用,细微的更改可能会变得困难)。以下是将DataDog的API密钥vault_dd_api_key = xxxxxxxxxxxxx加密并在all.yml中读取的示例。

### Datadog Settings
# vault_... は Ansible Vault で設定した秘匿情報
datadog_api_key: "{{ vault_dd_api_key }}"
datadog_checks:
  process:
    init_config:
    instances:
      - name: ssh
        search_string: ['ssh', 'sshd' ]
      - name: chronyd
        search_string: ['chrony', 'chronyd']
      - name: syslog
        search_string: ['rsyslogd']
        cpu_check_interval: 0.2
        exact_match: true
        ignore_denied_access: true
      - name: crond
        search_string: ['crond']
      - name: httpd
        search_string: ['httpd']

读取密码的脚本

本次我們將把密碼作為安全字串保存到 SSM 的 Parameter Store 中。參數名稱可以自由設定,本次我們將其命名為 ansible-vault-pass。

AWSドキュメント

KMSのキーを作成し、IAMロール/ユーザに復号許可ポリシーを設定する必要がある。

创建一个读取保存的密码的脚本。

#!/usr/bin/env sh
aws ssm get-parameters \
  --names "ansible-vault-pass" \
  --with-decryption --query "Parameters[*].Value" \
  --output text

将此脚本放置在Ansible的根目录下,并在ansible.cfg中添加以下内容。

### Ansible Vault のパスワードをスクリプトから取得
vault_password_file = vault_pass.sh

只需要在上述设置中运行 ansible-playbook 就可以了。如果要同时进行 AWS 和服务器设置,我觉得这样的设置就足够简单了。

只需要一种选择。

    Gitリポジトリ上でAWSアクセスキーを大公開しないためにAnsible Vaultをフル活用する | ヌーラボ
广告
将在 10 秒后关闭
bannerAds