[英]How can I execute an Ansible role multiple times with different vars from one playbook?
[英]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.