ansible modules开发(二)
四 使用其他语言发开module
- cd /etc/ansible
- cat library/touch.sh
- #!/bin/sh
- args_file=$1
- [ ! -f "$args_file" ] && echo -n '{"failed": true, "msg": "missing required arguments: file"}' && exit 1
- args_result=$(cat $args_file | gawk -F'file=' '{print $2}' | gawk -F' ' '{print $1}')
- [ ! -n "$args_result" ] && echo -n "{\"failed\": true, \"msg\": \"file () is absent, cannot continue\", \"file\": \"$args_result\"}" && exit 1
- touch $args_result && echo -n "{\"changed\": true, \"rc\": $?,\"file\": \"$args_result\"}" || echo -n "{\"failed\": true, \"rc\": $?, \"file\": \"$args_result\"}"
- exit $?
返回值一定是json dumps的字符串。
ansible的参数都会被写入一个名为args的文件,上图的$1 就是这个文件的路径,读取这个文件的内容,就能获取file参数的值。
创建playbook
- cat touch.yml
- ---
- - hosts: node1
- tasks:
- - touch: file=/tmp/123
host清单
- cat hosts
- [node1]
- 192.168.77.129 ansible_ssh_pass=123456 ansible_sh_interpreter=/bin/sh
执行他
五 module的返回值
1 共同返回值
- |名称 |类型 |说明|
- |:---|:---|
- |backup_file |str |对于一些modules使用了backup变量,返回备份的文件路径|
- |changed |bool| 表示任务是否必须进行更改。|
- |failed |bool |表示任务是否失败。|
- |invocation| dict |有关如何调用模块的信息。|
- |msg |str| 存储通用消息的字符串|
- |rc| int| 命令行程序的返回码|
- |results |dict |如果该键存在,则表示该任务存在循环,并且它包含每个项目的模块“results”的列表。|
- |skipped| bool |表示该任务是否被跳过|
- |stderr |str| 命令行程序的错误输出|
- |stderr_lines| list |它将stderr字符串按行分割存储在列表中|
- |stdout |str| 命令行程序的标准输出|
- |stdout_lines |list |它将stdout字符串按行分割存储在列表中|
2 内部使用
- 这些值是ansible内部定义的。
- |名称 |类型 |说明|
- |:---|:---|
- |ansible_facts |dict |该key应包含一个字典,附加到分配给主机的fact。 这些可以直接访问,不需要使用注册的变量。|
- |exception |dict |该key包含由模块中的异常引起的追溯信息。 它只能以高度详细程度显示(-vvv)。|
- |warnings| list |此键包含将显示给用户的字符串列表。|
- |deprecations|dict |返回msg和version的字典列表|
ansible modules开发(二)的更多相关文章
- ansible modules开发(一)
一 模块说明 官方是否有提供的类似功能模块? 可从下面两个连接确定官方提供的模块,以免重复造轮子 官方已发布的模块 http://docs.ansible.com/ansible/modules.ht ...
- Ansible学习记录二:命令
0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...
- iOS开发-二维码扫描和应用跳转
iOS开发-二维码扫描和应用跳转 序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...
- javaweb学习之Servlet开发(二)
javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...
- Java Web高性能开发(二)
今日要闻: 性价比是个骗局: 对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜. 感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感--你们一千块买 ...
- Android开发--二维码开发应用(转载!)
android项目开发 二维码扫描 基于android平台的二维码扫描项目,可以查看结果并且链接网址 工具/原料 zxing eclipse 方法/步骤 首先需要用到google提供的zxin ...
- Android Camera系列开发 (二)通过Intent录制视频
Android Camera系列开发 (二)通过Intent录制视频 作者:雨水 2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...
- C#的百度地图开发(二)转换JSON数据为相应的类
原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
随机推荐
- PKU 1204 Word Puzzles(AC自动机)
题目大意:原题链接 给定一个字符串矩阵和待查找的单词,可以朝8个不同的方向查找,输出待查找单词第一个字母在矩阵中出现的位置和该单词被查到的方向. A~H代表8个不同的方向,A代表正北方向,其他依次以4 ...
- java 并发——内置锁
坚持学习,总会有一些不一样的东西. 一.由单例模式引入 引用一下百度百科的定义-- 线程安全是多线程编程时的计算机程序代码中的一个概念.在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同 ...
- javaScript动画3 事件对象event onmousemove
事件对象的获取(event的获取) var event = event || window.event;(主要用这种) screenX.pageX和clientX的区别 PageY/pageX: 鼠标 ...
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3) A Is it rated?
地址:http://codeforces.com/contest/807/problem/C 题目: C. Success Rate time limit per test 2 seconds mem ...
- iOS 使用node js 搭建简单的本地服务器
一.前提:基于iOS 项目 调用,使用了第三方框架NodeMobile.技术说明关键是 应用生命整个周期只能在应用启动时候开辟的一个线程里申请 一个 node js 资源.如果终止了运行,重启是不支 ...
- 【转】使用DataConnectionDialog在运行时设置数据源连接字符串
介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...
- iOS “弱账号” 暗转 “强账号”
一.背景 由于某些历史原因,我们产品中50%以上活跃用户是弱账户.即 客户端按照某种规则生成的一个伪id 存在keychain 里,作为这个用户的唯一标识,实现快速登录.正常情况下是不会有问题. 最近 ...
- Android模拟器Intel Atom下载安装配置
https://software.intel.com 在Android x86模拟器Intel Atom x86 System Image时提示Intel execute disable bit(xd ...
- Python遍历字典dict的几种方法
#!/usr/bin/python dict={"a":"apple","b":"banana","o&quo ...
- POJ-2418 Hardwood Species(二叉搜索树)
思路就是先将每个单词存进二叉树中,没出现一次,修改该单词所在结点的cnt++: 最后通过递归中序遍历输出结果. 思路很清晰,主要注意一下指针的使用,想一想为什么要这么用? 简单的解释就是,insert ...