ansible(七)Conditionals 和 loops,自定义loops插件

ansible的Conditionals 和 loops 和salt-stack比起来真的太强大了。 salt-stack使用判断循环,好像,只能使用模板里面的判断和循环。 而ansible本身自带了适用于各种场景的判断循环插件。。

不但如此,像loops,我们还可以自己编写插件,满足我们的实际需求。

先说说Conditionals吧

Conditionals相对loops来说,简单,就一个关键字when

和咱们其他的程序语言的条件判断一个样,when 后面也是加一个bool值,或者bool值的结果

下面举个小例子,看看when和loops的用法,

wKioL1O1FNDTDs_DAAMRkoKo3Ic075.jpg

结果执行起来太多了,就不贴出来了。 把脚本贴出来,大伙可以自己执行下


  • hosts: salt-master
    tasks:
    • name: with_items,参数为列表,列表元素为字符串或字典
      debug: msg=’item.name and item.age
      with_items:

      • {name: ‘lixc’,age: 25}
      • {name: ‘liss’,age: 24}
        when: 1
    • name: with_nested,打印嵌套列表,参数为列表,列表元素为列表
      debug: msg=’{{item[0]}} and {{item[1]}}’
      with_nested:

      • [‘lixc’,‘liss’]
      • [1,2]
        when: ansible_os_family == “Debian”
    • name: with_dict,循环字典,参数为字典
      debug: msg=’item.key and item.value
      with_dict:
      ansible:
      cmd: commandline
      ply: playbooks
      salt:
      cmd: commandline
      st: state
      when: ansible_os_family == “Debian” and “8”|int >= 6

    • name: with_fileglob,遍历文件夹下的文件,不包括文件夹,roles可为相对路径
      debug: msg=item
      with_fileglob:

      • /tmp/test1/*
      • /tmp/test2/*
        when: lixc is not defined
    • name: with_sequence,获得整数序列
      debug: msg=item
      with_sequence: start=4 end=8 stride=2
      when: 1 in [1,2,3]

这里面列举了Conditionals和loops的部分用法,当然用法绝不仅止这些的。关键是能把Conditionals和loops和变量结合着来用,就OK了。

上面咱们不是说可以自定义loops的插件吗,下面,楼主也自己整个小插件玩玩。

ansible的loops插件是在这个目录下面的。

wKiom1O1IG6xg_nfAADVk94mhYM243.jpg看到这个目录了没?

这个目录,就是ansible所有的loops插件都在这里面。 这个walkdir.py插件是楼主自己弄的一个。

楼主这个插件是干什么活的呢?

咱们前面举了一个fileglob这个ansible自带的插件,这个插件可以变量文件夹下的文件,但是不包括子目录及文件。

楼主这个插件,则可以遍历目录下所有的文件及子目录下的文件。

看看楼主的代码吧

wKiom1O1ISixW2-VAAIdQ1OkmPk447.jpg

OK,咱们来看看playbooks是咋定义的吧

wKioL1O1IaTgQB5DAACDLve2xE4732.jpg

好,咱们来看看执行结果

wKioL1O1IoPx-XZPAAMfKEycqVw825.jpg

©著作权归作者所有:来自51CTO博客作者lixiaocheng18的原创作品,如需转载,请注明出处,否则将追究法律责任

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值