Help us understand the problem. What is going on with this article?

EC2 Systems Manager で Ansibleを実行する【cloudpack大阪ブログ】

More than 1 year has passed since last update.

cloudpack大阪の佐々木です。
EC2 Systems Manager で Ansibleが直接実行できるらしいのでやってみました。
https://aws.amazon.com/jp/blogs/mt/running-ansible-playbooks-using-ec2-systems-manager-run-command-and-state-manager/

2017/05/26時点では、東京リージョンで AWS-RunAnsiblePlaybook のドキュメントが見つからないので、対応していないのかと思います。今回は、us-east-1で実行しています。

EC2の作成

OSはAmazonLinux(amzn-ami-hvm-2017.03.0.20170417-x86_64-gp2 (ami-c58c1dd3))でやってみます。
SSMが実行できるIAM Roleを適用します。
起動後にSSMエージェントと、ansibleのインストールが必要ですが、どうせならログインせずにやりたいので、UserDataをこんな感じにしときます。

#!/bin/sh
cd /tmp
curl https://amazon-ssm-$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//g').s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o amazon-ssm-agent.rpm
yum install -y amazon-ssm-agent.rpm
/usr/bin/pip install ansible

インストールに成功していれば、マネージドインスタンスの一覧に表示されているかと思います。

Kobito.PjHL2B.png

関連付けの作成

一覧から該当の実行するインスタンスをチェックし、関連付けの作成 をクリックします。

ドキュメントを選択 から AWS-RunAnsiblePlaybook を選択します。
Kobito.6Ll3yi.png

インスタンス選択し、パラメーターのところのにAnsibleの設定をします。
Playbook に下記のような実行したいAnsibleのPlaybookを入力します。

- hosts: all
  become: true

  tasks:
  - name: yum install for Apache Web Server
    yum: name=httpd24

  - name: Start and Enable to Apache
    service: name=httpd state=started enabled=yes

ログを残す場合は S3 への書き込み にチェックを入れ、バケット情報を入力します。
Kobito.Ujt33a.png

Playbookurlhttps://〜s3://〜 でyamlファイルを指定して、外部のPlaybookを読み込むこともできます。

関連付けの作成 をクリックします。

実行

しばらくすると、自動的に実行されます。ステータスが 成功 になっていれば適用されていると思います。

Kobito.T8jToh.png

S3にログを保存しているとこんなログが残ります。

ansible 2.3.0.0
  config file = 
  configured module search path = Default w/o overrides
  python version = 2.7.12 (default, Sep  1 2016, 22:14:00) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)]

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [localhost]

TASK [yum install for Apache Web Server] ***************************************
changed: [localhost]

TASK [Start and Enable to Apache] **********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=2    unreachable=0    failed=0   

まとめ

今までもUserDataやRunCommandで実行していましたが、yamlを書くだけでできるので、簡単に利用できるようになっています。
ただ、外部から取り込む場合、1ファイルで完結するPlaybookしか読み込めないようなので、Role等ディレクトリを分けて管理している場合は使えないのではないのかな・・・。
そうなると簡単なものしか使えないような気がしますので、そのあたりが改善されればって感じです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした