Variables 易变分块变量
如何设置Ansible块变量(仅对块中的任务可见) 我试过:Variables 易变分块变量,variables,ansible,Variables,Ansible,如何设置Ansible块变量(仅对块中的任务可见) 我试过: --- - hosts: test tasks: - block: - name: task 1 shell: "echo {{item}}" with_items: - one - two 但这似乎是一种错误的方式。 如果要为块定义变量,请执行以下操作: - block: - debug: var: var_for_blo
---
- hosts: test
tasks:
- block:
- name: task 1
shell: "echo {{item}}"
with_items:
- one
- two
但这似乎是一种错误的方式。- 如果要为块定义变量,请执行以下操作:
- block: - debug: var: var_for_block vars: var_for_block: "value for var_for_block"
- 如果你想像你的代码建议的那样“在块上循环”,你不能。它没有在Ansible中实现。
跟着
现在考虑将任务保存到一个单独的文件中,并使用<代码>包含。
- @Shasha99
您可以包含一个包含块的文件,这样您仍然可以从try/catch中获益
includeFile.yml:
- block
- name: Finding the package.
shell: rpm -qa | grep "{{pkgName}}"
register: package
- name: Uninstalling the package.
shell: rpm -e "{{package}}"
always:
- debug: msg="this always executes"
main.yml:
---
- hosts: all
vars:
- packageList : ["pkg1","pkg2","pkg3","pkg4"]
tasks:
- include: includeFile.yml pkgName="{{item}}"
with_items: packageList
所以在“变量优先级:我应该把变量放在哪里?”一段中,oat-有一个条目“block vars(仅适用于块中的任务)”,问题是“它是什么?”好的,我试着阻止vars-不知为什么-但我真的不知道如何声明它们?你说得对,thx,我以前尝试过,但我将var放在块的开头,该语法不起作用。@ITIC如果您想在块上循环,您可以尝试以下替代方法:是@Shasha99 include with_items很有用,但块提供try/catch语法,变量优先级不同。