2015-01-22 10 views
15

제공된 버전이 유효한 지원 버전인지 확인하려고합니다. 변수에 허용되는 버전 목록을 설정 했으므로 제공된 버전이 목록에없는 경우 해당 작업에서 실패하고 싶습니다. 그러나, 나는 그것을하는 방법을 확신하지 못합니다.목록에 Anecess 항목이 있는지 확인하십시오.

#/role/vars/main.yml 
--- 
    acceptable_versions: [2, 3, 4] 

#/role/tasks/main.yml 
--- 
    - fail: 
     msg: "unsupported version" 
     with_items: "{{acceptable_versions}}" 
     when: "{{item}} != {{version}}" 

    - name: continue with rest of tasks... 

위는 내가하고 싶은 어떤 종류이지만, 구성 할 수있는 한 줄의 방법을 호출이 "목록에 포함"만약 내가 알아낼 수 없었다 실패 모듈

답변

43

조건 일 때 {{}}이 필요하지 않습니다. 검색하려는 내용은 다음과 같습니다.

- fail: msg="unsupported version" 
    when: version not in acceptable_versions 
+8

이것은 어디에 기록되어 있습니까? – thisjustin

+0

정확한 문자열 일치에만 작동하는 것으로 보입니다. ( – xenithorb

+0

사실 이것은 jinja2의 기능이므로 설명서에 있습니다. http://jinja.pocoo.org/docs/2.9/templates/#other-operators – teissler

4

아니요. 대답은 1.6 이후로 version_compare 필터입니다. 당신은 when 조건 아래 같은 작업을 수행 할 수 있습니다

when: ansible_distribution_version | version_compare('12.04', '>=')

이 당신이 주요 & 부 버전 비교에 대한 지원을 줄 것이다 당신은 같은 연산자를 사용하여 버전을 비교할 수 있습니다

<, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne

당신 여기에 대한 자세한 내용은 여기를 참조하십시오. Ansible - Version comparison filters

O 만약 당신이 정말로 간단한 경우에 당신은 @ ProfHase85가 제안한 것을 사용할 수 있습니다

+0

눈치 채 셨습니다. 이것은 나의 연구 동안, 그러나 내가 이것을 선택하지 않은 이유는 #, 2, 7, 10, 11과 같이 불 연속적 일 수있는 #의 무작위리스트를 지원할 수 있기를 원했기 때문이다. 연산자의 미친 조합을 구성해야합니다. – Shark

관련 문제