ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ansible) Playbook 2편
    Cloud/Ansible 2022. 9. 25. 21:16

    Playbook 제어

    • 순차 구조 - 명령이 기술된 순서로 순차적으로 수행하는 구조
    • 선택 구조 - 조건에 따라 명령의 실행순서를 변경할 수 있는 구조
    • 반복 구조 - 특정 명령을 일정 횟수동안 반복해서 수행하는 구조


    반복문

    1. Task를 반복해서 동작시킬때 반복문을 이용한다.
    2. 모듈의 키워드로 사용하며 with_*loop 키워드를 사용한다.
      • with_item
      • with_nested
      • with_sequence
    3. 패키지 관련 모듈은 반복문을 사용하지 않는것을 권장한다.
    4. 반복문에서 제공되는 목록을 참조하는 변수명은 항상 item을 사용한다.

    목록을 참조하는 변수명은 item을 사용한다.



    조건문(선택문)

      1.  Task가 특정조건에만 작업을 수행하도록 구성할때 이용한다.
      2. 조건문에 변수를 참조할때는 "{{변수명}}" 형식을 따르지 않고 바로 변수명 으로 쓴다.
      3. when 키워드를 사용하며, 조건에 대한 표현식은 테스트문 또는 필터로 사용한다
      4. 테스트문
        • 테스트문은 표현식을 평가하고 True/False로 변환한다.
        • when을 사용해서 변수 테스트를 한다.
      5. 필터
        • when: 변수|(자료형) <조건 연산자> 값
        • 변수 | (자료형) 표현은 변수형 변환을 의미하고, | 다음에는 형변환을 원하는 자료형을 기입한다.
        • 조건 연산자로는 >, <, >=, <=, ==, != 사용할 수 있다.

     



    Include

    1. playbook에서 다른 playbook들을 읽어들일 때 사용한다.
    2. playbook을 모듈화 시켜 관리의 편의성을 높인다.
    3. import
      • role, task, playbook 등을 playbook에 정적으로 포함시킨다.
      • Ansible은 읽어들인 파일이나 role등을 최상위 playbook에서 작업이 실행되기 전에 처리한다. 따라서, import된 playbook은 최상위 playbook이 되어 다른 task에 영향을 받지 않는다.
      • import_playbook: myPlaybook.yml(import할 파일명) 형식으로 쓴다.
    4. include
      • role, task, playbook 등을 playbook에 동적으로 포함시킨다.
      • include된 콘텐츠는 최상위 playbook의 작업결과에 영향을 받는다.
      • 최상위 playbook의 실행 결과에따라 실행되거나 안될수도 있다.
      • include: myPlaybook.yml(include할 파일명) 형식으로 쓴다.


    Handler

    • handler는 함수(function)와 비슷한 성격으로 단위기능을 실행한다.
    • 반복되는 동작(task)에 대하여 별도의 handler로 정의해둔다.
    • notify 키워드를 사용해서  task에서 호출한다.
    • handler는 이름으로 호출되므로, notify에 기술된 handler이름이 실제 handler섹션에 정의된 handler이름과 같아야 한다.
    • 동일한 handler에 대해서 여러번 호출되어도 한번만 실행된다.
    • 변수 사용시 include_var 모듈을 사용한다.
    • listen key를 handler task에 부여하면 notify 할때 listen에 부여한 이름으로 호출하면 listen key가 정의된 handler가 모두 동작한다.

     


    Roles

    1. roles는 include의 확장개념으로, 역할에따라 roles폴더에 필요한 파일들을 별도로 생성하여 사용한다.
    2. role에서 다른 role을 포함할 수 있고, 변수 전달도 가능하다.
    3. 역할에 따른 role을 작성하여 관리함으로서, 관리의 편의성과 재사용성을 높일수 있다.
    4. role 관리방법
      • 1. roles 이름의 폴더 생성
      • 2. roles 폴더 아래에 폴더 생성 (files, handlers, tasks, templates, vars, meta)
      • 3. playbook에 적용하고 싶은 role을 roles섹션에 추가하여 사용한다.

     

     



    'Cloud > Ansible' 카테고리의 다른 글

    Ansible) Ansible 환경 구성해보기 4편  (1) 2022.09.23
    Ansible) Playbook 1편  (0) 2022.09.22
    Ansible) YAML  (1) 2022.09.21
    Ansible) Ansible 환경 구성해보기 3편  (0) 2022.09.21
    Ansible) 모듈  (1) 2022.09.21

    댓글

Designed by Tistory.