https://docs.ansible.com/ansible/latest/module_plugin_guide/index.html
模块的概念
Modules (also referred to as “task plugins” or “library plugins”) are discrete units of code that can be used from the command line or in a playbook task. Ansible executes each module, usually on the remote managed node, and collects return values. In Ansible 2.10 and later, most modules are hosted in collections.
模块(也称为“任务插件”或“库插件”)是可以从命令行或在剧本任务中使用的离散代码单元。Ansible通常在远程托管节点上执行每个模块,并收集返回值。在Ansible 2.10及更高版本中,大多数模块都托管在集合中。
Ansible中提供的模块(Module),每个模块对应一个功能。通常来说,执行一个任务的本质就是执行一个模块。
ansible 模块的帮助
ansible-doc -h
-l, –list List available plugins 查看可用的模块
-s, –snippet Show playbook snippet for specified plugin(s) 获取指定模块的信息
ansible -h
-a MODULE_ARGS, –args MODULE_ARGS
module arguments
-e EXTRA_VARS, –extra-vars EXTRA_VARS
set additional variables as key=value or YAML/JSON, if
filename prepend with @
使用ansible-doc -l 列举模块
以copy 模块举例
详细用法为 ansible-doc copy
查看模块参数 ansible-doc -s copy
如下删除本机文件命令示例:
ansible localhost -m file -a ‘path=/tmp/passwd state=absent’
通过Ansible删除本地文件/tmp/passwd。需要使用的模块是file模块,file模块的主要作用是创建或删除文件/目录。
ansible很多模块供了一个state参数,它是一个非常重要的参数。它的值一般都会包含present和absent两种状态值(并非一定),不同模块的present和absent状态表示的含义不同,但通常来说,present状态表示肯定、存在、会、成功等含义,absent则相反,表示否定、不存在、不会、失败等含义。
参数前有“=”是强制参数如file 模块的path 参数

ansible 调试模块debug
debug模块的用法非常简单,就两个常用的参数:msg参数和var参数。这两个参数是互斥的,所以只能使用其中一个。msg参数可以输出字符串,也可以输出变量的值,var参数只能输出变量的值。

设置变量str 输出变量值。
注意上面示例中的msg="hello {{str}}",Ansible的字符串是可以不用引号去包围的,例如msg=hello是允许的,但如果字符串中包含了特殊符号,则可能需要使用引号去包围,例如此处的示例出现了会产生歧义的空格。此外,要区分变量名和普通的字符串,需要在变量名上加一点标注:用{{}}包围Ansible的变量,这其实是Jinja2模板(如果不知道,先别管这是什么)的语法。其实不难理解,它的用法和Shell下引用变量使用$符号或${}是一样的,例如echo "hello ${var}"。
Ansible 配置文件
安装目录如下(yum安装):
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
ansible配置文件查找顺序
ansible与我们其他的服务在这一点上有很大不同,这里的配置文件查找是从多个地方找的,顺序如下:
- 检查环境变量
ANSIBLE_CONFIG指向的路径文件(export ANSIBLE_CONFIG=/etc/ansible.cfg); ~/.ansible.cfg,检查当前目录下的ansible.cfg配置文件;/etc/ansible.cfg检查etc目录的配置文件。