扩展 Ansible 的插件系统.
有的时候, 如果 Ansible 内置的插件无法满足需求时, 我们可以自己编写新插件.
以下情况下可以考虑开发新插件:
1, 除 Paramiko, 本机 SSH,Local,Winrm 等连接方式外, 希望 Ansible 基于新的通信方式与远程主机交互.
2, 除内置的 with_items,with_fileglob 循环体外, 希望有新的遍历方式.
3, 除内置的 host_vars,group_vars 等变量调用方式外, 希望有新的变量定义方式.
4, 除内置的 jinja2 渲染模板, to_yaml,to_json 等过滤器, 希望有新的过滤器.
5, 定义新的回调机制, 捕获响应事件后自定义新的响应形式.
对 stdout 输出结果做处理;
增加日志记录, 如插入到 MySQL,Redis,MongoDB;
增加事件响应方式, 比如 playbook 返回 success 时, 发送邮件到各部门.
插件存放位置:
从 GitHub 上下载插件模板 (可以下载 action 插件, callback 插件, connection 插件等) 到上面对应的目录中, 然后
进行相应的修改即可.
举例: 编写过滤插件 deal_list_num.py
/usr/share/ansible/plugins/filter/deal_list_num.py
后续需要模仿着这个来写. 这里的 data 是 | 符号前面的数字.
num_list | positive
也就是将 num_list 作为 data 传递给了 positive 函数. 如果 positive 需要 2 个参数, 则应该写成 positive(参数 2). 参数 1 就是默认的 data, 无需传递.
定义好插件后, 我们来编写 YAML 文件, 来使用我们自己的插件.
执行, 看结果:
解析: 在 YAML 中, 我们使用了 "| positive","| negative","| no_less_than" 等方式.
当 ansible 看到 | 时, 就知道这是调用了过滤. 于是它去
开始找. 看到 deal_list_num.py 后, 它会调用里面类, 并调用类的 filters 方法. 而刚好 filters 方法返回了三个其他的方法.
分别是 positive,negative,no_less_than. 所以我们调用 | positive, 就刚好调用了 positive 方法, 最终返回了需要的结果.
如果想要将任务的返回结果打印到终端上. 可以调用 debug. 以前都是默认的.
filter 和 callback 插件是比较重要的 2 个, 需要经常写来掌握.
其他的插件则用的比较少. 可以暂时不用管.
该目录是自定义插件的根据地. 都写在这里.
================= 密码认证
1, 使用密码认证
首先在 hosts 文件中填上用户名和密码.
然后执行命令:
这条命令等价于:
SSH [email protected] "whoami"
最后需要输入 yangling 的密码.
高可用架构
来源: http://www.bubuko.com/infodetail-3184678.html