ansible-playbook --둘 이상의 호스트를 제한하시겠습니까?

ansible-playbook --둘 이상의 호스트를 제한하시겠습니까?

--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

다양한 호스트의 패턴이 예상대로 작동합니다. 예를 들어

  1. 웹 서버의 모든 호스트와 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
  1. 호스트 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
  1. 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

관련 정보