Post

Ansible(5)

Ansible(5)

대형 프로젝트 관리

호스트 패턴으로 호스트 선택

  1. 애드혹 명령(Ad-Hoc 명령)
    • ansible ‘*.example.com’ -m ping
  2. 플레이북

    1
    2
    3
    
     - name: Test
       hosts: 'ansible*, 192.168.10.*'
       tasks: ....
    

파일 포함하기 및 가져오기

  1. import_playbook
1
2
3
4
- name: Playbook
  import_playbook: hosts.yml
  vars:
    ....
  1. import_tasks, include_tasks

import_tasks: 테스크 가져오기

  • 같은 점: 조건문과 함께 사용하는 것이 가능하다.(반복문과 함께 사용할 수 없다.)
  • 다른 점: 플레이북 사용시 포함된 작업 내용을 나열하지 않는다.

include_tasks: 태스크 포함하기

  • 같은 점: 조건문과 함께 사용하는 것이 가능하다.(반복문과 함께 사용할 수 없다.)
  • 다른 점: 플레이북 실행시 포함된 작업 내용을 나열한다.
1
2
3
4
5
6
7
8
9
10
11
- name: Playbook
  hosts: ...
  tasks:
  - name: task1
    include_tasks: task/task1.yml
    vars:
    ....
  - name: task2
    import_task: task/task2.yml
    vars:
    ....

역할 관리

역할 구조

  • 개요
    • 역할(role): 미리 만들어진 플레이북의 묶음, 배포하는 단위
    • 역할 사용
      • 직접 생성하는 경우(ansible-galaxy init ROLE)
      • rhel-system-roles 패키지의 역할을 사용하는 경우
      • Ansible Galaxy 웹사이트에서 역할 받아서 사용하는 방법
  • 역할 디렉토리 구조
    • 예시

      image

  • 역할 사용하기
    vi playbook.yml
1
2
3
4
5
6
7
8
9
10
- hosts: web1
  roles:
  - role1
  - role2
#or
- hosts: web1
  roles:
  - role: role1
  - {role: role1, var1: value1, var2: vaule2}

  • 역할 종속성 정의
    vi meta/main.yml
1
2
dependencies:
- {role: apache, port: 8080}
  • 실행 순서 제어
    vi playbook.yml
1
2
3
4
5
6
7
8
9
- name: playbook
  hosts: web1
  pre_tasks:

  roles:

  tasks:

  post_tasks:
  • include_role
    vi playbook.yml
1
2
3
4
- name: playbook
  hosts: web1
  tasks:

시스템 역할

  1. rhel-system-roles 패키지
    • yum -y install rhel-system-roles
    • 예시 역할
      • rhel-system-roles.kdump
      • rhel-system-roles.network
      • rhel-system-roles.selinux
      • rhel-system-roles.timesync
    • 예제 보는 법
      • more /usr/share/doc/rhel-system-roles/{해당폴더}/README.md

        역할 생성

        • 역할 생성 단계
  2. 디렉토리 구조
    • mkdir -p roles && cd roles
    • ansible-galaxy init myrole
    • 불필요한 디렉토리 삭제
    • 필요한 디렉토리 및 파일 생성(ex: lib, bin)
  3. ansible.cfg(roles_path) 설정
    • vi ansible.cfg

      [defaults]
      roles_path=roles:/usr/share/ansible/roles:/etc/ansible/roles

  4. 역할 생성
    • README.md 파일 »»> cd roles/myrole ; vi README.md
    • meta/main.yml »»» vi meta/main.yml
    • 테스트 파일  »»>
    • 변수 파일
    • 정적 파일
    • 동적 파일(템플릿)
    • 기타 필요한 핸들러
    • vi roles/myrole/tasks/main.yml

앤서블 갤럭시

This post is licensed under CC BY 4.0 by the author.