AWS-ApplyAnsiblePlaybooks SSM ドキュメントを使用したEC2の設定
概要
EC2起動後の設定でAnsibleを使用する場合は、AWS-ApplyAnsiblePlaybooks SSM ドキュメントを使用することが可能です。
これを使用することで、自分でAnsibleをインストールしなくてもEC2を設定可能になります。
今回は起動済みのEC2に対してGUIからAWS-ApplyAnsiblePlaybooks SSM ドキュメントの使用を設定して、EC2にDocker Composeをインストールしてみます。
AnsibleのPlaybookはS3に格納したものを使用します。
環境
sh-4.2$ uname -r
5.10.144-127.601.amzn2.x86_64
sh-4.2$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Ansible Playbook
ファイル構成
playbook.ymlでinstall_dockercomposeロールを実行するだけの構成です。
% tree -aF
./
└── install_dockercompose/
├── playbook.yml
└── roles/
└── install_dockercompose/
└── tasks/
└── main.yml
4 directories, 2 files
install_dockercompose/playbook.yml
---
- hosts: localhost
name: Install docker compose playbook
roles:
- install_dockercompose
install_dockercompose/roles/install_dockercompose/tasks/main.yml
---
- name: Enable docker repo
ansible.builtin.shell: 'amazon-linux-extras enable docker'
when: ansible_facts['os_family'] == 'RedHat' and ansible_facts['distribution'] == 'Amazon'
- name: Install docker
ansible.builtin.yum:
name: docker-20.10.17
state: present
- name: Start & enable docker
ansible.builtin.systemd:
name: docker
state: started
enabled: yes
- name: Install docker-compose
ansible.builtin.get_url:
url: https://github.com/docker/compose/releases/download/v2.12.1/docker-compose-linux-x86_64
dest: /usr/local/bin/docker-compose
mode: '0755'
zipの中身
PlaybookをS3に格納してAWS-ApplyAnsiblePlaybooks SSM ドキュメントを使用する場合は、ディレクトリ構造を保ったままS3に格納するか、zipで格納する必要があります。
今回はzipで格納するため、以下のzipを作りました。
% zipinfo -1 ansible.zip
install_dockercompose/
install_dockercompose/roles/
install_dockercompose/roles/install_dockercompose/
install_dockercompose/roles/install_dockercompose/tasks/
install_dockercompose/roles/install_dockercompose/tasks/main.yml
install_dockercompose/playbook.yml
S3に格納したzip
Playbookのzipは作成したS3バケットの直下に格納しました。
% aws s3 ls s3://test2012322143248299264
2022-10-23 20:14:13 1677 ansible.zip
AWS-ApplyAnsiblePlaybooks SSM ドキュメントの実行
事前確認
実行前にEC2にdocker-composeコマンドがインストールされていないことを確認しました。
sh-4.2$ uptime
11:37:37 up 8 min, 0 users, load average: 0.00, 0.01, 0.00
sh-4.2$ ls -l /usr/local/bin/
total 0
EC2のIAMロール
SSMとS3を使用するために以下のポリシーを許可したロールをEC2に設定しています。
- AmazonSSMManagedInstanceCore
- AmazonS3ReadOnlyAccess
マネコンでの設定
AWS Systems ManagerのRun Commandから設定をします。
コマンドドキュメントでansibleで検索し、AWS-ApplyAnsiblePlaybooksを選択します。
コマンドのパラメータで以下を設定します。
- Source Type:S3
- Source Info:以下のようなS3に格納したzipのパス
{"path":"https://test2012322143248299264.s3.ap-northeast-1.amazonaws.com/ansible.zip"}
- Playbook File:zip解凍後のPlaybookのパス
install_dockercompose/playbook.yml
ターゲットでは、「インスタンスを手動で選択する」を選択し、Playbookを実行するEC2を選択します。
設定を終えたら画面右下にある実行ボタンをクリックして、コマンドが正常終了するのを待ちます。
ステータスはおそらく自動では変わらないので、適当なタイミングで更新ボタンを押す必要がありそうです。
実行後の確認
OSにログインし、docker-composeコマンドが利用可能となっていることが確認できました。
sh-4.2$ ls -l /usr/local/bin/
total 43896
-rwxr-xr-x 1 root root 44949504 Oct 23 11:57 docker-compose
sh-4.2$ docker-compose -v
Docker Compose version v2.12.1
参考
Discussion