EC2 Systems Manager에서 Ansible Playbook 실행
도쿄 리전에서도 AWS-RunAnsiblePlaybook을 사용할 수있게 된 것 같습니다.
EC2 System Manager에서 Ansible Playbook을 실행해 보십시오.
Running Ansible Playbooks using EC2 Systems Manager Run Command and State Manager
다음 작업을 수행합니다.
· 특정 인스턴스에 Ansible 설치
· Playbook을 사용하여 Apache 설치 및 시작
내용으로서는 초보자용이 됩니다.
전제 조건
SSM 에이전트 설치가 완료되었습니다.
Amazon EC2 Simple Systems Manager(SSM) 에이전트 설치
대상 인스턴스에 Ansible 설치
EC2의 SYSTEMS MANAGER SERVICE > "명령 실행"에서 "AWS-RunShellScript"를 선택합니다.
대상 인스턴스를 선택합니다. 시도에 여러 인스턴스를 선택해 봅니다.
Commands에 다음을 입력하고 RUN을 선택합니다.
다음은 Amazon Linux용입니다.
CentOS 또는 Ubuntu의 경우 yum or apt를 사용하여 Ansible을 설치하십시오.
Commands
/usr/bin/pip install ansible
ansible --version
여러 인스턴스를 지정하면 인스턴스마다 동일한 명령 ID의 기록이 표시됩니다.
인스턴스별로 표시되므로 여러 인스턴스에서 RunCommand를 실행한 경우에도
실행 결과를 각 인스턴스 단위로 확인할 수 있습니다.
또한 출력 결과에 pip의 버전에 관해서 ERROR가 나와 있습니다만 Ansible의 인스톨은 되어 있습니다.
----------ERROR-------
You are using pip version 6.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
덧붙여서 pip 의 갱신도 동시에 실시하는 경우는 이하의 설정으로 커멘드를 실행하면 OK입니다.
Commands
pip install --upgrade pip
pip install ansible
ansible --version
Ansible Playbook 실행
EC2의 SYSTEMS MANAGER SERVICE > 명령 실행에서 AWS-RunAnsiblePlaybook을 선택합니다.
Playbook에 다음 YAML을 입력합니다.
HTTP로 얻을 수 있는 장소에 playbook이 있는 경우는 「playbookurl」에 URL을 입력해도 OK입니다.
Playbook
- hosts: all
become: true
tasks:
- name: gather ec2 facts
action: ec2_facts
- name: install apache on redhat or centos instances
yum: name=httpd state=present
when: ansible_os_family == "RedHat"
- name: install apache on debian or ubuntu instances
apt: name=apache2 state=present
when: ansible_os_family == "Debian"
- name: enable apache on startup and start service for redhat or centos
service: name=httpd enabled=yes state=started
when: ansible_os_family == "RedHat"
- name: enable apache on startup and start service for debian or ubuntu
service: name=apache2 enabled=yes state=started
when: ansible_os_family == "Debian"
출력의 표시를 확인하면 아래와 같은 결과가 표시되어 Ansible이 무사히 실행되고 있는 것을 알 수 있습니다.
실행 결과 확인
인스턴스에 SSH로 로그인하여 로그와 웹 페이지가 표시되는지 확인했습니다.
/var/log/messages
Jun 28 05:20:20 ip-10-0-13-43 ansible-setup: Invoked with filter=* gather_subset=['all'] fact_path=/etc/ansible/facts.d gather_timeout=10
Jun 28 05:20:21 ip-10-0-13-43 ansible-ec2_facts: Invoked with url_password=NOT_LOGGING_PARAMETER force=False use_proxy=True url=None force_basic_auth=False http_agent=ansible-httpget url_username=None validate_certs=True
Jun 28 05:20:22 ip-10-0-13-43 ansible-yum: Invoked with name=['httpd'] list=None install_repoquery=True conf_file=None disable_gpg_check=False state=present disablerepo=None update_cache=False enablerepo=None exclude=None validate_certs=True installroot=/ skip_broken=False
Jun 28 05:20:25 ip-10-0-13-43 yum[23264]: Installed: apr-1.5.1-1.12.amzn1.x86_64
Jun 28 05:20:25 ip-10-0-13-43 yum[23264]: Installed: apr-util-1.4.1-4.17.amzn1.x86_64
Jun 28 05:20:25 ip-10-0-13-43 yum[23264]: Installed: httpd-tools-2.2.32-1.9.amzn1.x86_64
Jun 28 05:20:25 ip-10-0-13-43 yum[23264]: Installed: apr-util-ldap-1.4.1-4.17.amzn1.x86_64
Jun 28 05:20:25 ip-10-0-13-43 yum[23264]: Installed: httpd-2.2.32-1.9.amzn1.x86_64
Jun 28 05:20:27 ip-10-0-13-43 ansible-service: Invoked with name=httpd pattern=None enabled=True state=started sleep=None arguments= runlevel=default
이번에는 Private Subnet에 인스턴스를 만들어 버렸기 때문에 확인할 수 있으면 좋다고 생각lynx를 사용해 확인했습니다.
일단, Ansible이 실행될 수 있다는 것을 확인할 수 있었기 때문에 다음에 awslogs의 설정 등을 해 보자.
Reference
이 문제에 관하여(EC2 Systems Manager에서 Ansible Playbook 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MatYoshr/items/32d82b3815d2ea4e715d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)