四 使用其他语言发开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开发(二)的更多相关文章

  1. ansible modules开发(一)

    一 模块说明 官方是否有提供的类似功能模块? 可从下面两个连接确定官方提供的模块,以免重复造轮子 官方已发布的模块 http://docs.ansible.com/ansible/modules.ht ...

  2. Ansible学习记录二:命令

    0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...

  3. iOS开发-二维码扫描和应用跳转

    iOS开发-二维码扫描和应用跳转   序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如Z ...

  4. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

  5. Java Web高性能开发(二)

    今日要闻: 性价比是个骗局: 对某个产品学上三五天个把月,然后就要花最少的钱买最多最好的东西占最大的便宜. 感谢万能的互联网,他顺利得手,顺便享受了智商上的无上满足以及居高临下的优越感--你们一千块买 ...

  6. Android开发--二维码开发应用(转载!)

    android项目开发 二维码扫描   基于android平台的二维码扫描项目,可以查看结果并且链接网址 工具/原料 zxing eclipse 方法/步骤   首先需要用到google提供的zxin ...

  7. Android Camera系列开发 (二)通过Intent录制视频

    Android Camera系列开发 (二)通过Intent录制视频 作者:雨水  2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...

  8. C#的百度地图开发(二)转换JSON数据为相应的类

    原文:C#的百度地图开发(二)转换JSON数据为相应的类 在<C#的百度地图开发(一)发起HTTP请求>一文中我们向百度提供的API的URL发起请求,并得到了返回的结果,结果是一串JSON ...

  9. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

随机推荐

  1. 以二进制方式读取图片保存到string

    procedure TForm1.BitBtn1Click(Sender: TObject);var  StringStream : TStringStream;  FSize : integer;  ...

  2. Linux系统——源码编译安装

    记得要先去把httpd-2.2.9.tar.gz通过xftp进行文件传输第一步:yum仓库下安装编译环境的支持程序 #yum -y install gcc gcc-c++ make 第二步:将源码包h ...

  3. spring mvc 全局处理异常

    spring框架支持很多种全局处理异常的方式 一.Spring MVC处理异常有4种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionResolver: (2)实 ...

  4. 【Q2D】如何导出自定义C++类给框架使用

    本文基于Quick cocos2d x这个游戏框架,为了行文流畅,后面都简称Q2D 导出自定义c++类给项目使用已经有了现成的例子了 详见:http://quick.cocos.org/?p=235 ...

  5. WPS宏不可用解决方法

    在使用WPS Office过程中,遇见宏不可用,在启用宏的过程中提示获取VBA插件 解决方法: 1.下载VBA插件,下载地址:https://pan.baidu.com/s/1LqBmXw37U0km ...

  6. 对java NIO 通道的一些了解

    @引言 reactor(反应器)模式 使用单线程模拟多线程,提高资源利用率和程序的效率,增加系统吞吐量.下面例子比较形象的说明了什么是反应器模式: 一个老板经营一个饭店, 传统模式 - 来一个客人安排 ...

  7. OpenCV KNN 之 使用方法

    http://blog.csdn.net/WL2002200/article/details/43149229 OpenCV 中KNN构造函数如下. C++: CvKNearest::CvKNeare ...

  8. T-shirt again

    T-shirt again 标签(空格分隔): 软工实践 第一次获得小黄裳是在大一下的C++课上,见T-shirt 0.0... 这次在软工课上能再次获得小黄裳,是我没有想到的,个人觉得里面有蛮多的运 ...

  9. [BZOJ1117]救火站gas

    Description 给你一棵树,现在要建立一些消防站,有以下要求: 1. 消防站要建立在节点上,每个节点可能建立不只一个消防站. 2. 每个节点应该被一个消防站管理,这个消防站不一定建立在该节点上 ...

  10. 第六篇:Spark SQL Catalyst源码分析之Physical Plan

    /** Spark SQL源码分析系列文章*/ 前面几篇文章主要介绍的是spark sql包里的的spark sql执行流程,以及Catalyst包内的SqlParser,Analyzer和Optim ...