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

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

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

先说说Conditionals吧

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

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

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

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

---
- 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插件是在这个目录下面的。

看到这个目录了没?

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

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

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

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

看看楼主的代码吧

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

好,咱们来看看执行结果

ansible(七)Conditionals 和 loops,自定义loops插件,布布扣,bubuko.com

时间: 2024-10-13 16:10:11

ansible(七)Conditionals 和 loops,自定义loops插件的相关文章

Ansible 七(ad hoc任务)

Ansible 七(ad hoc任务) ansible任务 ad hoc任务就是执行shell命令.或shell脚本. ansible ad-hoc命令 可以执行一些简单的命令,不需要将这些执行的命令特别保存下来. 适合执行简单的命令. ansible playbook 可以解决比较复杂的任务,可以将命令保存下来. 适合执行配置管理或部署客户机. 并行性和shell命令 重启webservers主机组里的所以机器,每次重启10台 ansible webservers -a "/sbin/rebo

看一下自定义的插件怎么样

    publicvoid setUp() throws Exception {protectedfinal Log log = LogFactory.getLog(this.getClass());    public User currOperator;//绝大多数的时候都有登录人信息,特此创建    public BaseUserRole userRole;//登录人角色实例    public String filePathAndName = "D:\\junit.txt";

【分分钟上手weiphp插件开发】Vol.1——第一个自定义weiphp插件:MyHello

我们都知道,学习任何一门编程语言,一般来说第一个范例程序就是输出“Hello World”.从今天开始我们来学习weiphp插件开发,也从一个HelloWorld级别的插件开始讲起,因为安装好了的weiphp框架,默认安装了weiphp官方开发的HelloWorld插件,所以这里为了防止跟官方的插件冲突,我们开发的第一个自定义weiphp插件取名为MyHello,并通过这个简单的插件来讲解weiphp插件开发的整个流程.整个[分分钟上手weiphp插件开发]系列教程都是直接从创建一个新的插件开始

knockoutjs + easyui.treegrid 可编辑的自定义绑定插件【转】

目前仅支持URL的CRUD.不需要的话可以却掉相关代码,把treegrid的data直接赋值给viewModel,然后用ko提交整个data 1.支持双击编辑 2.单击Cell,自动保存编辑. 3.4个功能按钮. 插件源码: ko.bindingHandlers.etreegrid = { editing: false, editIndex: 0, init: function (element, valueAccessor, allBindings, viewModel, bindingCon

WordPress超好用自定义字段插件:Advanced Custom Fields

WordPress经常需要扩展些字段, 扩展字段一般有两种方法. 1.自己写自定义面板,优点在主题里面比较灵活,但代码写的比较麻烦,对于新手不适合. 2.使用自定义字段插件,这里推荐Advanced Custom Fields 设置和使用相当方便. 下面介绍下安装及使用方法 一.安装插件:插件搜索:Advanced Custom Fields(第一个就是) 二.安装好后点击 菜单->字段 新建字段 填写字段信息 点击发布就可以了.关于字段类型看你自己的需要,需要图片就选图片. 三.填写字段内容

自定义jQuery插件

jQuery编写插件的两种方法 1.添加jQuery对象级的插件,是给jQuery类添加方法 写法: (function($){ $.fn.extend({ "函数名":function(自定义参数){ //这里写插件代码 } }); })(jQuery); 或者 (function($){ $.fn.函数名=function(自定义参数){ //这里写插件代码 } })(jQuery); 调用方法:$("#id").函数名(参数); 2.jQuery类级别的插件,

炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件

多种类型自定义对话框插件jDialog是一款基于jquery实现的轻量级多种类型的自定义对话框插件 在项目开发中.一般会美化 alert(); 的样式.那么今天我就和大家分享一款非常炫的插件 先来看一下程序最后的效果图片吧 下面是HTMl代码 <center> <button id="test1">alert方式调用</button> <br/><br/> <button id="test2">

自定义jQuery插件(一)

自定义jQuery插件(一) 虽然现在有大量的插件可供我们选择使用,但实际开发过程中,使用别人的插件难免会带来问题,比如 插件功能强大,代码行数也随着激增,但是我们只使用其中一小部分. 使用别人的插件,很难看懂别人的代码,特别是压缩成min.js,为后期维护,需求变更等带来很严重问题. 同样想在现有插件上做进一步开发也没那么容易. 装逼 所以学习jQuery插件开发很有必要. 自定义插件的类型 自定义插件的类型主要有两种(我猜的) 1. 类级别插件 类级别插件比较简单,通过$.extend()直

自定义ExtJS插件

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73b6f93834c28c3933fc23904564711b2e73a7650598f832b3b57b2111df7f03471360022b791d58c40dcba852858d2616b2e08c31c528516f881007d8037902bfede13f0cdf525e3ddc5a2a84352ba44737f97868d4d7065dd