zoukankan      html  css  js  c++  java
  • playbook变量(九)for循环

    1、for循环简单应用

    [root@linux-node1 ansible]# cat testfor.yaml 
    ---
    - hosts: date
      remote_user: root
      vars:
        ports:
          - 81
          - 82
          - 83
      
      tasks:
        - name: copy conf
          template: src=for1.conf.j2 dest=/data1/for1.conf

    自定义templates

    [root@linux-node1 ansible]# cat templates/for1.conf.j2 
    {% for port in ports %}
    server{
            listen {{ port }}
    }
    {% endfor %}
    
    #和shellfor循环类似
    

     

    2、剧本中是单个键值对

    [root@linux-node1 ansible]# cat testfor1.yaml 
    ---
    - hosts: date
      remote_user: root
      vars:
        ports:
          - listen_port: 81
          - listen_port: 82
          - listen_port: 83
      
      tasks:
        - name: copy conf
          template: src=for2.conf.j2 dest=/data1/for2.conf
    

    自定义templates

    [root@linux-node1 ansible]# cat templates/for2.conf.j2 
    {% for port in ports %}
    server{
            listen {{ port.listen_port }}
    }
    {% endfor %}
    

     2、剧本中是多个键值对

    [root@linux-node1 ansible]# cat testfor2.yaml 
    ---
    - hosts: date
      remote_user: root
      vars:
        ports:
          - web1:
            port: 81
            name: www.zjy1.con
            rootdir: /data1/zjy1
          - web2:
            port: 82
            name: www.zjy2.con
            rootdir: /data1/zjy2
          - web1:
            port: 83
            name: www.zjy3.con
            rootdir: /data1/zjy3
      
      tasks:
        - name: copy conf
          template: src=for3.conf.j2 dest=/data1/for3.conf
    

    自定义templates

    [root@linux-node1 ansible]# cat templates/for3.conf.j2 
    {% for p in ports %}
    server{
            listen {{ p.port }}
            servername {{ p.name }}
            documentroot {{ p.rootdir }}
    }
    {% endfor %}
    

     3、剧本中是多个键值对。加if判断(比如把name注释掉)

    [root@linux-node1 ansible]# cat testfor3.yaml 
    ---
    - hosts: date
      remote_user: root
      vars:
        ports:
          - web1:
            port: 81
            #name: www.zjy1.con
            rootdir: /data1/zjy1
          - web2:
            port: 82
            name: www.zjy2.con
            rootdir: /data1/zjy2
          - web1:
            port: 83
            #name: www.zjy3.con
            rootdir: /data1/zjy3
      
      tasks:
        - name: copy conf
          template: src=for4.conf.j2 dest=/data1/for4.conf
    

    判断自定义templates 

    [root@linux-node1 ansible]# cat templates/for4.conf.j2 
    {% for p in ports %}
    server{
            listen {{ p.port }}
    {% if  p.name is defined %}
            servername {{ p.name }}
    {% endif %}
            documentroot {{ p.rootdir }}
    }
    {% endfor %}
    

     

  • 相关阅读:
    Sqlserver查询表结构信息-字段说明、类型、长度等信息
    SurfaceView和GLSurfaceView
    OpenGL ES绘制一个图形
    第一章 介绍opengles
    opengles 系列 说明
    Box2d
    Opengles
    SoundPool播放多个文件,无法正常播放的问题
    LetCode刷题
    Open GL ES英文书籍机器翻译--第一章 介绍OpenGl es2.0
  • 原文地址:https://www.cnblogs.com/zhaojingyu/p/12133280.html
Copyright © 2011-2022 走看看