Ansible Local Action 모듈

AnsibleBeginner
지금 연습하기

소개

Ansible Local Action 모듈 랩에 오신 것을 환영합니다! 이 랩에서는 Ansible Local Action 모듈의 사용법을 자세히 살펴보겠습니다. Local Action 모듈을 사용하면 Ansible 이 실행되는 제어 머신에서 작업을 실행할 수 있습니다. 이는 셸 명령을 실행하거나 스크립트를 실행하는 등 로컬에서 작업을 수행해야 할 때 유용합니다.

시작해 봅시다!

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

간단한 명령 로컬 실행

이 단계에서는 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 및 해당 모듈을 계속 탐색하십시오.

자동화를 즐기세요!