gaojinguan 发表于 2018-7-29 06:58:11

ansible playbook循环

  http://docs.ansible.com/ansible/latest/playbooks_loops.html#standard-loops

[*]标准Loops

[*]hosts: all  gather_facts: False
  tasks:

[*]name: debug loops  debug: msg=" name-----> {{ item }}"
  with_items:

[*]one
[*]two  执行结果:ansible-playbook loops.yaml -l 192.168.1.1
  TASK *****
  ok: => (item=one) => {
  "changed": false,
  "item": "one",
  "msg": " name-----> one"
  }
  ok: => (item=two) => {
  "changed": false,
  "item": "two",
  "msg": " name-----> two"
  }



  PLAY RECAP ****
  192.168.1.1            : ok=1    changed=0    unreachable=0    failed=0
  with_items的值是python list数据结构,每个task会循环读取里面的值;也支持字典


  2.嵌套Loops
  主要实现一对多或者多对多的合并


  3.散列Loops
  散列loops直接支持YAML格式的数据变量


  4.文件匹配Loops
  针对一个目录下指定格式的文件进行处理,引用with_fileglob循环去匹配需要处理的文件


  5.随机选择Loops(with_random_choice)


  6.条件判断Loops


  5秒执行一次cat /root/ansible将结果register给host然后判断host.stdout.startswith的内容是否是轶Master字符串开头,如果条件成立,此task完成;如果条件不成立5s之后重试,2次重试还不成立,此task运行失败
  7.文件优先匹配Loops
  with_first_found会从list里面定义的文件从上往下一个一个的匹配,如果匹配到了item就是该文件


  8.register Loops
  register除了用作单一的task临时变量存储,还可以同时接受多个task的结果当做变量临时存储

页: [1]
查看完整版本: ansible playbook循环