Ansible with_subelements

时间:2017-01-28 10:29:29

标签: ansible

我很难理解ansible with_subelements语法的逻辑,with_subelements究竟做了什么?我在这里查看了有关with_subelements的ansible文档http://docs.ansible.com/ansible/playbooks_loops.html#looping-over-subelements并且没有太大帮助。我还在博客上看到了带有with_subelements示例的剧本

import {Router, ActivatedRoute, Params} from '@angular/router';

constructor(private activatedRoute: ActivatedRoute) {}

    ngOnInit() {
        this.activatedRoute.queryParams.subscribe((params: Params) => {

                let token = params['id_token'];
        //save token 
                if(typeof token !="undefined"){
                window.localStorage.setItem('authToken',token);
                  let route = JSON.parse(params['state']);
                 window.location.href =route;
                }
            });
    }

item.1和item.0是指什么?

1 个答案:

答案 0 :(得分:46)

这是subelements查找工作原理的一个非常糟糕的例子。 (并且还有旧的,不受支持的语法)。

看看这个:

---
- hosts: localhost
  gather_facts: no
  vars:
    families:
      - surname: Smith
        children:
          - name: Mike
            age: 4
          - name: Kate
            age: 7
      - surname: Sanders
        children:
          - name: Pete
            age: 12
          - name: Sara
            age: 17

  tasks:
    - name: List children
      debug:
        msg: "Family={{ item.0.surname }} Child={{ item.1.name }} Age={{ item.1.age }}"
      with_subelements:
        - "{{ families }}"
        - children

任务列出子项就像是families列表(外部循环)和每个族中的children子元素(内部循环)上的嵌套循环。
因此,您应该提供一个dicts列表作为subelements的第一个参数和要在每个外部项目中迭代的子元素的名称。

这种方式item.0(在我的例子中是家庭)是一个外部项目,item.1(我的例子中的孩子)是一个内部项目。

在Ansible文档中,示例subelements用于循环用户(外部)并添加多个公钥(内部)。