Ansible2.6でAWS KMSを使うときにハマったこと
Ansible2.6でAWS KMSを使うときにハマったこと:
AnsibleでAWS KMS(以下KMS)を構築&利用しようとして、Ansibleの使用言語であるPythonにハマった話です。
インフラ自動構築ツールとしてのAnsibleの立ち位置や、使い方などは省略させてもらいます。
(Ansible歴が15営業日程度なので、アレレな使い方をしている可能性があります。)
AnsibleのAWSモジュール一覧を見たところ、KMS構築モジュールがないやんけ!
(え、あるよと思った方、実はこのaws_kmsモジュールはKMSを利用するIAMロール・ユーザーを定める代物です。)
となり、AnsibleからAWS CloudFormation(以下CloudFormation)を呼び(使用モジュール)、Ansibleでしたかったこと1 & 2を実施するという荒技をしました。
aws_kms_factsモジュール(以下aws_kms_facts)で暗号化に使いたいCMKをエイリアスのフィルターで取得し、ec2_volモジュールで暗号化しようとしたときに、ことは起こりました。
(12/25に書きます)
(12/25に書きます)
え、aws_kms_facts実行結果で取得できるdictオブジェクトに確かに「keys」というキーはあるよ!
どこ見てるの、もしかしてバグ?と思いました。キー名を「key」にしたり「result」にしたり。。
EBS暗号化を、aws_kms_facts実行結果で取得できるdictオブジェクトのキーをひとつひとつ舐め、「keys」というキーがあれば、そのバリューを取得する処理に変更しました。
EBS暗号化ソースは以下です。(12/25に書きます)
Pythonのkeysは特別な意味を持つので、keys()と間違われないようにしましょう
はじめに
AnsibleでAWS KMS(以下KMS)を構築&利用しようとして、Ansibleの使用言語であるPythonにハマった話です。インフラ自動構築ツールとしてのAnsibleの立ち位置や、使い方などは省略させてもらいます。
(Ansible歴が15営業日程度なので、アレレな使い方をしている可能性があります。)
前提条件
Ansibleでしたかったこと
-
KMSカスタマーマスターキーの構築(以下CMK) - CMKにエイリアスを付与する
- CMKをエイリアスから取得する
- CMKでEBSを暗号化
ハマった経緯
AnsibleのAWSモジュール一覧を見たところ、KMS構築モジュールがないやんけ!(え、あるよと思った方、実はこのaws_kmsモジュールはKMSを利用するIAMロール・ユーザーを定める代物です。)
となり、AnsibleからAWS CloudFormation(以下CloudFormation)を呼び(使用モジュール)、Ansibleでしたかったこと1 & 2を実施するという荒技をしました。
aws_kms_factsモジュール(以下aws_kms_facts)で暗号化に使いたいCMKをエイリアスのフィルターで取得し、ec2_volモジュールで暗号化しようとしたときに、ことは起こりました。
実行Ansibleソース
(12/25に書きます)
CMKを構築するCloudFormation
CMKを構築した結果の標準出力
CMKにエイリアスを付与するCloudFormation
CMKにエイリアスを付与した結果の標準出力
エイリアスからEBS暗号化に使用するCMKを取得する
エイリアスからEBS暗号化に使用するCMKを取得した結果の標準出力
EBS暗号化⇨エラー発生
出現したエラー
(12/25に書きます)え、aws_kms_facts実行結果で取得できるdictオブジェクトに確かに「keys」というキーはあるよ!
どこ見てるの、もしかしてバグ?と思いました。キー名を「key」にしたり「result」にしたり。。
解決策
EBS暗号化を、aws_kms_facts実行結果で取得できるdictオブジェクトのキーをひとつひとつ舐め、「keys」というキーがあれば、そのバリューを取得する処理に変更しました。EBS暗号化ソースは以下です。(12/25に書きます)
コメント
コメントを投稿