Ansible Ad-Hoc 명령어

AnsibleBeginner
지금 연습하기

소개

이 랩에서는 Ansible ad-hoc 명령에 대해 배우게 됩니다. Ad-hoc 명령은 전체 플레이북 없이 실행할 수 있는 빠르고 일회성 작업입니다. 시스템 상태 확인, 파일 관리 또는 여러 서버에서 빠른 명령 실행과 같은 간단한 작업에 적합합니다. 이 랩을 마치면 ad-hoc 명령을 효과적으로 사용하는 방법을 이해하게 될 것입니다. 이는 Ansible 관리 환경에서 빠른 작업을 수행하고 문제 해결하는 데 매우 중요합니다.

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

Ansible Ad-hoc 명령어 구조 이해

Ansible ad-hoc 명령의 기본 구조를 이해하는 것부터 시작해 보겠습니다. 일반적인 구문은 다음과 같습니다.

ansible [pattern] -m [module] -a "[module options]"

여기서:

  • [pattern]은 대상이 될 인벤토리의 호스트 또는 호스트 그룹입니다.
  • -m [module]은 사용할 Ansible 모듈을 지정합니다.
  • -a "[module options]"는 모듈에 인수를 제공합니다.

명령을 실행하기 전에 적절한 인벤토리 파일이 있는지 확인해 보겠습니다. 인벤토리 파일을 생성하거나 편집합니다.

nano /home/labex/project/inventory

다음 내용을 추가합니다.

localhost ansible_connection=local

[webservers]
localhost

[dbservers]
localhost

저장하고 편집기를 종료합니다.

이제 인벤토리의 모든 호스트를 ping 하는 간단한 ad-hoc 명령을 시도해 보겠습니다.

ansible all -i /home/labex/project/inventory -m ping

다음과 유사한 출력을 볼 수 있습니다.

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

이 명령은 ping 모듈을 사용하여 인벤토리의 모든 호스트에 대한 연결을 확인합니다. all 키워드는 모든 호스트를 대상으로 합니다.

이 명령을 자세히 살펴보겠습니다.

  • all은 인벤토리의 모든 호스트를 대상으로 하는 패턴입니다.
  • -i /home/labex/project/inventory는 사용할 인벤토리 파일을 지정합니다.
  • -m ping은 Ansible 에 ping 모듈을 사용하도록 지시합니다.

Command 모듈로 명령어 실행

Ad-hoc 명령에서 가장 일반적으로 사용되는 모듈 중 하나는 command 모듈입니다. 이 모듈을 사용하면 대상 호스트에서 임의의 명령을 실행할 수 있습니다.

command 모듈을 사용하여 모든 호스트의 디스크 공간을 확인해 보겠습니다.

ansible all -i /home/labex/project/inventory -m command -a "df -h"

로컬 머신의 디스크 사용량을 보여주는 출력을 볼 수 있습니다.

이제 webservers 그룹에서만 명령을 실행해 보겠습니다.

ansible webservers -i /home/labex/project/inventory -m command -a "uptime"

이 명령은 webservers 그룹의 모든 호스트의 가동 시간을 표시합니다.

command 모듈은 기본 모듈이므로 이 모듈을 사용하는 경우 -m command를 생략할 수 있습니다. 예를 들어:

ansible dbservers -i /home/labex/project/inventory -a "free -m"

이 명령은 dbservers 그룹의 모든 호스트의 메모리 사용량을 표시합니다.

command 모듈은 셸 변수 또는 |, >, <, &와 같은 연산을 지원하지 않는다는 점을 기억하십시오. 이러한 경우에는 shell 모듈을 사용해야 합니다.

Ad-hoc 명령어에서 유용한 다른 모듈 사용

