Ansible develop module

def cnf(action,configs,path):    message = "Modify %s\n" %path    changed = False    if action == "get":        with open(path,"r") as f:            message = f.read()        return changed,message    if not os.path.exists(path):        message += "%s do not exist, create it\n" %path    cnf = Mycnf(path)    if action == "update":        changed,msg = cnf.set_all(configs)        message += msg    elif action == "delete":        changed, msg = cnf.delete_all(configs)        message += msg    else:        message = "Invalid action"    return changed,message

def main():    module = AnsibleModule(        argument_spec=dict(            type=dict(default="cnf"),            action=dict(default="update"),            configs=dict(),            path=dict(default="/etc/my.cnf"),        ),        supports_check_mode=True    )

type = module.params["type"]    action = module.params["action"]    configs = module.params["configs"]    path = module.params["path"]

if type not in TYPE:        module.fail_json(msg="Invalid type %s,must be in %s" %(type,str(TYPE)))    if action not in ACTION:        module.fail_json(msg="Invalid action %s,must be in %s" %(action,str(ACTION)))    try:        configs = json.loads(configs)    except:        module.fail_json(msg="configs must be a json type")    if action == "get" and not os.path.exists(path):        module.fail_json(msg="%s do not exist" %path)    try:        cmd = globals()[type]        changed, msg = cmd(action,configs,path)        module.exit_json(changed=changed, stdout=msg)    except Exception as e:        module.fail_json(msg=e.message)

from ansible.module_utils.basic import *

if __name__ == ‘__main__‘:    main()

======================================================================- hosts: localhost  tasks:    - name: test my module    config_file:       type: cnf      action: delete      configs: ‘{"mysqld":{"mhc":"2b"}}‘      path: /root/test/ansible_test/mhc_test/my.cnf    register: mhc    - debug: var=mhc

    
时间: 2024-10-25 03:29:13

Ansible develop module的相关文章

ansible files module: fetch & copy & template.....continuing

fetch模块与copy功能是一样的,都是不同机器之间文件传输,前者是从节点拉取文件到主控机(装有ansible的机器),后者是从主控机传输文件到节点.template模块能在复制文件中插入变量. (官方文档)The copy module copies a file on the local box to remote locations. Use the fetch module to copy files from remote locations to the local box. If

Ansible configure management--翻译(二)

一. Getting Started with Ansible Ansible is profoundly different from other configuration management tools available today. It has been designed to make configuration easy in almost every way, from its simple English configuration syntax to its ease o

XII ansible

运维工具: OS provisioning(PXE(dhcp,tftp,ftp|http):cobbler(repository,distribution,profile)): OS config(puppet:saltstack:func): task execute(fabric:func:saltstack): deployment(fabric): 注: dnsmasq替代dhcp,dnsmasq(可用于嵌入式环境,提供dhcp.dns服务): cobbler若配置自身管理dhcp则会启

ansible(五)variables(一)定义

说起变量,ansible中的变量,差不多等于salt-stack里面的pillar+grains吧 ansible中的变量主要来源于,楼主总结了一下,大概有这么几个地方吧 Inventory(host vars,group vars) playbook里面 命令行 playbook执行task过程中产生结果,可以register起来,作为变量给下面的task使用 roles里面 来自于nodes上面的facts 这些类型的变量,1-4一般来说都是咱们用户自己定义的,而5facts则主要是ansi

Ansible学习 安装

对于运维人员来说,自动化工具是日常工作中比不可少的.Ansible是一个很好的自动化工具. Ansible默认使用SSH协议管理机器,在管理主机上安装Ansible,管理主机和被管理主机只要安装了python,即可使用 1.安装,管理主机环境如下 操作系统: [[email protected] ansible]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) python版本: [[email protected] an

ansible入门与playbook实战

一.简要 1.关于AnsibleAnsilbe是一个部署一群远程主机的工具;Ansilbe通过SSH协议实现远程节点和管理节点之间的通信.理论上说,只要管理员通过ssh登录到一台远程主机上能做的操作,Ansible都可以做到.Ansible是python开发的,故依赖一些python库和组件,如:paramiko,PyYaml和jinja三个关键组件; 2.ansible架构:右边绿色部分是被管理的主机(虚拟机,物理机,云主机等)从以上架构图中可以看出ansible是由主机清单(配置),play

Ansible -的安装部署(Redhat&Centos)

Ansible 的安装部署PIP 方式安装(Redhat&Centos)1,安装python-pip&python-devel,yum install python-pip python-devel -y2, 安装Ansible 服务//确认服务器的gcc,glibc 开发环境均安装,如果不确定可以用yum 安装一下:yum -y install gcc glibc-devel zlib-devel rpm-bulid openssl-devel -y//升级PIP之最新版本pip ins

Ansible运维的必备工具

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配置文

Ansible推送ssh秘钥

一.系统环境和安装软件版本1),系统安装[[email protected] ~]# cat /etc/issueCentOS release 6.5 (Final)[[email protected] ~]# uname -r2.6.32-431.el6.x86_642)4台主机Ansible(192.168.0.22)另外3台主机IP分别是(192.168.0.24,192.168.0.156和192.168.0.157)3)安装YUM源[[email protected] ~]# rpm