2017-01-06 7 views
-2

특정 호스트 그룹에 ansible,실행 나는 다음과 같은 명령을 ansible 실행하려고

ansible-playbook provision.yml -l webserver 

그리고 내 호스트 파일은 다음 호스트 그룹을 포함,

[webclient] 
172.29.4.75 
[webserver] 
172.29.4.76 

내 provision.yml도 포함 다음과 같이 2 호스트,

내 문제는 여기에 "-l webserver"를 사용한다고해도 webclient에 지정된 역할도 실행됩니다. 웹 클라이언트에서 특정 호스트 그룹 만 실행하도록 제어하려면 어떻게해야합니까?

+0

귀하의 명령은 그룹이 제한과 일치하지 않는다는 오류를 반환해야합니다. 문제는 실제 파일에서 질문 내용을 복사하지 않았으므로 검증 가능한 예제 대신 허구의 이야기를 게시했기 때문입니다. – techraf

+0

예, yml 파일 크기가 커서 방금 최소화했습니다. 수정 된 웹 서버가 현재 호스트 파일에 있습니다. 내 문제는 특정 호스트 그룹에 대해 -l 옵션이 제대로 작동하지 않는다는 것입니다. –

+0

아니요, 인벤토리 파일 파일이 크지 않습니다. 네 줄이 포함되어 있으며이 파일을 사용하면 나머지 하나의 그룹에서 올바르게 명령이 실행됩니다. 물론 역할 대신에 하나의'debug' 태스크를 사용하는 것이 너무 어려웠 기 때문에 게시 한 플레이 북이 아닙니다. 그래서 그 질문을 읽는 누구 에게라도 부담을주는 것이 낫습니다. – techraf

답변

1

내 문제는 여기서도 "-l webserver"를 사용한다고 생각합니다. webclient에 지정된 역할도 webclient 호스트에서 실행됩니다. 특정 호스트 그룹 만 실행하도록 제어하려면 어떻게해야합니까?

이것은 보통 당신이 webserverwebclient 그룹에서 동일한 호스트를 가지고 있다는 것을 의미한다. -l webserver을 전달

webserver 그룹 아래에있는 목록에서 모든 호스트를 사용하는 Ansible을 알려줍니다.
Anabilities가이 게임을 시작하면 - hosts: webclient, 인벤토리에서 일치하는 항목을 검색 한 다음 호스트와의 일치를 limit 인수로 줄입니다. 따라서 호스트가 webserverwebclient 인 경우 Anuch는 webclient 작업을 실행합니다.

+0

위의 지정된 "provision.yml"에서 "호스트 : 웹 서버"에만 해당하는 역할을 수행하려면 어떻게해야합니까? –

+0

[권장 사항] (http://docs.ansible.com/ansible/playbooks_best_practices.html# 최상위 수준의 플레이 북은 역할별로 구분됩니다. 플레이 북을 다른 파일로 분리하여 최상위 수준의 플레이 북에 포함시켜야합니다. –