尝试将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をフル活用する | ヌーラボ