7
1

More than 1 year has passed since last update.

SSMのRun CommandでAnsibleを実行してみる

Posted at

はじめに

Terraformの勉強を始めたので備忘録を兼ねて行ったことを投稿しようと思います。
以下の4つの投稿内容を実施した上で今回の内容を行います。
TerraformをインストールしてTerraformでAWS上にEC2作ってみる
TerraformでIAMを設定してEC2にセッションマネージャー経由で接続してみる
Terraformでセキュリティグループを設定してEC2にhttp接続する
TerraformでS3とIAMロールを構築してEC2からS3にアクセスしてみる

IAMロールの変更

まず、SSMのRun CommandでAnsibleが実行できるようにEC2にアタッチしているIAMロールにポリシーAmazonEC2RoleforSSMを追加します。

ポリシーを定義

dataを使ってAWSのAmazonEC2RoleforSSMのポリシーを定義します。

iam.tf
# ssmのrun commandでansible実行用に
data "aws_iam_policy" "ec2_role_ssm" {
  name = "AmazonEC2RoleforSSM"
}

ポリシーをロールにアタッチ

下記で定義したロールに先程定義したポリシーをアタッチします。

※このロールは下記でEC2に付与されています

Terraformのplan applyを実行

IAMロールの変更を反映する為、Terraform を実行します

terraform plan
terraform apply

Ansible Playbookの作成

今回実行するAnsible Playbookを作成します。
nginxをインストールして起動するだけです。

今回作成したPlaybookのディレクトリ構造
test_ansible/
  roles/
    web/
      tasks/
        main.yml
  site.yml
site.yml
---
- hosts: localhost
  become: yes
  roles: 
    - web
main.yml
---
- name: nginx install
  command: amazon-linux-extras install nginx1

- name: start nginx
  command: systemctl start nginx

S3に作成したAnsible Playbookをアップロード

今回はS3にアップロードしたPlaybookを使って行います。

以下で作成したS3のバケットにPlaybookをzip圧縮したzipファイルをアップロードします。
https://qiita.com/kakita-yzrh/items/acc23e9aa1880fec3e38#s3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B

SSM Run Command を実行

実行 コマンドの設定

実行するコマンドのタイプ選択

AWS コンソールから
AWS Systems Manager > Run Commandを選択し、ansibleで検索します。
AWS-ApplyAnsiblePlaybooksを選択します。

Source Typeの選択

S3を選択します。

Source Infoの設定

アップロードしたPlaybookのS3のパスを設定します。

{"path":"https://(S3バケット名).s3.ap-northeast-1.amazonaws.com/test_ansible.zip"}

Playbook Fileの設定

test_ansible/site.yml

ターゲットを選択

ansibleを実行するEC2を選択します。
インスタンスを手動で選択するを選ぶとTerraformで作成したEC2インスタンスが表示されるので、選択します。

出力オプション

コマンドの結果を出力します。
作成したS3のバケットを選択します。
出力が不要であれば全てのチェックを外します。

実行

一番下の実行ボタンを押して実行します。

実行結果の確認

問題なければ成功と表示されます。
失敗と表示された場合はログを確認してください。

nginxの動作確認

問題なければ、EC2のパブリックIPをもとにhttp接続するとnginxのページが表示されます。

作成したリソースの削除

terraformのdestroyを実行して、AWS上のリソースを削除します。

terraform destroy

さいごに

今回はSSMのRun Commandを使ってAnsibleを実行してみました。
Run Commandで出力されるエラー時の内容がわかりづらくてはまってしまいました。
Ansible Playbookの書き方もまだまだ慣れていないので、次回はより複雑なAnsible Playbookを実行してみようと思います。

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1