事前作業
SSM
EC2にSSMエージェントを入れ、EC2をSSMの管理下に置く。SSM マネージドインスタンス から見えてればOK
参考リンク
https://dev.classmethod.jp/articles/troubleshooting-ssm-session-manager-configuration/
S3バケット作成
AnsibleのテンプレートをzipにしてS3に配置するため。
Ansibleテンプレート
MacでもEC2でもいいので作成する。
[root@ip-10-1-1-87 .ansible]# cat apache.yml
- hosts: all
become: yes
tasks:
- name: Apacheインストール
yum: name=httpd state=latest
- name: Apacheの起動
service: name=httpd state=started enabled=yes
- name: Apacheの起動確認
shell: ps aux | grep httpd
register: ps_result
changed_when: false
- debug: var=ps_result.stdout_lines
when: ps_result
zipコマンドでzip化し、
zipファイルをS3にアップロードする
S3パスは控えておく
今回はyamlファイル1個ですが、AnsibleのRoleなどディレクトリごと固めてもOK
[root@ip-10-1-1-87 .ansible]# zip ansible.zip apache.yml
updating: apache.yml (deflated 33%)
[root@ip-10-1-1-87 .ansible]# ls
ansible.zip apache.yml
[root@ip-10-1-1-87 .ansible]# aws s3 cp ansible.zip s3://xxx/ansible/
SSMでRun Command
SSM->Run Command->[Run command]ボタン の順でクリック
コマンドドキュメント"AWS-ApplyAnsiblePlaybooks"をクリック
[コマンドを実行する]をクリック
コマンドパラメータで以下を入力や選択し、[実行]をクリック
-
Source Type:S3
-
Source Info:
{
"path":"https://xxx.s3-ap-northeast-1.amazonaws.com/ansible/ansible.zip"
} -
Playbook File:apache.yml
-
ターゲット:該当インスタンス(タグやリソースグループ指定も可能)(便利)
確認
ターゲットEC2にhttpdがちょい前にインストールと起動がされてる
[ec2-user@ip-10-1-1-165 ~]$ sudo systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-11-17 04:35:02 UTC; 27s ago
Docs: man:httpd.service(8)
Main PID: 2963 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec: 0 B/sec"
CGroup: /system.slice/httpd.service
├─2963 /usr/sbin/httpd -DFOREGROUND
├─2965 /usr/sbin/httpd -DFOREGROUND
├─2966 /usr/sbin/httpd -DFOREGROUND
├─2967 /usr/sbin/httpd -DFOREGROUND
├─2968 /usr/sbin/httpd -DFOREGROUND
└─2969 /usr/sbin/httpd -DFOREGROUND