💻

AnsibleでSecretManagerから値を取得する

2024/03/08に公開

事前情報

AnsibleをAWSのEC2上で実行している

準備

ギャラクシーでcommunity.awsを追加する

ansible-galaxy collection install community.aws

インスタンスのIAMロールにSecretManagerからの値取得を許可するインラインポリシーを追加

{
    "Version": "2012-10-17",
    "Statement": [
        {
      "Action": "secretsmanager:GetSecretValue",
            "Resource": "${secret_manager_arns}",
            "Effect": "Allow"
        }
    ]
}

実装

Lookupで先程追加したコレクションに含まれるaws_secretを使用する

  • ※lookupは外部をソースとするデータにAnsibleからアクセスできるようになるプラグイン
# 取得方法は様々あるため参考ページを参照
# 今回はSecretManagerのパスとregionを指定して、キーバリューJsonで取得
secrets: "{{lookup('aws_secret', '/path/to/secrets', region='ap-northeast-1')}}"

# キーにアクセスするとバリューが取得できる
hogehoge_secret: "{{secrets.HOGEHOGE}}"
fugafuga_secret:  "{{secrets.FUGAFUGA}}"

参考

https://docs.ansible.com/ansible/2.9_ja/plugins/lookup.html
https://docs.ansible.com/ansible/latest/collections/amazon/aws/secretsmanager_secret_lookup.html

Discussion