ansible 批量执行多服务器
最后更新于:2022-04-02 03:50:23
[TOC]
## 概述
批量操作多台服务器
## 安装 ansible
```
yum -y install epel-release
yum -y install ansible
```
## 管理机的秘钥发给其他 节点
```
# ssh-keygen -t rsa -P ''
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.111
# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.229
```
## 命令
格式:
![UTOOLS1575621688577.png](http://yanxuan.nosdn.127.net/5de2151adc7253b72e81a968f50a179c.png)
```
- m
command:这是个默认模块,不写-m xx模块的时候,默认会当成command模块,表示执行主机指令
copy
user
group
ansible web 指定某个组
ansible all 自定所有节点
```
## 场景
先配置参数
```
# cat /etc/ansible/hosts | grep -v ^# | grep -v ^$
[web]
192.168.0.111
192.168.0.229
```
### 批量执行远程脚本命令
```
ansible web -m shell -a '/bin/echo hello ansible' //nodex 下面的节点
ansible all -m shell -a '/bin/echo hello ansible' //所有节点
```
### script 在远程主机上运行本机脚本,只支持用相对路径
```
ansible web -m script -a 'test.sh'
```
### 文件操作
```
ansible web -m copy -a 'src="/home/zing/Documents/源.txt" dest="/home/xxserver/目标.txt" [owner="root"] [mode=640']
```
### 发送批量数据
```
ansible web -a 'echo "hello word"'
```
### user 操作用户
```
# 创建用户
ansible local -m user -a 'name="zing1" password="自定义的密码" groups="root,system,sys" home="/home/zing1" '
# 删除用户
ansible local -m user -a 'name="zing1" state=absent fource=yes'
```
### group 操作用户组
```
ansible local -m group -a 'name="mysql" gid=306 system=yes '
ansible local -m group -a 'name="mysql" state=absent fource=yes'
```
### service 指定服务的运行状态
```
ansible local -m service -a 'name="httpd" enabled=true state=started '
#enable表示是否开机启动
#state 参数有started stopped restarted
```
';