Ansible Local Action 모듈

AnsibleBeginner
지금 연습하기

소개

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라는 셸 스크립트를 인수 57로 실행합니다.
  • register: 플레이북에서 나중에 사용하기 위해 명령의 출력을 result 변수에 등록합니다.
  • debug: 디버깅 정보를 출력하는 데 사용되는 Ansible 모듈입니다.
  • var: 디버깅할 변수를 지정하는 debug 모듈의 매개변수입니다. 이 경우 이전 작업에서 실행된 명령의 표준 출력을 포함하는 result.stdout입니다.

요약하면, 이 플레이북은 제어 머신에서 로컬로 인수 57을 사용하여 셸 스크립트 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 및 해당 모듈을 계속 탐색하십시오.

자동화를 즐기세요!