command 모듈은 다재다능하지만, Ansible 은 ad-hoc 명령에서 매우 유용할 수 있는 다른 많은 모듈을 제공합니다. 몇 가지를 살펴보겠습니다.

  1. copy 모듈:
    이 모듈은 로컬 머신에서 원격 호스트로 파일을 복사하는 데 사용됩니다. 간단한 파일을 생성하여 모든 호스트에 복사해 보겠습니다.

    echo "Hello from Ansible" > /home/labex/project/hello.txt
    ansible all -i /home/labex/project/inventory -m copy -a "src=/home/labex/project/hello.txt dest=/tmp/hello.txt"

    이 명령은 로컬 머신에서 hello.txt 파일을 모든 원격 호스트의 /tmp 디렉토리로 복사합니다.

  2. file 모듈:
    이 모듈은 파일 및 디렉토리를 관리하는 데 사용됩니다. 모든 webservers 에 디렉토리를 생성해 보겠습니다.

    ansible webservers -i /home/labex/project/inventory -m file -a "path=/tmp/test_dir state=directory mode=0755"

    이 명령은 모든 webservers 의 /tmp 디렉토리에 test_dir이라는 디렉토리를 생성하고 권한을 0755 로 설정합니다.

  3. setup 모듈:
    이 모듈은 원격 호스트에 대한 팩트 (fact) 를 수집하는 데 사용됩니다. 플레이북 시작 시 자동으로 실행되지만, ad-hoc 명령에서도 사용할 수 있습니다.

    ansible dbservers -i /home/labex/project/inventory -m setup

    이 명령은 dbservers 그룹의 호스트에 대한 많은 양의 정보를 표시합니다. 출력을 제한하려면 필터를 사용할 수 있습니다.

    ansible dbservers -i /home/labex/project/inventory -m setup -a "filter=ansible_distribution*"

    이렇게 하면 OS 배포와 관련된 팩트만 표시됩니다.

이러한 예제는 ad-hoc 명령을 사용하여 다양한 작업을 빠르게 수행하기 위해 서로 다른 모듈을 어떻게 사용할 수 있는지 보여줍니다.

요약

이 랩에서는 Ansible ad-hoc 명령에 대해 배우고 이를 효과적으로 사용하는 방법을 익혔습니다. 다음은 주요 내용입니다.

  1. Ad-hoc 명령은 전체 플레이북을 생성하지 않고 실행할 수 있는 빠르고 일회성 작업입니다.

  2. Ad-hoc 명령의 기본 구조는 다음과 같습니다.

    ansible [pattern] -m [module] -a "[module options]"
  3. ping 모듈은 호스트에 대한 연결을 확인하는 데 유용합니다.

  4. command 모듈을 사용하면 대상 호스트에서 임의의 명령을 실행할 수 있습니다. 이는 기본 모듈이므로 -m command를 생략할 수 있습니다.

  5. Ad-hoc 명령에 유용한 다른 모듈은 다음과 같습니다.

    • copy: 원격 호스트에 파일을 복사하기 위한 모듈
    • file: 파일 및 디렉토리를 관리하기 위한 모듈
    • setup: 원격 호스트에 대한 팩트 (fact) 를 수집하기 위한 모듈
  6. 인벤토리 파일에 정의된 그룹 이름을 사용하여 특정 호스트 그룹을 대상으로 지정할 수 있습니다.

  7. Ad-hoc 명령은 빠른 작업에 적합하지만, 더 복잡하거나 반복 가능한 작업의 경우 플레이북이 더 적합합니다.

Ad-hoc 명령은 인프라 전체에서 빠른 작업을 수행할 수 있는 Ansible 의 강력한 기능입니다. 문제 해결, 정보 수집 또는 빠른 변경을 수행하는 데 특히 유용합니다. 그러나 더 복잡하거나 반복 가능한 작업의 경우 플레이북을 사용하는 것이 좋습니다.

Ansible 을 계속 사용하면서 ad-hoc 명령에서 다양한 모듈을 사용하는 연습을 해보세요. Ansible 문서를 탐색하여 더 많은 모듈과 해당 사용법에 대해 알아보세요. Ad-hoc 명령은 강력하지만 플레이북의 멱등성 (idempotency) 과 재현성을 제공하지 않으므로 프로덕션 환경에서는 신중하게 사용하십시오.