AWS環境で複数のEC2にSSHせずに共通のレシピを実行するベストプラクティス

投稿者: Anonymous

AWS EC2 インスタンスに共通のプロビジョニングレシピを作成して実行したいです
ただ ssh ができるのは踏み台用のごく一部のサーバーで
その他大多数のサーバーにはセキュリティの都合上 SSH 鍵自体が存在しません

そのため SSH on SSM も利用することができないので
SSM だけを使ってレシピを実行する方法はないでしょうか
AWS の操作権限自体はリソース削除系以外作成や変更に関してはある程度何でもできる権限を持ってます

itamae や ansible を試してみたのですがどちらも SSH 前提みたいで

ansible に関しては単独レシピであれば ssm 経由で実行できるみたいなのですが
OSで分岐するようなコードがかけません(設定ファイルの場所等を吸収できない)

参考:https://qiita.com/taishin/items/f3b0f3307a4eb2b394cb

レシピをシェルスクリプト化してS3に置いて実行するというのも可能ですが
生のシェルスクリプトだと 可読性や運用性において itamae や ansible のようなプロビジョニングツールには劣りますし

参考:https://dev.classmethod.jp/cloud/aws/manage-instance-by-ec2-run-command-only/

itamae や ansible にひたすら aws cli run_command を書くのも可読性が悪くなってしまいます

ansible や itamae に ssh の代わりに ssm 経由でコマンドを投げてくれるモジュールがあればいいのですが…

何かいい方法はないでしょうか

解決

https://dev.classmethod.jp/server-side/ansible/systems-manager-to-execute-complex-ansible-playbooks/

こちらによると、任意に複雑な playbook(ディレクトリ構造)を ssm で実行できる様子なので、これで分岐処理も吸収できるのではないか、とおもっているのですが、いかがでしょうか?
(自分は、この機能を使ったことがないので、本当に可能かは把握していません)

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *