知り合いが、構築をIaCで行っているそうで、関連知識を深めようと思います。
ログと監視の準備も OS 構築段階で済ませることが多いです。ログローテーション設定、CloudWatch Agent や Fluent Bit のインストール、メトリクス収集設定などをここで入れておくと、アプリケーション構築前から可観測性を確保できます。これも Role として切り出しておくと、後から追加・変更しやすくなります。
実装のイメージとしては、Playbook で対象ホストを指定し、順番に Role を適用します。例えば「base → users → security → logging」という流れです。Ansible は冪等性を前提としているため、途中で失敗しても修正後に再実行すれば、あるべき状態に収束します。これがシェルスクリプトとの大きな違いです。
Terraform との組み合わせも実務では定番です。Terraform で EC2 を作成し、その後 Ansible を実行して OS 構築を行います。AMI を自前で作る場合は Packer + Ansible という構成になり、起動直後からすでに「構築済みOS」を使うこともできます。このあたりは台数や起動頻度によって選択します。