웹사이트 검색

Ansible Galaxy에서 역할을 생성 및 다운로드하고 사용하는 방법 - 9부


Ansible 시리즈의 9부에서는 Ansible Galaxy에서 역할을 생성 및 다운로드하고 사용하는 방법을 알아봅니다. Ansible은 복잡한 작업을 효율적으로 자동화하는 간단하면서도 효과적인 구성 관리 및 자동 배포 도구입니다. 단일 플레이북 파일을 사용하여 단일 제어 노드에서 수백 또는 수천 대의 서버를 관리할 수 있습니다.

그러나 서로 다른 환경에서 동일한 서비스를 관리하기 위한 플레이북을 작성하는 것은 상당히 번거로울 수 있으며 이로 인해 일반적으로 코드 중복이 발생합니다. 또한 모든 장치를 관리하는 데 복잡성이 가중될 수 있습니다.

역할이 나옵니다. Ansible에서 역할은 비슷한 작업을 수행해야 하는 여러 다른 인스턴스에서 사용할 수 있는 재사용 가능한 파일로 플레이북을 나누는 데 사용됩니다. 이를 통해 플레이북을 계속해서 다시 작성할 필요가 없어졌고 상당한 시간과 에너지가 절약되었습니다.

역할은 단순히 플레이북의 기능일 뿐입니다. 역할은 플레이북을 구성하는 거의 모든 요소(작업, 파일, 모듈, 변수, 템플릿)와 함께 제공됩니다. 또한 각 역할은 특정 작업이나 원하는 결과로 제한됩니다.

Ansible 역할 생성

Ansible에서 역할을 생성하려면 해당 구문을 사용하면 됩니다.

ansible-galaxy init role_name 

현재 작업 디렉터리에 여러 디렉터리와 파일이 생성됩니다. 이 경우 /etc/ansible/roles 디렉토리에 역할을 생성하기로 결정했습니다.

apache라는 역할을 만들어 보겠습니다.

ansible-galaxy init apache

tree 명령을 사용하면 역할의 디렉터리 구조를 한 눈에 볼 수 있습니다.

tree apache

보시다시피 여러 디렉터리가 생성되었지만 플레이북에서 모두 사용되는 것은 아닙니다.

이제 플레이북에서 새로 생성된 역할을 사용하려면 새 역할의 작업 디렉터리에 포함된 main.yml 파일에서 작업을 정의하세요.

/apache/tasks/main.yml

---

- hosts: database_servers

  tasks:

    - name: Install Apache2 on Ubuntu webserver
      apt:
         name: apache2
         state: installed

그런 다음 플레이북 파일을 생성하고 표시된 대로 역할을 호출합니다.

--- 
- hosts: webservers
  roles:
   - apache

Ansible Galaxy에서 역할 설치

역할Ansible Galaxy 플랫폼을 사용하여 Ansible 커뮤니티의 다른 사용자와 코드를 공유하는 데 중요한 역할을 합니다. Ansible Galaxy에서는 웹 서버 및 데이터베이스 설치, 모니터링 도구 등과 같은 다양한 작업을 수행하는 수천 개의 역할을 얻을 수 있습니다.

Ansible Galaxy는 플레이북에서 활용하고 작업을 간소화하는 데 도움이 될 수 있는 Ansible 역할의 데이터베이스 또는 저장소입니다.

Ansible Galaxy에서 역할을 검색하려면 간단히 명령어를 실행하세요.

ansible-galaxy search <role>

예를 들어 mysql이라는 역할을 검색하려면 실행합니다.

ansible-galaxy search mysql

보시다시피 검색 키워드 mysql과 일치하는 역할이 수백 개 있습니다. 그러나 모든 역할이 의도한 대로 수행되는 것은 아니므로 지침을 주의 깊게 읽어 보는 것이 좋습니다.

역할에 대한 추가 정보를 수집하려면 Ansible 명령을 실행하면 됩니다.

ansible-galaxy info 5KYDEV0P5.skydevops-mysql

이 예에서는 5KYDEV0P5.skydevops-mysql 역할을 설치하겠습니다.

ansible-galaxy install 5KYDEV0P5.skydevops-mysql

역할이 다운로드되어 /etc/ansible/roles에 있는 기본 역할 디렉터리로 추출됩니다.

그 후 역할은 플레이북에서 호출될 수 있습니다. 예를 들면 다음과 같습니다.

---
- name: Install MySQL server
  hosts: webservers

 roles:
    • 5KYDEV0P5.skydevops-mysql

이제 표시된 대로 Ansible 플레이북을 안전하게 실행할 수 있습니다.

ansible-playbook install_mysql.yml

또한 웹 브라우저를 통해 Ansible Galaxy를 방문하고 대시보드에 설명된 대로 다양한 작업을 수행하기 위한 역할을 수동으로 검색할 수 있습니다.

예를 들어 elasticsearch와 같은 모니터링 역할을 검색하려면 '모니터링' 옵션을 클릭하고 표시된 대로 역할을 검색합니다.

Ansible Galaxy를 사용하면 가장 인기 있고 가장 많이 다운로드된 역할을 나열하여 사용자가 최고의 역할을 더 쉽게 설치할 수 있습니다. 특정 역할에 대한 자세한 정보를 보려면 해당 역할을 클릭하면 됩니다.

예를 들어 플레이북에서는 둘 이상의 역할을 지정할 수도 있습니다.

---
- name: Install MySQL server
  hosts: webservers

 roles:
    • 5KYDEV0P5.skydevops-mysql
    • Aaronpederson.mariadb

설치된 역할을 나열하려면 간단히 실행하세요.

ansible-galaxy list

결론

역할을 사용하면 Ansible 플레이북을 매우 쉽게 재사용하고 공유할 수 있습니다. 이렇게 하면 사용자가 많은 중복 코드를 작성하는 데 많은 시간을 절약하고 다른 시스템 관리 작업에 사용되었을 너무 많은 시간을 소비하게 됩니다. 이것이 바로 이 가이드입니다.