Ansible - 变量上的2次循环的幂

时间:2014-08-21 05:23:01

标签: loops variables math prompt ansible-playbook

我需要:

  vars_prompt:
    - name: loopvar
      prompt: Enter the loop variable
      private: False
      default: 16
- hosts: epcs
  serial:1


  gather_facts: no
  tasks:

    - name: Do some mathematics divide multiply
      #insert logic here
      register: my_content  # save logic in register
      with_sequence: count={{loopvar}}  #I need a loop sequence here
      when: inventory_hostname == "vm1"
      ignore_errors: yes

c ++中的一个简单循环就像:

int x=0;
for (int i=1; i<loopvar; i+=pow(2,x)) //pow is a math function with pow(2,x)= 2^x                                                                
{
    cout<<hi;
    x++;
}

还有一件事,我怎样才能将每次迭代的结果存储在一个寄存器中,这样当剧本连续第二次,第三次或第四次连续运行时,我就可以使用它。

更新: Jinja2允许以下内容: 将左操作数提升到右操作数的幂。

 {{ 2**3 }} would return 8.

现在记住这些新信息,我们可以做2循环的力量吗?

1 个答案:

答案 0 :(得分:1)

在Ansible中无法实现所需的循环类型。该工具仅限于循环列表,字典或序列,但无法修改计数器。请参阅ansible docs on loops

对于类似的内容,您可能需要考虑编写custom module

  

还有一件事,我怎样才能将每次迭代的结果存储在一个寄存器中,这样我就可以在剧本连续第二次,第三次或第四次等时运行。

请参阅Ansible docs on how to use register in a loop中的部分。 如果您注册名为my_content的var,则可以访问my_content.results中的各个结果。