第一个模块:command模块
作用说明:命令模块 (默认模块)
使用方法:ansible nfs -m command(可省略) -a "free -h"
不能够识别符号 < > | ; & *等
模块参数
chdir : 在执行批量管理命令时,先进行目录切换
ansible nfs -m command -a "chdir=/tmp pwd" 显示为/tmp
creates : 判断文件是否存在,如果不存在则执行后面命令,存在则跳过
ansible nfs -m command -a "creates=/tmp/wyd.txt touch /tmp/wyd.txt"
removes : 当该文件不存在,则该选项不执行
第二个模块:shell模块 (万能模块)
作用说明:可以批量执行命令 (和command区别,可以识别特殊符号)
使用方法:和command模块用法,参数一样
需求:实现批量执行脚本
利用shell模块
1)ansible本地编写脚本
2)将脚本推送到受控端
ansible nfs -m copy -a "src=/server/scripts/test.sh dest=/serv/scripts/"
3)将脚本文件权限进行设置
ansible nfs -m shell -a 'chmod +x /server/scripts/test.sh'
4)批量执行脚本
ansible nfs -m shell -a '/server/scripts/test.sh'
第三个模块:script (执行脚本文件模块)
作用说明:批量执行脚本模块
使用方法:
1)ansible本地编写脚本
2)批量执行脚本
ansible nfs -m script -a "/server/scripts/test.sh"
第四个模块:copy
作用说明: 1)将管理主机数据批量分发到管理主机上
2)将被管理主机数据进行备份
使用方法:
①src=源,dest=目标
ansible nfs -m copy -a "src=/etc/selinux/config dest=/tmp"
②将被管理主机进行备份 remote_src backup
ansible nfs -m copy -a "src=/tmp/wyd.txt dest=/tmp/wyd.txt.bak remote_src=yes"
remote_src:将被管理主机上文件进行本地备份保存
ansible nfs -m copy -a "src=/tmp/wyd.txt dest=/tmp/wyd.txt.bak backup=yes"
backup :类似于sed -i.bak方法,改变的同时生成一个根据日期的备份文件 (不好还原)
③ 指定分发权限 mode owner group
ansible nfs -m copy -a "src=/etc/selinux/config dest=/tmp mode=400 owner=wyd group=wyd"
mode:匹配分发文件时,修改文件权限信息
owner:匹配分发文件时,修改文件属主信息 (前提需要用户提前存在)
group:匹配分发文件时,修改文件属组信息 (前提需要用户组提前存在)
directory_mode:递归设定目录权限
④ 其他参数
ansible nfs -m copy -a "content='wyd75' dest=/tmp/wyd.txt"
content:在批量管理主机上创建新的文件,并填写内容
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
第五个模块:file
作用说明:1)修改已有文件属性信息(权限,属主,属组)
path=文件目标 mode=权限 owner=属主 group=属组 recurse= 是否递归目录处理 false=是否删除时连带软连接一起删除
2)用于创建新的数据信息/删除数据信息
state=(动作)
创建普通文件:state=touch
ansible all -m file -a "path=/wyd/a.txt state=touch"
创建目录文件:state=directory
ansible all -m file -a "path=/wyd/a.txt state=directory"
创建软连接文件:state=link
ansible all -m file -a "src=/wyd/a.txt dest=/wyd/a_soft.txt state=link"
创建硬链接文件:state=hard
ansible all -m file -a "src=/wyd/a.txt path=/wyd/a_soft.txt state=hard"
删除文件:state=absent
ansible all -m file -a "path=/wyd/a_soft.txt state=absent"
(目录文件都可以删除)
第六个模块:fetch
作用说明:将受控端主机数据进行拉取
ansible all -m fetch -a "src=/wyd/a.txt dest=/tmp/"
第七个模块:yum
作用说明:安装更新卸载软件
模块说明:批量安装软件包 (并行)
name=安装的软件名 state=installed安装 (latest和present效果一样) removed卸载 (absent效果一样)
name: 指定下载软件名称信息
state: 指定下载或是卸载软件
installed/present 下载安装软件 rsync-2.0
absent/removed 卸载软件程序
latest 更新软件程序 rsync-3.0
enablerepo: 指定下载源信息
disablerepo: 指定不用哪个下载源
download_only: 只下载软件包不进行安装
第八个模块:service
作用说明:管理服务运行状态
模块使用:开启关闭服务
name=服务名 state=stoped停止 state=started开始 state=restarted重启 state=reloaded重新加载
开机运行状态:
name=服务名 enabled=no是否开机自启
PS:需要确认服务以及被systemctl命令管理,才能使用service模块
第九个模块:cron
作用说明:实现批量管理定时任务
模块参数:
name : 设置定时任务注释信息 (用于判断定时任务是否相同)
minute : 设置时间分钟信息 (0-59 * / - 表示) (默认不设置代表*,以下都一样)
hour : 设置时间小时信息 (0-23 * / - 表示)
day : 设置时间日期信息 (1-31 * / - 表示)
month : 设置时间月份信息 (1-12 * / - 表示)
weekday : 设置时间星期信息 (0- 6 * / - 表示)
job : 设置任务信息
state : absent (删除时,只需要指定名字name) 默认为present
disabled: yes (注释时需将完整定时任务加上)
user : 指定运行定时任务的用户
第十个模块: user / group
作用说明:批量创建用户信息,也可以直接修改用户信息
模块参数:
comment : 给添加用户设置注释信息 useradd -c
name : 指定管理的用户名
create_home : 是否创建家目录 yes/no useradd -M
group : 指定用户所属主要组信息 useradd -g
groups : 指定用户所属附属组信息 useradd -G
home : 指定用户家目录 useradd -b
password: 给用户设置密码 (必须是密文)
shell : 指定用户登录系统方式 useradd -s
state : present创建 absent删除
uid : 指定用户家目录
remove : 删除时是否删除家目录 yes/no
group模块类似于user
如何设置密文密码
方法一: debug调试模块(all或者查询的主机地址)
ansible all -m debug -a "msg={{ '123456' | password_hash('sha512', 'wyd')}}"
方法二: 1)下载安装pip
yum -y install python-pip
2)配置pip源,找到mirrors中pypi源
3)pip install passlib
4)python -c "from passlib.hash import sha512_crypt; import getpass;print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
第十一个模块:unarchive
作用说明:解压数据模块
模块参数:
src : 指定要解压的数据信息
dest: 解压数据指定路径信息
remote_src: 将被管理主机上压缩包进行解压
ansible 172.16.1.7 -m unarchive -a "src=/data/wordpress-5.6-zh_CN.tar.gz dest=/html/test/"
第十二个模块:archive
作用说明:可以对远程主机数据进行压缩处理
owner: 指定文件压缩后的属主信息
group: 指定文件压缩后的属组信息
mode: 指定文件压缩后的权限信息
remove:(了解) 将进行压缩后的数据删除 (删除文件数据信息)
path: 指定需要进行压缩数据信息
dest: 指定压缩包文件保存路径
format : 指定压缩数据方式 bz2 gz(默认) tar xz zip
exclude_path:在压缩数据时进行指定数据信息排除
force_archive 单独压缩一个文件信息时,也可以进行强制压缩处理
实践需求:需要将远程主机/etc/wyd01目录进行压缩处理
ansible wyd -m archive -a "path=/etc/wyd01 dest=/etc/wyd01.tar.gz owner=wyd01 group=wyd01 mode=666 remove=yes format=gz"
第十三个模块:lineinfile
常用指令参数:
path: 指定要修改文件信息
regexp:利用正则匹配出文件中指定行信息
line: 对匹配行信息做修改
state: 可以实现删除文件信息
insertafter: 匹配指定信息,并在指定信息下面新起一行添加信息
insertbefore 匹配指定信息,并在指定信息上面新起一行添加信息
create: 在指定文件后面追加新的信息 等价于 >>
第十四个模块:mount
作用说明:实现存储服务批量挂载以及卸载
常用指令参数:
path: 指定挂载点目录信息
src: 指定挂载存储设备信息
fstype:指定挂载使用文件系统类型
opts 指定挂载参数信息 rw ro suid nosuid auto noauto ... defaults
state: 指定挂载或卸载操作
实践操作:
01. 主机批量挂载存储设备
ansible wyd -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=present" 实现重启系统进行永久挂载
ansible wyd -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=mounted" 实现立即挂载以及永久挂载
第十五个模块:setup
收集
作用说明:可以采集被管理主机系统和硬件信息
常用指令参数信息:
filter: 过滤筛选想关注信息
ansible 172.16.1.7 -m setup -a "filter=ansible_eth0"
PS:利用收集的信息做判断使用。