簡體   English   中英

如何做 Ansible 條件 include_vars?

[英]How to do Ansible conditional include_vars?

我正在嘗試根據when條件使用include_vars ,如下所示:

- include_vars: clouderamanager.yml
  when: '{{ inventory_hostname }}' in groups['hadoop-clouderamanager']

- include_vars: hadoop-namenode.yml
  when: '{{ inventory_hostname }}' in groups['hadoop-namenode']

- include_vars: resourcemanager.yml
  when: '{{ inventory_hostname }}' in groups['hadoop-resourcemanager']

- include_vars: spark-history-server.yml
  when: '{{ inventory_hostname }}' in groups['spark-history-server']

我收到ERROR! Syntax Error while loading YAML. ERROR! Syntax Error while loading YAML.

The error appears to have been in '~/ansible/roles/hadoop-master/tasks/main.yml': line 4, column 36, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- include_vars: clouderamanager.yml
  when: '{{ inventory_hostname }}' in groups['hadoop-clouderamanager']
                                   ^ here

條件跟蹤工作時進行更改

when: inventory_hostname in groups['hadoop-clouderamanager']

如果值開始加引號,則必須將整個值加引號,直到結束為止,否則YAML解析器將遭受癲癇發作。

這意味着您必須定義以下條件:

when: "'{{ inventory_hostname }}' in groups['hadoop-clouderamanager']"

不幸的是,Ansible 2中的錯誤消息並不像Ansible 1中的那么清晰,實際上它已經指出了這一點。


只是為了確保...您知道group_vars嗎? 您可以在group_vars/hadoop-clouderamanager定義變量,而無需自己包含變量,因為Ansible會自動加載所有匹配組的所有變量。

添加常規 var 的示例。

- name: including vars called secrets
  include_vars: "vars.yml"

- name: including vars called secrets
  include_vars: "another_var_file.yml"
  when: "<variable name inside vars.yml> == '<value>'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM