ansible galaxy란?
여러 ansible 관리자와 사용자가 작성한 공용 ansible role 라이브러리이다. 수천개의 ansible role이 있고, ansible 사용자가 관리 작업을 수행하는 데 도움이 되는 role을 식별할 수 있는 검색 가능한 데이터베이스가 있다. 또한 ansible-galaxy 명령어는 자신의 git에서 연동하도록 할 수도 있다. 도커허브랑 거의 동일하다고 볼 수 있다.
https://www.galaxy.ansible.com
* ansible-galaxy 문서 찾기
https://galaxy.ansible.com/docs
- 위 링크에서 ansible-galaxy를 사용하는 방법을 자세하게 확인할 수 있다.
ansible galaxy에서 role 검색하기
ansible galaxy 검색인터페이스에서 키워드 검색은 role의 README파일, 컨텐츠 이름, 컨텐츠 설명에 있는 단어/구문을 검색하여 결과를 출력한다. ansible galaxy의 search 항목에서 아래와 같이 role을 검색할 수 있다.
- 여기서 각 role이 다운로드 된 수, 해당 role의 별점, 버전, 태그 등의 여러정보를 확인할 수 있다.
- 검색 시 filters와 type를 사용하여 원하는 대로 상세하게 검색할 수 있다.
* 태그
- 인기있는 태그와 사용하는 플랫폼을 검색하는데 사용한다. 참고로 EL은 RHEL(CentOS)이다.
# 참고 : 점수 관련
- 아래와 같이 5점 만점에 3.8점이라는 점수를 확인할 수 있는데, 이러한 점수를 매기는 방식이 따로 존재하며 아래 링크를 통해 확인할 수 있다.
https://galaxy.ansible.com/docs/contributing/content_scoring.html
ansible galaxy CLI 명령어
1. ansible-galaxy search
* 설명
- role을 검색하는 명령이다.
* 옵션
--author
--platforms
--galaxy-tags
* 예시
ansible-galaxy search 'redis' --platforms 'EL' --galaxy-tags 'security''
2. ansible-galaxy info
* 설명
role에 대한 세부 정보를 표시한다. 이러한 정보는 meta/main.yml 및 해당 github 레포지토리 등 여러 소스에서 정보를 가져온다.
* 예시
ansible-galaxy info juju4.misp
3. ansible-galaxy install
* 설명
role을 다운받아 설치한다. 기본적으로 ansible에 설정된 기본 path인 ~/.ansible/roles 디렉토리에 설치된다.
* 옵션
-p 디렉토리 : role을 설치할 위치를 기본값이 아닌 특정 디렉토리 지정
-c : ignore certs : SSL certificate를 무시한다. 특정 보안설정 없이 설치하려면 이 옵션을 꼭 추가해야 한다.
# 참고 : 설치 시 에러 뜨는 경우
- 이런 에러가 뜨는 경우, -c 옵션을 사용하면 된다.
- 그래도 안되는 경우, yum install ca-certificates 패키지를 설치 또는 최신업데이트를 수행한다.
* 예시
ansible-galaxy install geerlingguy.redis -p ~/.ansible/roles/ -c
- 다운로드 후 tree 명령으로 전체 내역을 간단하게 훑어볼 수 있다.
# 참고 : 다운받은 role 참조하기
- 다운받은 role도 일반 role과 마찬가지로 참조할 때 이름으로 참조하면 된다.
---
- name: use downloaded role
hosts: web.example.com
roles:
- geerlingguy.redis
- 이 role의 이름은 4번에서 설명할 ansible-galaxy list로 확인하면 되며, 참조경로는 이 예시의 yaml 파일의 위치를 기준으로 지정하거나 절대경로를 지정하면 된다.
4. ansible-galaxy list
* 설명
- 설치된 roles의 리스트를 보여준다.
- roles가 저장되는 default 다운로드 위치 3곳에 설치된 roles를 보여준다. 기본 위치는 다음과 같다.
- /home/유저명/.ansible/roles (가장 우선되는 기본경로)
- /usr/share/ansible/roles
- /etc/ansible/roles
-c 옵션으로 경로를 지정하는 경우, 해당 경로에 설치된 roles를 보여준다.
* 옵션
-p 디렉토리 : role을 검색할 위치를 기본값이 아닌 특정 디렉토리 지정
* 예시
<기본 명령 사용>
<-c 옵션으로 특정 경로 지정>
5. ansible-galaxy remove
* 설명
- 설치된 role을 삭제한다.
* 옵션
-p 디렉토리 : role을 삭제할 위치를 기본값이 아닌 특정 디렉토리 지정
* 예시
ansible-galaxy remove votum.php -p /tmp/roles
만약 /tmp/roles,와 /home/devops/.ansible/roles 두군데에 동일한 votum.php가 설치되었다면, 위의 예시대로 한다면 /tmp/roles의 votum.php가 삭제된다. 만약 아무런 옵션이 없다면 /home/devops/.ansible/roles에 설치된 votum.php가 삭제된다.
Redhat에서 제공하는 role 사용하기
Redhat에서는 특정 서비스에 대한 role을 공식적으로 제공한다. 이러한 role은 무료로 사용할 수 없으며, 해당 role을 제공하는 서브스크립션을 구매해야만 다운로드 및 사용할 수 있다. 이러한 role은 일반적인 다른 role보다 훨씬 안정적이며 범용적으로 사용할 수 있고, 사후 지원도 받을 수 있다. (서브스크립션을 구매하고 기술지원 관련해서도 구매를 해야 할 것으로 보임)
Redhat 에서 제공하는 것이지만 실제로는 CentOS에서도 사용할 수 있다. 다운로드하고 사용하는것은 가능하지만 사후지원은 받을 수 없다.
* redhat에서 제공하는 role 종류
redhat에서 제공하는 role은 다음과 같다. 이 role은 extra 채널에서 rhel-system-roles 패키지에 포함된다.
이름 |
상태 |
설명 |
rhel-system-roles.kdump |
전체 지원 |
kdump 충돌 복구 서비스를 구성한다. |
rhel-system-roles.network |
전체 지원 |
네트워크 인터페이스 구성 |
rhel-system-roles.selinux |
전체 지원 |
selinux 모드,파일 및 포트 컨텍스트, 부울 설정 및 selinux 사용자를 포함하여 selinux 사용자 지정을 구성하고 관리한다. |
rhel-system-roles.timesync |
전체 지원 |
네트워크 시간 프로토콜 또는 정밀 시간 프로토콜을 사용하여 시간 동기화를 구성한다. |
rhel-system-roles.postfix |
기술 프리뷰 |
postfix 서비스를 사용하여 각 호스트를 메일 전송 에이전트로 구성한다. |
rhel-system-roles.firewall |
개발중 |
호스트의 방화벽을 구성 |
rhel-system-roles.tuned |
개발중 |
시스템 성능을 조정하도록 조정된 서비스를 구성한다. |
예를들어, RHEL7은 chronyd를 쓰고 RHEL6은 ntpd를 쓰는데, 이런 구분 상관없이 rhel-system-roles.timesync role을 사용하면 네트워크 타임 서비스를 간단하게 구축할 수 있다.
# 참고 : role의 상태 정보
- 전체지원 : 안정적임. 향후 버전에서 동일한 role 변수를 계속 쓴다. 시스템 role 변경으로 인한 playbook의 리팩토링은 최소화된다.
- 기술 프리뷰 : 향후 다른 role 변수를 쓸 수도 있다. 업데이트에 따라 playbook에서 리팩토링을 해야할 수 있다.
- 개발중 : 현재 개발중인 role
* redhat에서 제공하는 role 설치하기
<Redhat 에서 설치하기>
-아래 명령은 서브스크립션을 구매했다고 가정한 것이다.
subscription-manager repos --eanble rhel-7-server-extras-rpms
yum install rhel-system-roles
<CentOS 에서 설치하기>
yum install rhel-system-roles
두 명령 모두 설치된 roel은 /usr/share/ansible/roles에 저장된다.
* redhat에서 제공하는 role의 문서 보기
해당 문서는 "/usr/share/doc/rhel-system-roles-버전" 경로에서 확인할 수 있다. 각 role 에 대한 디렉토리가 있으며 README 파일, 그리고 예제파일 등이 있으므로 참고할 수 있다.
참고링크
ansible-galaxy 설명서
https://docs.ansible.com/ansible/2.7/reference_appendices/galaxy.html
'Ansible' 카테고리의 다른 글
20장. playbook의 문제 해결하기 (0) | 2021.03.15 |
---|---|
17장. ansible role (0) | 2021.03.12 |
16장. playbook에 파일 포함하기 및 가져오기 (0) | 2021.02.27 |
15장. 병렬 구성 작업 (1) | 2021.02.27 |
14장. ansible에서 jinja2 사용하기 (0) | 2021.02.26 |