Ansible: 시스템 변수란?

0. 들어가며

이번 게시글에서는 Ansible 시스템 변수에 대해 설명하고, 어떤 변수가 있는지 간략하게 살펴보겠습니다.

시스템 변수

1. Ansible 변수란?

Ansible 변수는 대상 서버에서 작동하는 템플릿과 Playbook에서 사용되는 값으로 Playbook 실행 중에 동적으로 결정할 수 있는 값입니다. Ansible은 시스템 변수와 앤서블 변수라는 두 가지 유형의 변수를 사용합니다.

2. Ansible 시스템 변수

Ansible 시스템 변수는 Ansible 자체에서 사용되는 변수로, 플랫폼, 시스템 구성 및 기타 인프라 관련 요소에서 영향을 받습니다. 이러한 변수는 대부분 모듈이나 정의에서 제공됩니다. 따라서 이러한 변수는 서버 OS, 네트워크 구성 등에 의해 결정됩니다. 여기에는 현재 실행 중인 Ansible Playbook의 호스트 OS, 하드웨어 프로필, 네트워크 구성, 패키지 설치 등이 포함됩니다.

3. 앤서블 변수 사용하기

Ansible 변수를 사용하면 대상 서버 수, 포트 번호, 작업 변수 등 새로운 변수를 쉽게 추가할 수 있습니다. 변수를 사용하여 Playbook에서 일관성 있게 작업할 수 있습니다.

  • Playbook에서 변수 사용: Playbook의 변수는 YAML로 작성되며, 대상을 찾아 특정 환경 변수를 설정할 때 유용합니다.
  • 변수 파일 사용: 변수 파일을 이용하여 명시적으로 설정된 변수를 리소스파일에서 아우르며, 보안상 이득을 얻을 수 있습니다.
  • 커맨드 라인 인자 사용: Ansible 명령어 인터페이스(CLI)를 사용하여 Playbook 실행 시 변수를 전달할 수 있습니다.
  • Vault 사용: Ansible Vault를 사용하여 보안 정보 관리가 가능합니다.

4. Ansible 시스템 변수 종류

최상위 모듈 변수(ANSIBLE_MODULE_NAME)

Ansible은 다양한 모듈을 가지고 있습니다. 모듈들은 Ansible Playbook에서 제공되는 기능과 더불어 동적 변수를 제공합니다. 이때 사용되는 변수 중 하나가 최상위 모듈 변수입니다. 이 변수는 플레이북에서 실행되는 최상위 모듈의 이름을 가진 문자열입니다. 이 변수는 Ansible 모듈 코드 내에서 사용되며, 현재 실행 중인 Ansible 모듈명을 검색할 수 있습니다.

호스트 변수(ANSIBLE_HOSTS)

Ansible Playbook에서 호스트를 지정할 수 있습니다. 이때 호스트 변수를 사용하여 동적 호스트 목록을 생성할 수 있습니다. 이 때 호스트 변수는 동적 호스트 목록 생성 요구 사항에 따라 정의되며, 동적 호스트 목록은 실시간으로 업데이트됩니다. 이 변수는 playbook이 실행되는 호스트 그룹의 구성요소와 관련이 있습니다.

Task 실행결과(ANSIBLE_TASK_NAME, ANSIBLE_TASK_ACTION)

Task 실행 결과는 Ansible playbooks에서 매우 중요하게 사용됩니다. ANSIBLE_TASK_NAME 변수는 현재 실행 중인 Task의 이름을 저장합니다. ANSIBLE_TASK_ACTION 변수는 현재 실행 중인 Task의 액션을 저장합니다. 즉, 실행 중인 Task의 이름과 액션을 별도로 추적할 필요 없이 변수를 사용하여 항상 최신 정보를 얻을 수 있습니다.

재시도 횟수(ANSIBLE_RETRY_FILES_ENABLED, ANSIBLE_RETRY_FILES_SAVE_PATH)

Ansible Playbook 실행에서 일시적 오류가 발생할 수 있습니다. 이 때 Playbook을 다시 실행할 수 있도록 Ansible에서는 재시도를 허용합니다. 재시도 횟수를 지정하려면 ANSIBLE_RETRY_FILES_ENABLED 변수를 사용합니다. 이 변수를 True로 설정하면 재시도 파일이 저장되며, 이 파일은 재시도 때마다 업데이트됩니다. ANSIBLE_RETRY_FILES_SAVE_PATH 변수를 사용하여 재시도 파일의 경로를 지정할 수 있습니다.

기타 변수들

Ansible 시스템 변수에는 ANSIBLE_CONFIG, ANSIBLE_LOCAL_TEMP, ANSIBLE_REMOTE_USER, ANSIBLE_TRANSPORT, ANSIBLE_SSH_ARGS 등 다양한 변수가 있습니다. 각 변수는 Ansible Playbook 실행에 사용되며, 실행 중 상황에 따라 동적으로 변경됩니다.

5. Ansible 변수 관리 팁

변수를 적절하게 사용하면 모듈의 재사용성을 높일 수 있으며, Playbook 템플릿을 일관성있게 유지하기 위해 일반적인 값이나 변수를 분리하는 것이 좋습니다. 그리고 또 하나의 중요한 팁은 YAML 구문 규칙에 주의하는 것입니다. 들여쓰기 규칙과 대괄호 및 중괄호 사용에 필수적인 구문 규칙을 잘 이해하면 YAML 문서를 작성하는 데 도움이 됩니다.

6. 마무리

위에서는 Ansible 시스템 변수 중 일부를 살펴보았습니다. Ansible은 다양한 모듈 및 구성 파일을 지원하는 유연성 있는 IT 도구입니다. Ansible 시스템 변수를 올바르게 사용하면 Ansible Playbook 실행 중에 다양한 환경에서 유용할 수 있습니다. 사용 가능한 시스템 변수에 대한 이해를 바탕으로, 복잡한 인프라 관리에서의 대규모 코드 관리를 보다 쉽게 처리할 수 있습니다.