0418 Ansible 6

파일 지우기

ansible DD -m file -a "state=absent path=/etc/hosts"

반복문

▪ 반복적인 작업을 효율적으로 하기 위해 사용
▪ loop 구문을 사용해서 각 모듈(작업)에 대한 반복 작업 수행 가능
▪ 변수 값을 변경하면서 모듈을 실행 ( item 이라는 이름의 변수 사용 )
▪ 조건식과는 다르게 block 단위의 반복작업은 불가
▪ 조건식과 함께 사용하는 방식은 가능
▪ loop 구문에서 변수 선언 시에 리스트 형태 구성도 가능
▪ 중첩 기능도 제공
반복문에 변수 참조
▪ loop에 목록 변수를 직접 지정할 수 있음
▪ apt, yum 등 패키지 관련 모듈과 같은 매개 변수에 목록을 직접 전달할 수 있는 모듈이 있음
▪ apt 모듈은 설치 패키지 이름을 리스트로 받을 수 있기 때문에 굳이 반복문을 사용할 필요가
없음
▪ 오히려 반복문을 사용하면 작업을 완료하는 시간이 오래 걸릴 수 밖에 없음
• 사전 목록 반복

  • 변수를 참조하는 방법은 item.<dict_key> 형식으로 참조

• 중첩 목록 반복

  • 여러 개의 목록을 결합(데카르트 곱) 가능

• 인벤토리 반복

  • 인벤토리 호스트 목록을 반복문을 통해 가져올 수 있음

조건문

▪ Ansible은 조건문을 사용하여 특정 조건을 충족하는 작업 또는 플레이를 실행할 수 있음
▪ 서비스를 설치하거나 구성하기 전에 관리 호스트에서 사용 가능한 메모리를 확인하는데
조건문을 사용할 수 있음
▪ 조건문을 사용하여 관리자가 관리 호스트간의 차이점을 구분하고 충족된 조건을 기반으로 하여
기능 역활을 할당할 수 있음
▪ 플레이북 변수, 등록된 변수 및 Ansible 팩트는 모두 조건문을 사용하여 테스트할 수 있음.
▪ Ansible은 조건부에서 테스트 및 필터 를 사용
▪ 테스트는 표현식을 평가하고 True 와 False를 반환
▪ 조건문에서 변수를 참조 하더라도 변수명에 {{ }} 이중 중괄호를 사용하지 않음

조건문 작업 구문

  • 작업 또는 플레이북을 실행하면 Ansible은 호스트에 대한 테스트를 평가
  • 테스트를 통과한(True 값을 반환하는) 모든 호스트에서 Ansible은 해당 작업을 실행
  • SELinux가 활성화된 시스템에서만 해당 작업이 실행

fact 변수 기반의 조건문

  • fact를 기반으로 작업을 실행하거나 건너뛰고 싶은 경우가 있음
  • fact는 IP 주소, 운영 체제, 파일 시스템 상태 등을 포함한 개별 호스트의 속성
  • fact에 기반한 조건문 사용 경우
    • 운영 체제가 특정 버전인 경우에만 특정 패키지를 설치할 수 있음
    • 내부 IP 주소가 있는 호스트에서 방화벽 구성을 건너뛸 수 있음
    • 파일 시스템이 가득 차면 정리 작업을 수행할 수 있음

register 변수에 따른 조건

▪ 플레이북에서 이전 작업의 결과에 따라 작업을 실행하거나 건너뛰고 싶을 때가 있음
▪ 이전 작업에서 업그레이드한 후 서비스를 구성할 수 있음
▪ register 변수를 기반으로 조건을 생성하는 요건

  • 이전 작업의 결과를 변수로 등록
  • register 변수를 기반으로 조건부 테스트를 생성
    ▪ register 변수에는 항상 변수를 생성한 작업의 상태와 작업이 생성한 모든 출력이 포함
    ▪ register는 템플릿과 액션 라인뿐만 아니라 조건문에서도 사용 가능

변수 기반 조건부

▪ 플레이북이나 인벤토리에 정의된 변수를 기반으로 조건문을 생성
▪ 조건문에는 부울 입력이 필요하기 때문에(조건을 트리거하려면 테스트가 True로 평가되어야 함)
'yes', 'on', '1' 또는 'true'와 같은 콘텐츠가 포함된 문자열 변수와 같은 부울이 아닌 변수에 필터를
적용

변수 기반 조건부

▪ 플레이북이나 인벤토리에 정의된 변수를 기반으로 조건문을 생성
▪ 조건문에는 부울 입력이 필요하기 때문에(조건을 트리거하려면 테스트가 True로 평가되어야 함)
'yes', 'on', '1' 또는 'true'와 같은 콘텐츠가 포함된 문자열 변수와 같은 부울이 아닌 변수에 필터를
적용

템플릿

▪ Asible에서 파일을 관리하는 가장 강력한 방법은 템플릿을 만드는 것
▪ 템플릿을 사용하면 가능한 변수와 팩트를 사용하여 파일이 배포될 때 관리 호스트에 대해
자동으로 사용자 정의되는 템플릿 구성 파일을 작성할 수 있음

Jinja2

▪ Python의 매우 강력하고 고급 템플릿 언어
▪ 매우 빠르고 안정적이며 동적 데이터를 생성하는 데 널리 사용
▪ 텍스트 기반 템플릿 언어이므로 모든 마크업과 소스 코드를 생성하는 데 사용할 수 있음

▪ 제어 구조(루프 및 조건문)
▪ 템플릿 상속
▪ 사용자 정의 필터 지원
▪ 풍부한 내장 필터 세트
▪ 구성 가능한 구문

▪ Python의 매우 강력하고 고급 템플릿 언어
▪ 매우 빠르고 안정적이며 동적 데이터를 생성하는 데 널리 사용
▪ 텍스트 기반 템플릿 언어이므로 모든 마크업과 소스 코드를 생성하는 데 사용할 수 있음

▪ 제어 구조(루프 및 조건문)
▪ 템플릿 상속
▪ 사용자 정의 필터 지원
▪ 풍부한 내장 필터 세트
▪ 구성 가능한 구문

▪ {{ . . . . }}

  • 이중 중괄호는 템플릿 파일에서 널리 사용되는 태그이며 변수를 포함하고 궁극적으로 코드
    실행 중에 값을 인쇄하는 데 사용
    ▪ {% . . . . %}
  • 루프 및 if-else 문과 같은 제어 문에 주로 사용
    ▪ {# . . . . #}
  • 작업을 설명하는 주석

좋은 웹페이지 즐겨찾기