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


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
で実行できる様子なので、これで分岐処理も吸収できるのではないか、とおもっているのですが、いかがでしょうか？  
(自分は、この機能を使ったことがないので、本当に可能かは把握していません)




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

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

