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의 설정 등을 해 보자.

좋은 웹페이지 즐겨찾기