前言:ansible是一个部署到远程主机的自动化运维工具
ansible的组成1.host inventory 主机清单
2.playerbook 剧本(配置文件)
3.module模块 实现一个个功能的小程序
4.plugins插件:依附于ansible 的一个小软件,实现某个小功能
ansible底层使用ssh协议,默认不需要再安装
我这里使用了三台机器,两台做服务器,如果不会建立免密通道的可以参考
https://blog.csdn.net/wsy_miao/article/details/107323362
#[root@ansible db_passwd]# cd /etc/ansible
#[root@ansible db_passwd]# vim hosts
#批量建立文件夹以及删除对所有分组的服务器进行操作
[root@ansible ansible]# ansible all -m shell -a "mkdir /lianxi-7-14"
#对wangdb分组在根目录下建立lianxi2020 -f 5 启动5个线程
[root@ansible ansible]# ansible sanchuangdb -f 5 -m shell -a "mkdir /lianxi2020"
对服务器进行的操作,可以查看日志
[root@ansible ansible]# tail -f /var/log/messages
1.copy模块
从本地copy文件分发到目标节点主机路径
src= 源文件路径 dest= 目标路径
注意:src= 路径后面带/ 表示带里面的所有内容复制到目标目录下,不带/是目录递归复制过去
# 从本地de/lianxi/a.sh文件分发到目录主机/root
#all可以改成你要控制的分组名,
[root@ansible lianxi]# ansible all -m copy -a "src=/lianxi/a.sh dest=/root mode=644"
2.fetch模块
从远程主机的/etc/passwd拉取文件到本地/lianxi/db_passwd
# 直接复制文件夹
[root@ansible lianxi]# ansible wangdb -m fetch -a"src=/etc/passwd dest=/lianxi/db_passwd"
3.command模块
在远程主机上执行命令,属于裸执行,非键值对显示;不进行shell解析
命令模块 适合使用简单的命令 无法支持"<",">","|",";","&"等符号
# 在远程主机上执行命令
4.shell模块
由于commnad只能执行裸命令(即系统环境中有支持的命令),至于管道之类的功能不支持,shell模块可以做到
# 显示ip地址并过滤
[root@ansible db_passwd]# ansible all -m shell -a "ip add|grep ens33"
5.file模块
设置文件属性(创建文件)也可以删除文件
常用参数: path目标路径 state directory为目录,link为软件链接
group 目录属组 owner 属主等, 其他参数通过ansible-doc -s file 获取
[root@ansible ~]# ansible all -m file -a "path=/tmp/sanchuang state=directory"
#设置文件属性
[root@ansible db_passwd]# ansible doc file
#查看命令使用手册
6.计划任务cron模块
对目标生成计划任务
# 创建计划任务名字为 wang_shell
[root@ansible db_passwd]# ansible all -m cron -a "minute=30 hour=17 job='bash /root/a.sh' name=wang_shell"
#在每天的17.30执行/root/a.sh脚本内容
#查看创建的计划任务
[root@localhost ~]# crontab -l
#Ansible: wang_shell
30 17 * * * bash /root/a.sh
7.yum 模块
yum安装软件包的模块,安装多个可以使用逗号隔开
enablerepo,disablerepo表示启用与禁用某repo库
安装latest 卸载 absent
#批量删除tree软件
ansible all -m yum -a"name=tree state=absent"
# -f 2 使用两个线程
ansible all -f 2 -m yum -a"name=tree state=absent"
8.service服务器管理模块
name:服务名
state:服务状态
enabled: 是否开机启动 true|false
runlevel: 启动级别 (systemed方式忽略)
扩展:如何查看服务当前的状态及是否开机启动?
[root@www tmp]# service nginx status
Redirecting to /bin/systemctl status nginx.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
enabled 说明开机启动
Active: active (running) since 四 2018-09-06 15:57:21 CST; 3s ago
running 说明现在是启动的 dead 表示没有启动
#关闭nginx服务
[root@ansible ~]# ansible all -m service -a "name=nginx state=stopped enabled=true"
#控制nginx启动和重新启动
[root@ansible ~]# ansible all -m service -a "name=nginx state=started enabled=true"
[root@ansible ~]# ansible all -m service -a "name=nginx state=restarted enabled=true"