ping模块
ping模块用来检查目标主机是否在线
ansible 主机名 -m ping
前提是ssh免密钥配置成功
yum
yum模块用来安装软件,服务等,使用命令安装软件包
- 选项
name: 安装包的名字
state:
----latest 安装最新版
----present 默认安装
----installed 安装
----absent 卸载
----removed 卸载两种方式卸载。 - 示例
ansible websvs -m yum -a 'name=httpd state=latest'
service
service模块用来管理centos上的服务的启动、关闭、重启和重载
- 选项
name:服务、软件名字
state:
----latest 安装最新版
----present 默认安装
----installed 安装
----absent 卸载
----removed 卸载两种方式卸载。
enabled:设置开机自启,默认为no - 示例
ansible websvs -m service -a 'name=httpd state=started enabled=yes'
command
用来执行Linux命令,但是相对于shell模块来说,command模块不支持特殊的正则表达,如 | 、&& 等。
- 示例
ansible websvs -m command -a 'echo 111'
shell
shell模块同样也是执行Linux系统命令的模块,shell可支持正则表达,特殊符号等。
ansible websvs -m shell -a 'cd /opt/ && touch index.html'
copy
copy模快用来复制文件到远程主机,copy具有覆盖作用。
-
选项
src:文件在ansible主机上的相对路径或绝对路径
dest:复制到远程主机上的位置
backup:是否远程主机上的同名文件进行备份,默认为no
mode:对文件授权
directory_mode:递归设定目录的权限 -
例子
ansible websvs -m copy -a 'src=控制主机上文件的路径 dest=远程主机上文件的路径 backup=yes'
unarchive
unarchive模块用来将ansible主机上的软件包解压到远程主机上。确保远程主机上已经安装了unzip。
- 选项
copy: 在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,必须确保目标主机上压缩包必须存在。
creates:指定一个文件名,当文件存在时,则解压指令不执行。
src: 如果copy为yes,则需要指定ansible主机上压缩文件的源路径。
dest:远程主机上文件的解压路径。
group:解压后文件或者目录的属组。
owner:解压后文件或者目录的属主。
mode:解压后文件的权限。 - 例子
ansible websvs -m unarchive -a src='ansible主机上压缩包的绝对路径 dest=远程主机文件存储位置的绝对路径 group=www owner=www mode=777'
setup
setup 模块用于收集远程主机的一些基本信息。
-
选项
setup:用于远程主机的一些基本信息。
----filter:用于进行条件过滤,如果设定,则仅返回过滤条件的信息。常用的过滤关键词有:
——ansible_all_ipv4_addresses:仅显示ipv4的信息
——ansible_devices:仅显示磁盘设备信息
——ansible_distribution:显示是什么系统,例:centos,suse等
——ansible_distribution_major_version:显示是系统主版本
——ansible_distribution_version:仅显示系统版本
——ansible_machine:显示系统类型,例:32位,还是64位
——ansible_eth0:仅显示eth0的信息
——ansible_hostname:仅显示主机名
——ansible_kernel:仅显示内核版本
——ansible_lvm:显示lvm相关信息
——ansible_memtotal_mb:显示系统总内存
——ansible_memfree_mb:显示可用系统内存
——ansible_memory_mb:详细显示内存情况
——ansible_swaptotal_mb:显示总的swap内存
——ansible_swapfree_mb:显示swap内存的可用内存
——ansible_mounts:显示系统磁盘挂载情况
——ansible_processor:显示cpu个数(具体显示每个cpu的型号)
——ansible_processor_vcpus:显示cpu个数(只显示总的个数)
——ansible_python_version:显示python版本 -
例子:获取远程目标主机的主机名
ansible websvs -m setup -a 'filter=ansible_hostname'
get_url
get_url模块主要用于从http、ftp、https服务器上下载文件(类似于wget功能)
-
选项
url:指定要下载的文件的URL地址。 -
例子:在远程主机上下载nginx安装包
ansible webservers -m get_url -a ‘url= http://nginx.org/download/nginx-1.15.7.tar.gz dest=/root/’
file
file模块是用来创建文件、目录、链接文件
-
选项
group: 定义文件/目录的数字
mode: 定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
rescure: 递归设置文件的属性,仅对目录有效
src: 要被链接的文件的路径,只用于state=link或者hard的情况,创建链接文件时用到
dest: 被链接到的路径,是用于state=link或者hard的情况,创建链接文件时用到
state:
---- directory:如果目录不存在,则创建目录
---- file:即时文件不存在,也不会被创建
---- link:创建软链接
---- hard: 创建硬链接
---- touch: 如果文件不存在,则会创建一个新的文件,如果文件或目录存在,则更新其最后修改时间。
---- absent:删除目录、文件或者取消链接文件 -
示例
使用file模块创建目录
ansible websvs -m file path=/root/hello state=directory
使用file模块创建文件
ansible websvs -m file -a 'path=/root/hello/world.txt state=touch'
使用file模块创建软链接
ansible websvs -m file -a 'src=/root/hello/world.txt dest=/root/world.txt state=link'
使用file模块创建硬链接
ansible websvs -m file -a 'src=/root/hello/world.txt dest=/root/world.txt state=hard'
user
usr模块用来创建用户
- 选项
home:指定用户的家目录
groups:指定用户组
uid: 指定UID
password:设置密码,密码必须是秘文 Openssl passwd
name: 创建用户的名字
createhome: 是否创建家目录(yes/no)
state: 是创建还是删除(present、absent)默认是创建
shell: 指定用户登录的shell环境
remove: 删除用户家目录,默认为no,设置为yes即可(state=absent并且remove=yes即为删除用户and家目录) - 示例
使用openssl生成秘文后使用user创建用户
openssl passwd
ansible websvs -m user -a 'name=hello password=xxxx'
验证登录
ssh root@websvs主机的ip
删除用户,remove默认为no,如果不设置为yes的话就在远程主机/home下存在此用户
ansible websvs -m user -a 'name=hello state=absent remove=yes'
group
group模块用来创建用户组
- 选项
gid:指定用户的gid
name: 指定用户名
state:创建还是删除,prensent、absent
synchronize
使用rsync同步文件,将主控方目录推送到指定节点的目录下,使用此模块需要先安装rsync
- 选项
delete: 删除ansible主机上不存在但是远程主机上存在的多余文件,保持远程主机上的文件与ansible主机上的文件一致。
src:要与远程主机同步的源主机路径,如果路径使用"/"结尾,则只复制目录里面的内容,如果没有使用“/”来结尾,则包含目录在内的整个文件全部被复制。
dest: 目标主机上要和源主机同步的路径。
dest_port:默认目标主机上的端口为22,因为ansible是通过ssh通信的。
mode: push或者pull,默认是push,即从ansible本机向远程主机上传送文件,pull模式用来从远程主机上取文件。
rsync_opts:通过传递数组来指定其他rsync选项。 - 示例
同步ansible主机和远程主机的文件,将远程主机上与ansible主机上不一致的文件删除,增加远程主机上没有的文件。
ansible websvs -m synchronize -a 'src=/root/hello dest=/root/ delete=yes'
fetch
fetch模块用于从远程主机上获取文件,并将其本地存储在有主机名组织的文件树中。
- fetch
src:远程主机上要获取的文件,必须是一个文件,而不是一个目录。
dest: 保存文件的ansible主机目录。