2017-10-17 4 views
0

나는 2.3.2.0을 사용하고 있으며 4 가지 다른 작업을 실행중인 역할을 호출하고 있습니다.태그를 통해 호출 가능한 특정 역할 작업이 작동하지 않습니다. 모든 작업이 실행되고 있습니다.

세부 정보 태그를 통해 역할을 호출하고 특정 태그를 지정하면 전체 역할과 모든 작업이 실행됩니다. 필자는 이것이 2.0 버전 이후에 알려진 문제인 곳을 보았고, 제안 된 수정은 include 문에 정적 지시어를 추가하는 것이 었습니다. 나는 그것을 시도했지만 여전히 모든 작업이 실행되었습니다. 여기, 내가 아미을 기대 ...

roles: 
    - {role: ansible-role-auto-deploy, tags: [ 'ami', 'launch_config', 'asg']} 

플레이 북의 역할 성명 그리고 여기가 위의 역할도 문이 실행하면 역할 'main.yml

--- 

- include: ami.yml 
    static: yes 
    tags: 
    - ami 

- include: launch_config.yml 
    static: yes 
    tags: 
    - launch_config 

- include: asg.yml 
    static: yes 
    tags: 
    - asg 

- include: ami_lc_cleanup.yml 
    static: yes 
    tags: 
    - ami_lc_cleanup 

입니다 launch_config 및 asg 작업을 실행할 수 있지만 ami_lc_cleanup 작업도 실행 중입니다.

모든 작업이 작동하지만 실행중인 작업을 제한하는 방법을 알지 못합니다. 누구든지 태그를 통해 작업을 지정할 수있는 방법으로 작동하도록하는 방법에 대한 제안 사항이 있습니까?

답변

1

조건부 포함 이 아닌static: no을 사용하여 정적으로 정의해야합니다. 귀하의 의견에서 가정

편집

당신은 당신의 플레이 북에 tags 문을 오해. 이것은 정의 된 태그와 함께 역할을 포함하는 것이 아니라 명령 행에서 주어진 태그에 기반한 역할을 포함시키는 것입니다.

게임에서 활성화 된 태그는 명령 줄에서만 정의됩니다 (내가 아는 한, 여전히 학습 할 수 있습니다).

귀하의 플레이 북에서 역할에 대한 조건을 정의하고 싶다면 변수/사실을 사용해야합니다.

ansible-playbook --tags ami,launch_config,asg을 사용하여 재생 목록을 호출하여 정리 프로세스를 건너 뜁니다. 플레이 북에 태그를 정의 할 때 ami_lc_cleanup이 다른 세 태그없이 커맨드 라인에서 태그로 정의되면 롤이 실행되는 것을 방지합니다.

+0

그건별로 도움이되지 않습니다. – tman

+0

당신은'static : yes'로 정의 된 include를 가지고 있습니다. 그러나'when' 나''tags'' 같은 조건문을 사용할 때는'static : no'가되어야합니다. – clemens321

+0

정적으로 전환 해 보았습니다. 아니요. 차이가 없습니다. --list-tags 및 --list-tasks 옵션을 사용하면 처음 3 개의 작업이 TAGS : [ami, asg 및 launch_config]로 실행되고 마지막 작업이 실행될 때 실행된다는 것을 알 수 있습니다. 비록 그것의 전화 플레이 북에 태그가 없습니다. 따라서 역할의 태그를 상속해야합니다 ... – tman