2017-04-11 112 views
1

如何设置Ansible块变量(仅可见于块中的任务)?Ansible块变量

我想:

--- 
- hosts: test 
    tasks: 
    - block: 

     - name: task 1 
     shell: "echo {{item}}" 

     with_items: 
     - one 
     - two 

,但它似乎是一个错误的方式。

回答

3
  • 如果要定义一个变量为一个块:

    - block: 
    
        - debug: 
         var: var_for_block 
    
        vars: 
        var_for_block: "value for var_for_block" 
    
  • 如果要“遍历块”为您的代码表明 - 你不能。它在Ansible中没有实现。 按照this thread

    现在考虑将任务保存到单独的文件并使用include来代替。

+0

所以在段落“变量优先级:我应该把变量放在哪里?”燕麦http://docs.ansible.com/ansible/playbooks_variables.html - 有项目“块瓦斯(只限于任务块)”,问题是“它是什么?” – itiic

+0

好的,我尝试阻止瓦尔斯 - 莫名其妙 - 但我真的不知道如何声明它们? – itiic

+0

你是正确的,thx,我已经尝试过,但我把var放在块的开头,并且该语法不起作用。 – itiic

0

@ 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" 

为主。 yml:

--- 
- hosts: all 
    vars: 
    - packageList : ["pkg1","pkg2","pkg3","pkg4"] 

    tasks: 
    - include: includeFile.yml pkgName="{{item}}" 
     with_items: packageList