Ad-Hoc은 Ad-hoc 명령을 빠르게 실행하기 위해 Ansible에서 제공하는 방법입니다. 이를 통해 사용자는 플레이북을 사용하지 않고 명령줄에서 직접 Ansible 모듈을 실행할 수 있습니다. Ad-Hoc은 Ansible의 일부 기능을 빠르게 테스트하고 일부 속성 정보를 일시적으로 변경하거나 쿼리하는 등의 용도로 사용할 수 있습니다.
예: (모든 호스트의 호스트 파일을 보기 위해 임시 임시 명령을 사용하는 방법을 보여줍니다.)
ansible all -m shell -a "cat /etc/hosts"
이 Ad-Hoc 명령은 Ansible을 사용하여 'date' 명령을 실행하고, 모든 원격 서버의 시스템 시간을 보고, 지정된 사용자 이름 'username'으로 원격 호스트에 연결합니다.
Ad-Hoc의 구문은 매우 간단하며 기본 형식은 다음과 같습니다.
이 명령의 기본 형식은 다음과 같습니다.
ansible <hosts> -m <module> -a "<arguments>"
안에:
<hosts>
: 명령을 실행해야 하는 대상 호스트 또는 호스트 그룹입니다.-m <module>
: 사용해야 하는 Ansible 모듈, 예를 들어 여기에서는 원격 호스트에서 쉘 명령을 실행하는 데 사용되는 쉘 모듈이 사용됩니다.-a "<arguments>"
: 모듈에 전달된 매개변수, 여기서 "cat /etc/hosts" 명령은 원격 호스트에서 호스트 파일의 내용을 보는 데 사용됩니다.
cat /etc/hosts
따라서 이 명령은 호스트 파일의 내용을 보기 위해 모든 대상 호스트에서 명령을 실행하는 것을 의미합니다 . 이 예에서는 셸 모듈이 사용됩니다. 즉, Ansible이 원격 호스트에서 명령을 실행하고 그 결과를 제어 시스템에 반환합니다.
shell
원격 호스트에서 실행되는 명령이 셸에서 실행되어 일부 보안 위험이 발생할 수 있으므로 모듈을 사용할 때 주의해야 합니다 . 원격 호스트에서 명령을 실행해야 하는 경우 더 안전한 command
모듈을 권장합니다.
위의 Ad-Hoc 명령은 실제로 Ansible 코어 라이브러리에서 제공하는 Ansible 모듈을 실행합니다. Ad-Hoc 명령을 실행할 때 Ansible은 플레이북을 동적으로 생성하여 원격 호스트로 보냅니다. 이 플레이북에는 실행할 모듈과 관련 매개변수가 포함되어 있습니다.
Ansible은 먼저 로컬 Ansible.cfg 구성 파일 및 인벤토리 파일을 확인하고 이러한 파일의 내용에 따라 사용할 호스트, 사용자 이름, 암호 및 기타 정보를 결정한 다음 광고 매개변수에 따라 플레이북을 동적으로 생성합니다. -Hoc 명령. 마지막으로 Ansible은 SSH를 통해 대상 호스트에 연결하고 플레이북에 정의된 명령 또는 작업을 실행하고 결과를 로컬 시스템에 반환합니다.
이것이 Ansible Ad-Hoc의 기본 원칙입니다. 플레이북을 작성하지 않고도 짧은 시간 안에 명령, 검사, 디버깅 등을 빠르게 실행할 수 있다는 장점이 있다. 그러나 플레이북을 사용하는 것보다 확장성과 유연성이 떨어집니다.