--limit/-l
다양한 이유/제한 사항으로 인해 인벤토리 파일에 새 그룹을 만들 수 없으며 호스트를 지정하는 데 사용해야 합니다 .
나는 다음과 같은 일을 하라는 지시를 받았습니다.
ansible-playbook -i /path/to/my/inventory/file.ini -l server.1.com server.2.com my-playbook.yml --check --diff
오류가 발생했습니다.
ERROR! the playbook: server.2.com could not be found
로부터앤서블 문서이 주제에 대해 나는 제한하려는 모든 호스트를 나열하기 위해 별도의 파일을 사용할 수 있다는 것을 발견했습니다. 다음과 같은 것 :
ansible-playbook -i /path/to/my/inventory/file.ini -l @list-to-limit.txt my-playbook.yml
그러나 추가 파일을 만들지 않고 모든 작업을 인라인으로 수행해야 합니다.
답변1
똑같다일반적인 패턴명령줄 옵션에 적용됩니다 -l
. 메모 인용:
"쉼표(,) 또는 콜론(:)을 사용하여 호스트 목록을 구분할 수 있습니다. 범위 및 IPv6 주소를 처리할 때는 쉼표를 사용하는 것이 좋습니다."
예를 들어, 인벤토리가 주어지면
shell> cat hosts
[webservers]
test_01
test_02
[dbservers]
test_03
test_04
그리고 플레이북
shell> cat pb.yml
- hosts: all
tasks:
- debug:
var: inventory_hostname
다양한 호스트의 패턴이 예상대로 작동합니다. 예를 들어
- 웹 서버의 모든 호스트와 DB 서버의 모든 호스트
shell> ansible-playbook -i hosts pb.yml -l webservers:dbservers
...
ok: [test_01] =>
inventory_hostname: test_01
ok: [test_02] =>
inventory_hostname: test_02
ok: [test_03] =>
inventory_hostname: test_03
ok: [test_04] =>
inventory_hostname: test_04
- 호스트 test_02 및 test_04
shell> ansible-playbook -i hosts pb.yml -l test_02,test_04
ok: [test_02] =>
inventory_hostname: test_02
ok: [test_04] =>
inventory_hostname: test_04
- test_02 호스트를 제외한 웹서버의 모든 호스트
shell> ansible-playbook -i hosts pb.yml -l webservers:\!test_02
inventory_hostname: test_01
답변2
수행 방법은 다음과 같습니다.
ansible-playbook ./your_playbook --limit "host1,host2,host3,host4"
답변3
나는 멍하니 있었고 그 당시에는 모든 호스트를 인라인으로 나열하면 ansible-playbook
이해할 수 있다고 완전히 생각했습니다.
-l
명령에서 각 호스트 이름 앞에 간단히 추가하여 문제를 해결했습니다 .
(나는 이것이 '모범 사례'가 아닐 수도 있다는 것을 알고 있습니다)
내 마지막 명령은 다음과 같습니다.
ansible-playbook -i /path/to/my/inventory/file.ini -l server.1.com -l server.2.com my-playbook.yml --check --diff