zoukankan      html  css  js  c++  java
  • 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的字典列表|
    

      

  • 相关阅读:
    Springboot默认配置文件application.properties的常见配置属性
    Springboot基础核心
    这样统计代码执行耗时,才足够优雅!
    什么原因才导致 select * 效率低下的?
    建立apk定时自动打包系统第三篇——代码自动更新、APP自动打包系统
    [LeetCode] 543. 二叉树的直径
    Mybatis源码分析(一)
    Dockerfile创建docker
    JavaScript浅析
    mac os下 vmware Fusion Linux虚拟机配置静态ip无法上网问题
  • 原文地址:https://www.cnblogs.com/wanstack/p/8781256.html
Copyright © 2011-2022 走看看