常用模块帮助文档参考:
https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html
功能:在远程主机执行命令,此为默认模块,可忽略-m选项
注意:此命令不支持 $VARNAME < > | ; & 等,用shell模块实现
command模块使用详解:
chdir: 执行命令前,切换到目录
creates: 当该文件存在时,不执行该步骤
executable: 切换shell来执行命令,需要使用命令的绝对路径
free_from: 需要执行的脚本,一般使用Ansible的-a参数代替。
removes: 当该文件不存在时,不执行该步骤
warn: 如果在ansible.cfg中存在告警,如果设定了false,不会告警该行
范例:
功能: 在远程主机上运行命令,和command相似,用shell执行命令
尤其是用到管道变量等功能的复杂命令
# ansible all -m shell -a ‘echo 123456 | passwd --stdin test‘
范例:
范例:将shell模块代替command,设为模块
功能:在远程主机上运行ansible服务器上的脚本
范例:
ansible all -m script -a /data/test.sh
功能:从ansible服务器主控端复制文件到远程主机
功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录
范例:
[root@ansible ~]# ansible all -m fetch -a ‘src=/etc/hostname dest=/root/test/‘
[root@ansible ~]# tree test/
test/
├── 192.168.18.130
│ └── etc
│ └── hostname
├── 192.168.18.132
│ └── etc
│ └── hostname
└── 192.168.18.222
└── etc
└── hostname
6 directories, 3 files
功能:
主要用于远程主机上的文件操作,file模块包含如下选项:
force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state: directory:如果目录不存在,创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
范例:
功能:解包解压缩
实现有两种用法:
1、将ansible主机上的压缩包传到远程主机后解压缩至特定目录,设置copy=yes
2、将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no
常见参数:
范例:
功能:打包压缩
范例:
功能:管理主机名
范例:
功能:计划任务
支持时间:minute,hour,day,month,weekday
范例:
功能:管理软件包,只支持RHEL,CentOS,fedora,不支持Ubuntu其它版本
范例:
功能:管理服务
范例:
功能:管理用户
范例:
功能:管理组
范例:
ansible在使用sed进行替换时,经常会遇到需要转义的问题,而且ansible在遇到特殊符号进行替换时,存在问题,无法正常进行替换 。其实在ansible自身提供了两个模块:lineinfile模块和replace模块,可以方便的进行替换
功能:相当于sed,可以修改文件内容
范例:
该模块有点类似于sed命令,主要也是基于正则进行匹配和替换
范例:
功能: setup 模块来收集主机的系统信息,这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度,可以使用gather_facts: no
来禁止 Ansible 收集 facts 信息
范例:
范例:
原文:https://www.cnblogs.com/quhz/p/15025301.html