博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible:模块开发
阅读量:3923 次
发布时间:2019-05-23

本文共 1644 字,大约阅读时间需要 5 分钟。

Ansible:模块开发

!!此文章有点问题,还在整体改善中,请适当借鉴,十分抱歉!!

整体框架

一个模块整体的框架为:

#!/usr/bin/env python# -*- coding=utf-8 -*-from ansible.module_utils.basic import *def do():        ...        return result,outputdef main():        module = AnsibleModule(        argument_spec = dict()        )        do()        if status == 0:                result = dict(module='modulename',stdout=output,changed=False,rc=0                module.exit_json(**result)        else:                result = dict(msg='execute failed',rc=status)                module.fail_json(**result)

Step 1 引个基类

#!/usr/bin/env python# -*- coding=utf-8 -*-from ansible.module_utils.basic import *import commands

Step 2 创建模块输入参数

创建一个AnsibleModule的实例,argument_spec初始化参数为空字典。如下

module = AnsibleModule(      argument_spec = dict())

如果你的模块需要参数传入,则要定义实例中的参数传入。如下是几种参数的定义方式

module = AnsibleModule(        argument_spec = dict(            state     = dict(default='present', choices=['present', 'absent']),            name      = dict(required=True),            enabled   = dict(required=True, type='bool'),            something = dict(aliases=['whatever'])        )    )

Step 3 写入模块的操作

这是开发ansible模块的难点,需要自己使用python去操作被控机。具体操作就是在do函数里面填充定制化的操作。

def do():        ...

引入传入的变量

name = module.params['name']

Step 4 按照Ansible返回格式

按照ansible 的返回格式定义返回内容,stdout为标准输出,changed代表系统有没有东西被变更,rc=0代表执行成功,使用ansible规则的module实例下的exit_json返回正常内容

当调用失败返回错误信息的时候,数据字典只要传递msg信息就可了,然后调用module实例的fail_json方法给返回

if status == 0:        result = dict(module='modulename',stdout=output,changed=False,rc=0)        module.exit_json(**result)else:        result = dict(msg='execute failed',rc=status)        module.fail_json(**result)

转载地址:http://tqugn.baihongyu.com/

你可能感兴趣的文章
Linux RPM 命令参数使用详解 查看 rpm包依赖性
查看>>
xz压缩命令
查看>>
Mysql各种存储引擎对比总结(常用几种)
查看>>
java为我们已经提供了各种锁,为什么还需要分布式锁?
查看>>
一文带你理解mysql中的分区表和合并表(一个常见知识点)
查看>>
Redis5.0数据淘汰策略详解(最新版本,面试常问)
查看>>
为什么 MongoDB 索引选择B-树,而 Mysql 选择B+树(精干总结)
查看>>
面试官:说说 Springboot 中的 javaConfig(基于Spring5.2)
查看>>
你的钱为什么被转走,这篇文章告诉你答案(CSRF详解)
查看>>
JVM中的一个小知识点:深堆和浅堆的概念
查看>>
HashMap的负载因子初始值为什么是0.75?这篇文章以最通俗的方式告诉你答案
查看>>
详解java中一个面试常问的知识点-阻塞队列
查看>>
除了Thread和Runnable,你还知道第三种创建线程的方式Callable吗
查看>>
java线程面试题集锦(第一版本)
查看>>
记一次java中三元表达式的坑(避免踩坑)
查看>>
面试官:如何实现一个乐观锁(小白都能看得懂的代码)
查看>>
CopyOnWriteArrayList,一个面试中经常问到的冷门容器
查看>>
设计模式之桥接模式
查看>>
设计模式之组合模式
查看>>
java网络编程(1)基础知识点总结
查看>>