소개
Ansible 는 원격 시스템 관리를 간소화하는 강력한 IT 자동화 도구입니다. 이 튜토리얼에서는 대상 호스트에서 명령어를 실행할 수 있는 Ansible 명령 모듈을 살펴볼 것입니다. 명령 실행의 기본 사항과 Ansible 워크플로우를 향상시키는 고급 기술을 배울 것입니다.
Ansible 는 원격 시스템 관리를 간소화하는 강력한 IT 자동화 도구입니다. 이 튜토리얼에서는 대상 호스트에서 명령어를 실행할 수 있는 Ansible 명령 모듈을 살펴볼 것입니다. 명령 실행의 기본 사항과 Ansible 워크플로우를 향상시키는 고급 기술을 배울 것입니다.
Ansible 는 여러 호스트에 걸쳐 인프라를 관리하고 구성할 수 있는 강력한 오픈소스 자동화 도구입니다. Ansible 명령 모듈은 원격 호스트에서 임의의 명령을 실행할 수 있도록 하는 Ansible 의 핵심 모듈 중 하나입니다.
Ansible 명령 모듈은 대상 호스트에서 명령을 실행하는 간단하고 직관적인 방법을 제공합니다. 원격 시스템에서 쉘 명령, 스크립트 또는 다른 실행 파일을 실행할 수 있습니다. 이 모듈은 임시 작업을 수행하거나 문제를 해결하거나 인프라에서 사용자 지정 명령을 실행해야 할 때 특히 유용합니다.
Ansible 명령 모듈을 사용하려면 Ansible 플레이북 또는 임시 명령에서 command 매개변수를 정의해야 합니다. command 매개변수는 원격 호스트에서 실행할 명령을 지정합니다. 예를 들어:
- name: 원격 호스트에서 명령 실행
command: uptime
register: uptime_result
become: yes
이 예제에서 command 매개변수는 uptime으로 설정되어 원격 호스트에서 uptime 명령을 실행합니다. register 매개변수는 명령의 출력을 가져오는 데 사용되고, become 매개변수는 (필요한 경우) 높은 권한으로 명령을 실행하도록 yes로 설정됩니다.
Ansible 명령 모듈은 다음과 같은 다양한 옵션도 지원합니다.
creates: 명령 실행 전에 파일이 존재해야 함을 지정합니다.removes: 명령 실행 전에 파일이 존재해서는 안 됨을 지정합니다.chdir: 명령 실행 전에 현재 작업 디렉터리를 지정된 경로로 변경합니다.stdin: 지정된 문자열을 표준 입력을 통해 명령에 전달합니다.warn: 중요한 파일을 변경할 수 있는 명령에 대한 경고를 표시할지 여부를 제어합니다.Ansible 명령 모듈을 이해함으로써 원격 호스트에서 명령을 효율적으로 실행하고, 반복적인 작업을 자동화하며, 인프라 관리 프로세스를 간소화할 수 있습니다.
Ansible 명령 모듈을 사용하여 원격 호스트에서 명령을 실행하려면 다음과 같은 기본 구문을 사용할 수 있습니다.
- name: 원격 호스트에서 명령 실행
command: <command>
register: <result_variable>
become: yes
이 예제에서 <command>는 원격 호스트에서 실행할 실제 명령이고, <result_variable>은 명령의 출력을 저장할 변수입니다. become 매개변수는 (필요한 경우) 높은 권한으로 명령을 실행하도록 yes로 설정됩니다.
예를 들어, 원격 호스트의 시스템 실행 시간을 확인하려면 다음과 같이 작성합니다.
- name: 원격 호스트의 시스템 실행 시간 확인
command: uptime
register: uptime_result
become: yes
uptime 명령의 출력은 uptime_result 변수에 저장되며, 이후 플레이북이나 임시 명령에서 사용할 수 있습니다.
기본적으로 Ansible 명령 모듈은 실행된 명령이 0 이 아닌 종료 코드를 반환하면 실패합니다. ignore_errors 매개변수를 사용하여 명령 오류를 처리할 수 있습니다.
- name: 원격 호스트에서 명령 실행
command: <command>
register: <result_variable>
ignore_errors: yes
이렇게 하면 명령이 실패하더라도 플레이북이 계속 실행될 수 있습니다.
이전 예제와 같이 register 매개변수를 사용하여 명령의 출력을 캡처할 수 있습니다. 출력은 지정된 변수에 저장되며, 이후 플레이북이나 임시 명령에서 사용할 수 있습니다.
예를 들어, uptime 명령의 출력을 캡처하고 출력하려면 다음과 같이 작성합니다.
- name: 원격 호스트의 시스템 실행 시간 확인
command: uptime
register: uptime_result
become: yes
- name: 시스템 실행 시간 출력
debug:
msg: "{{ uptime_result.stdout }}"
이렇게 하면 uptime 명령의 출력이 콘솔에 표시됩니다.
Ansible 명령 모듈을 사용하여 원격 호스트에서 명령을 실행하는 기본 사항을 이해함으로써 인프라의 다양한 작업을 효과적으로 자동화할 수 있습니다.
때로는 특정 조건이 충족될 때만 명령을 실행해야 할 수 있습니다. Ansible 플레이북에서 조건부 명령 실행을 위해 when 절을 사용할 수 있습니다.
- name: 조건 충족 시 명령 실행
command: <command>
when: <condition>
register: <result_variable>
become: yes
이 예제에서 <command>는 <condition>이 참일 경우에만 실행됩니다.
예를 들어, 시스템의 사용 가능 메모리가 20% 미만일 때만 free 명령을 실행하려면 다음과 같이 작성합니다.
- name: 사용 가능 메모리 확인
command: free -m
register: memory_result
become: yes
- name: 사용 가능 메모리가 20% 미만일 경우 명령 실행
command: <실행할_명령>
when: (memory_result.stdout_lines[1].split()[3]|int / memory_result.stdout_lines[1].split()[1]|int * 100) < 20
register: <result_variable>
become: yes
단일 작업에서 여러 명령을 실행하기 위해 루프를 사용할 수도 있습니다. Ansible 명령 모듈은 이를 위해 loop 매개변수를 지원합니다.
- name: 여러 명령 실행
command: "{{ item }}"
loop:
- <command1>
- <command2>
- <command3>
register: <result_variable>
become: yes
이 예제에서 지정된 명령 (<command1>, <command2>, <command3>) 은 하나씩 실행되고, 출력은 <result_variable>에 저장됩니다.
기본적으로 Ansible 은 명령이 완료될 때까지 무한정 기다립니다. 그러나 timeout 매개변수를 사용하여 명령 실행에 대한 시간 제한을 설정할 수 있습니다.
- name: 시간 제한 설정 후 명령 실행
command: <command>
timeout: 60
register: <result_variable>
become: yes
이 예제에서 명령은 완료하는 데 60 초 이상 걸리면 종료됩니다.
이러한 고급 명령 실행 기법을 숙달함으로써 Ansible 자동화 기능을 더욱 향상시키고 인프라 관리에서 다양한 시나리오를 처리할 수 있습니다.
이 Ansible 튜토리얼은 원격 호스트에서 명령을 실행하기 위한 command 모듈 사용에 대한 포괄적인 가이드를 제공했습니다. 기본 사항과 고급 기법을 이해함으로써 Ansible 의 기능을 활용하여 IT 운영을 간소화하고 인프라 전반의 효율성을 높일 수 있습니다.