Ansible(AWX) 사용 가이드

leesj·2021년 9월 17일
0
post-thumbnail

Ansible(AWX) 의 사용법은 아래 Ansible tower 메뉴얼을 참조한다.
(AWX 는 별도의 메뉴얼이 없음)

Ansible 기본용어

  • Playbooks
    - Ansible 에서 가장 중요한 개념이며 Ansible 실행 기본 단위.
    - 자동화할 작업 리스트이다. YAML로 작성한다.

    • 하나 혹은 여러개의 roles 로 이루어짐
  • Control node
    - Ansible이 설치된 시스템이다, 즉 여러 호스트에 일괄적인 명령을 내리는 시스템이다

  • Managed nodes
    - Control node의 통제를 받는 시스템이다, 호스트 라고 한다

  • Inventory
    - 관리되는 노드의 목록 또는 호스트 파일이다. 즉 자동화할 대상을 의미 한다

  • task
    - 작업 단위 이다. 하나의 PLAYBOOK에 여러 TASK를 포함 시킬 수 있다

  • Project
    - 실행 할 PLAYBOOK의 파일 위치, Repository 이다

Ansible AWX 기능

  • Ansible playbook을 실행하기 위한 기능
  • 로깅과 로그인 통합
  • 권한 관리
  • 작업 연결(pipelining)
  • 일정에 따른 작업 수행(cron job 같은)

Ansible UI Menu

  • Credentials
    대상에 접근하기 위한 권한을 등록합니다.
    접근의 대상은 서버가 될 수도 있고, GitHub이 될 수도 있습니다. 일반적으로 서버 접근을 위한 SSH private key나 비밀번호를 등록해서 내용은 노출하지 않으면서 권한이 있는 사용자가 사용할 수 있도록 합니다.

  • Projects
    SCM, 즉 Git이나 SVN에서 보통 서비스 단위로 사용되는 프로젝트를 관리합니다.
    Git을 예로 들면, Git에 로그인하기 위한 credential을 만들고 프로젝트와 연결하여 Git에서 소스를 클론합니다.

  • Inventories
    작업할 대상 서버의 목록입니다. IP나 IP 룩업(lookup)이 가능한 호스트 명을 목록으로 관리합니다.
    서버를 하나하나 나열할 수도 있고, 그룹 단위로도 관리할 수 있으며, 그룹 안에 그룹을 포함할 수도 있습니다.
    서버 이름이 연속으로 이어지는 것과 같은 경우엔 패턴을 사용하여 등록할 수 있습니다(참고).

  • Templates
    Inventories 목록의 서버에 대해 credential로 접근 권한을 얻어서 프로젝트에 있는 playbook을 실행합니다.
    템플릿을 만들기 위해서는 앞서 말씀드린 3개 항목을 먼저 등록해야 하며, 순서대로 각 항목을 작성했다면 템플릿에서 해당 정보를 조합하여 동작합니다.

Gitlab 연동

  • awx 에서 프로젝트 배포를 핸들링 할 일이 있다면 SCM 과 연동이 필요하다
  • 혹은 gitlab 에서 Ansible playbook 을 관리한다면 등록하여 템플릿 생성시 활용
    (gitlab 의 playbook 을 사용하려면 아래와 같이 프로젝트 정보에서 Playbook directory 에 깃렙을 선택해주어야 한다)

Ansible AWX 작업절차(사용법)

  1. Credential 등록(Host 등록)
  2. 프로젝트 등록
  3. 인벤토리 등록
  4. 템플릿 작성

1. Host 등록

2. 프로젝트 등록

3. 인벤토리 등록

Templates 등록


그림과 같이 사전에 등록해둔 깃 프로젝트를 선택해서 깃 레포지토리에 저장된 playbook 을 활용 가능함
각 선택 항목 위에 PROMPT ON LAUNCH 체크 박스가 있습니다. 이 체크 박스를 선택하면 템플릿 실행 시 다시 선택할 수 있는 팝업 창이 나타납니다.

  • JOB TYPE
    - Run: 템플릿을 실행하면 실제 서버에 작업을 수행합니다.
    - Check: 실제 작업을 수행하지 않고 playbook을 테스트합니다.
  • VERBOSITY
    - 로그의 상세 정도를 변경합니다.
    - 1(Verbose) 정도가 적당합니다. 디버그를 위해서 3 또는 4를 선택하면 Ansible의 내부 수행 내용 전체가 출력.
  • FORKS
    - 인벤토리에 저장된 여러 대의 서버에 동시에 작업을 실행하므로 이때 몇 개의 프로세스를 구동해서 작업할 것인지 숫자로 입력합니다.
    - 프로세스가 많을수록 동시에 여러 대의 서버에 작업이 가능하므로 작업 시간이 빨라집니다.
    - 기본적으로 5 fork이며, 4 CPU 서버에서 30 fork 정도까지 가능합니다. CPU를 얼마나 점유하느냐는 playbook 작업의 복잡도에 따라 달라서 숫자를 정확하게 정의하는 건 어렵습니다. 적당한 숫자로 설정해서 AWX 서버의 CPU 사용량을 보면서 조정하면 됩니다.
    - 더 큰 FORKS를 설정하기 위해선 아래와 같은 방법을 사용합니다.
    - Scale up: 서버의 CPU 개수를 늘립니다.
    - Scale down: AWX 서버를 여러 개 설치하여 클러스터를 구성합니다.

템플릿 등록 후 Launch 버튼을 눌러 위와 같이 실행 결과를 확인 할 수 있다.

Ansible playbook

아래 링크에 몇가지 인기 있는 ansible playbook 샘플이 있으니 참고

playbook yml Lint

yml 작성 후 린트를 통해 모든 구문이 잘 작성 되었는지 확인 가능

$ ansible-lint verify-apache.yml

[403] Package installs should not use latest
verify-apache.yml:8
Task/Handler: ensure apache is at the latest version

참고자료

0개의 댓글