自定义Ansible模块开发指南
1. 自定义模块概述
在某些情况下,命令或shell模块无法完成复杂任务,且没有现成模块满足需求时,就需要编写自定义模块。可以将模块视为Ansible “语言”中的“动词”,没有它们,YAML文件将无法发挥作用。Ansible模块在Linux/BSD/Unix机器上用Python编写,在Windows机器上用PowerShell编写,但原则上可以使用任何语言。
2. 示例:检查能否连接远程服务器
假设要检查能否连接到远程服务器的特定端口,若无法连接,希望Ansible将其视为错误并停止执行剧本。本章开发的自定义模块是 wait_for 模块的简化版本。
2.1 使用脚本模块替代自定义模块
可以使用脚本模块在远程主机上执行自定义脚本,有时这比编写完整的Ansible模块更简单。例如,创建一个名为 playbooks/scripts/can_reach.sh 的脚本文件,接受主机名、端口和超时时间作为参数:
#!/bin/bash -eu
host="$1"
port="$2"
timeout="$3"
nc -z -w "$timeout" "$host" "$port"
在剧本中调用该脚本:
- name: Run my custom script
script: scripts/can_reach.sh www.google.com 80 1
超级会员免费看
订阅专栏 解锁全文
1666

被折叠的 条评论
为什么被折叠?



