Lework Study hard, improve every day.

Ansible 开发模块 之【使用其他语言写module】

2017-05-28
本文 843 字,阅读全文约需 3 分钟

语言


使用bash语言开发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

主机清单


cat hosts
[node1]
192.168.77.129 ansible_ssh_pass=123456 ansible_sh_interpreter=/bin/sh

指出执行模块的可执行文件

执行结果


image.png

文件已被创建

原文地址 https://lework.github.io/2017/05/28/Ansible-kai-fa-mo-kuai-zhi-shi-yong-qi-ta-yu-yan-xie-module/

Comments

Content