扩展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,无需传递。
定义好插件后,我们来编写yml文件,来使用我们自己的插件。
执行,看结果:
解析:在yml中,我们使用了 "| 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 yangling@192.168.40.253 "whoami"
最后需要输入yangling的密码。