소개
Ansible Local Action 모듈 랩에 오신 것을 환영합니다! 이 랩에서는 Ansible Local Action 모듈의 사용법을 자세히 살펴보겠습니다. Local Action 모듈을 사용하면 Ansible 이 실행되는 제어 머신에서 작업을 실행할 수 있습니다. 이는 셸 명령을 실행하거나 스크립트를 실행하는 등 로컬에서 작업을 수행해야 할 때 유용합니다.
시작해 봅시다!
Ansible Local Action 모듈 랩에 오신 것을 환영합니다! 이 랩에서는 Ansible Local Action 모듈의 사용법을 자세히 살펴보겠습니다. Local Action 모듈을 사용하면 Ansible 이 실행되는 제어 머신에서 작업을 실행할 수 있습니다. 이는 셸 명령을 실행하거나 스크립트를 실행하는 등 로컬에서 작업을 수행해야 할 때 유용합니다.
시작해 봅시다!
이 단계에서는 Ansible Local Action 모듈을 사용하여 제어 머신에서 간단한 명령을 실행하는 방법을 배우게 됩니다. 이를 통해 모듈의 기본 사용법과 구문을 이해할 수 있습니다.
먼저, /home/labex/project/execute_local_command.yml 파일을 완성하십시오.
플레이북 파일에 다음 내용을 추가합니다.
- name: Executing a Simple Command Locally
gather_facts: false
hosts: localhost
tasks:
- name: Print a message locally
local_action:
module: command
cmd: echo "Hello, World!"
register: result
- name: Debug the output
debug:
var: result.stdout
gather_facts: Ansible 이 대상 호스트에 대한 팩트를 수집할지 여부를 지정합니다. 이 경우 false로 설정되어 팩트가 수집되지 않음을 의미합니다.hosts: 플레이북을 실행할 대상 호스트를 지정합니다. 이 경우 대상 호스트가 localhost이므로 플레이북은 로컬 호스트에서 실행됩니다.tasks: 실행할 작업 목록입니다.local_action: Ansible 이 실행되는 제어 머신에서 작업을 로컬로 수행해야 함을 나타냅니다.module: 작업에 사용할 Ansible 모듈을 지정합니다. 이 경우 command 모듈입니다.cmd: 실행할 실제 명령입니다. 이 경우 셸 명령 echo "Hello, World!"로, "Hello, World!" 메시지를 콘솔에 출력합니다.register: 플레이북에서 나중에 사용하기 위해 명령의 출력을 result 변수에 등록합니다.debug: 디버깅 정보를 출력하는 데 사용되는 Ansible 모듈입니다.var: 디버깅할 변수를 지정하는 debug 모듈의 매개변수입니다. 이 경우 이전 작업에서 실행된 명령의 표준 출력을 포함하는 result.stdout입니다.요약하면, 이 플레이북은 제어 머신에서 로컬로 간단한 명령 echo "Hello, World!"를 실행하고, 출력을 등록한 다음, debug 모듈을 사용하여 출력을 인쇄합니다.
그런 다음 Ansible 플레이북에서 명령의 출력을 표시합니다.
ansible-playbook /home/labex/project/execute_local_command.yml
예시 출력:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Print a message locally] *************************************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, World!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
여기서 "result.stdout": "Hello, World!"는 echo "Hello, World!" 명령의 출력입니다.
이 단계에서는 변수 치환을 통합하여 Local Action 모듈에 대한 이해를 높일 것입니다. 이를 통해 플레이북에 정의된 변수를 기반으로 실행되는 명령을 동적으로 변경할 수 있습니다.
먼저, /home/labex/project/execute_command_with_variable_substitution.yml 파일을 완성하십시오.
플레이북 파일에 다음 내용을 추가합니다.
- name: Executing a Command with Variable Substitution
gather_facts: false
hosts: localhost
vars:
message: "Hello, Ansible!"
tasks:
- name: Print a message with variable substitution
local_action:
module: command
cmd: echo "{{ message }}"
register: result
- name: Debug the output
debug:
var: result.stdout
vars: 이 섹션은 변수를 정의하는 데 사용됩니다. 이 플레이북에서는 message라는 변수를 "Hello, Ansible!" 값으로 정의합니다.local_action: Ansible 이 실행되는 제어 머신에서 작업을 로컬로 수행해야 함을 나타냅니다.module: 작업에 사용할 Ansible 모듈을 지정합니다. 이 경우 command 모듈입니다.cmd: 실행할 실제 명령입니다. 이 경우 셸 명령 echo "{{ message }}"이며, 여기서 {{ message }}는 이전에 정의된 message 변수의 값으로 대체됩니다.register: 플레이북에서 나중에 사용하기 위해 명령의 출력을 result 변수에 등록합니다.debug: 디버깅 정보를 출력하는 데 사용되는 Ansible 모듈입니다.var: 디버깅할 변수를 지정하는 debug 모듈의 매개변수입니다. 이 경우 이전 작업에서 실행된 명령의 표준 출력을 포함하는 result.stdout입니다.요약하면, 이 플레이북은 제어 머신에서 로컬로 echo "{{ message }}" 명령을 실행하며, 여기서 {{ message }}는 vars 섹션에 정의된 message 변수의 값으로 대체됩니다. 명령의 출력을 등록한 다음, debug 모듈을 사용하여 출력을 인쇄합니다.
그런 다음 Ansible 플레이북에서 명령의 출력을 표시합니다.
ansible-playbook /home/labex/project/execute_command_with_variable_substitution.yml
예시 출력:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Print a message with variable substitution] ******************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, Ansible!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
여기서 "result.stdout": "Hello, Ansible!"는 echo "{{ message }}" 명령의 출력입니다.
이 단계에서는 Ansible Local Action 모듈의 보다 복잡한 사용법을 탐구합니다. 로컬에서 셸 스크립트를 실행하고 스크립트에 인수를 전달합니다.
먼저, /home/labex/project/execute_complex_local_action.yml 파일을 완성하십시오.
플레이북 파일에 다음 내용을 추가합니다.
- name: Executing a Complex Local Action
gather_facts: false
hosts: localhost
tasks:
- name: Execute a shell script with arguments
local_action:
module: shell
cmd: ./script.sh 5 7
register: result
- name: Debug the output
debug:
var: result.stdout
local_action: Ansible 이 실행되는 제어 머신에서 작업을 로컬로 수행해야 함을 나타냅니다.module: 작업에 사용할 Ansible 모듈을 지정합니다. 이 경우 shell 모듈입니다.cmd: 실행할 실제 셸 명령입니다. 이 경우 ./script.sh 5 7로, script.sh라는 셸 스크립트를 인수 5와 7로 실행합니다.register: 플레이북에서 나중에 사용하기 위해 명령의 출력을 result 변수에 등록합니다.debug: 디버깅 정보를 출력하는 데 사용되는 Ansible 모듈입니다.var: 디버깅할 변수를 지정하는 debug 모듈의 매개변수입니다. 이 경우 이전 작업에서 실행된 명령의 표준 출력을 포함하는 result.stdout입니다.요약하면, 이 플레이북은 제어 머신에서 로컬로 인수 5와 7을 사용하여 셸 스크립트 script.sh를 실행합니다. 스크립트의 출력을 등록한 다음, debug 모듈을 사용하여 출력을 인쇄합니다.
팁: 이 셸 스크립트는
/home/labex/project/디렉토리에 있으며script.sh라고 합니다. 이 스크립트의 기능은 두 매개변수의 합을 계산하는 것입니다.
그런 다음 Ansible 플레이북에서 명령의 출력을 표시합니다.
ansible-playbook /home/labex/project/execute_complex_local_action.yml
예시 출력:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Execute a shell script with arguments] ***********************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "The sum of 5 and 7 is 12."
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
여기서 "result.stdout": "The sum of 5 and 7 is 12."는 ./script.sh 5 7 스크립트의 출력입니다.
Ansible Local Action Module Lab 을 완료하신 것을 축하드립니다! 이 랩에서는 Ansible Local Action 모듈을 사용하여 명령과 스크립트를 로컬로 실행하는 방법을 배웠습니다. 간단한 명령 실행부터 시작하여 변수 치환을 통합하고 인수를 사용하여 복잡한 셸 스크립트를 실행하는 단계까지 진행했습니다.
이 랩을 완료함으로써 제어 머신에서 수행해야 하는 작업에 Local Action 모듈을 활용하는 귀중한 경험을 얻었습니다. 자동화 기능을 더욱 향상시키기 위해 Ansible 및 해당 모듈을 계속 탐색하십시오.
자동화를 즐기세요!