ansible 自定义filter plugin实现

Posted 艾克的择天记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible 自定义filter plugin实现相关的知识,希望对你有一定的参考价值。

filter,顾名思义,是对传递的变量进行过滤。ansible自带了很多filter,也允许我们自定义filter。

首先我们看一个ansible自带的filter
{{ my_variable|default('my_variable is not defined') }}
如果变量没有值,可以定义默认的值

很多时候ansible自带的filter不满足我们自己对变量filter的需求,这个时候需要我们自己定义自己的filter

比如,我要将字符串filter成一个list

mkdir filter_plugins && cd filter_plugins
vim to_list.py

from ansible import errors

def to_list(value):
    try:
        res_list = value.split(",")
        return res_list
    except Exception, e:
        raise errors.AnsibleFilterError("to list error: %s" % str(e))

class FilterModule(object):
    def filters(self):
        return {
          'to_list': to_list
        }

上面这段是我们自己写的filter方法,那么我们怎么去使用它呢?

首先看我们的inventory

[ubuntu]
192.168.1.2 cluster_name=vdnet_1,vdnet_2 ansible_user=root

我们给主机192.168.1.2传递的变量cluster_name要用自定义的filter plugin进行filter

- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: echo cluster name
      shell: echo {{ item }}
      with_items:
          - "{{ cluster_name | to_list }}"

OK,这样就可以了。

最后还有个小问题就是,我们自定义的filter是怎么被找到的呢?
这个就是在ansible.cfg里面去设置我们的自定义filter的路径
filter_plugins = /home/bran/ansible_learn


以上是关于ansible 自定义filter plugin实现的主要内容,如果未能解决你的问题,请参考以下文章

Ansible 基础

Ansible 之 ansible gather_facts配置

Spring Security验证流程剖析及自定义验证方法

Ansible 入门和常用模块

#私藏项目实操分享#Maven实战技巧「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

SpringSecurity:认证和自定义登陆界面