LoginSignup
4
8

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-05-26

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等ディレクトリを分けて管理している場合は使えないのではないのかな・・・。
そうなると簡単なものしか使えないような気がしますので、そのあたりが改善されればって感じです。

4
8
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
4
8