语言
使用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
指出执行模块的可执行文件
执行结果
文件已被创建