之前使用pssh来做快速管理,ansible会比pssh加强,所以用他一下
安装
首先我们在主要的服务器上使用yum来安装一下
yum -y install ansible
安装完之后,更新一下主机配置
vim /etc/ansible/hosts
例如我们配置一组ip
[mg]
1.55.239.140
1.71.34.97
1.75.220.150
1.75.207.240
生成密钥(这个可以详看我写的openssh通讯)
ssh-keygen -t rsa
将pub加到其它机器上,实现ssh通讯
具体命令
Ansible的命令格式为, ansible 主机群组名 -m 命令模块名 -a "批量执行的操作"
其中-m不是必须的,默认为command模块,-a也不是必须的,表示命令模块的参数,比如前面的ping模块就没有参数。
可以使用 ansible-doc -l 列出所有可用的命令模块, ansible-doc -s 模块名 查看指定模块的参数信息
ping # 主机连通性测试
command # 在远程主机上执行命令,不支持管道
shell # 在远程主机上调用shell解析器,支持管道命令个
copy # 用于将文件复制到远程主机,支持设定内容和修改权限.
file # 创建文件,创建连接文件,删除文件等
fetch # 从远程复制文件到本地
cron # 管理cron计划任务
yum # 用于模块的安装
service # 管理服务
user # 管理用户账号
group # 用户组管理
script # 将本地的脚本在远端服务器运行
setup # 该模块主要用于收集信息,是通过调用facts组件来实现的,以变量形式存储主机上的信息
-------------------------------------------------------------------
ansible mg -m command -a "free -g"
ansible mg -m shell -a "free -g|grep Mem"
ansible mg -m script -a "/root/echo.sh"
ansible mg -m copy -a "src=/root/echo.sh dest=/tmp/ owner=root group=root mode=0755"
ansible mg -m yum -a "name=wget state=latest"
ansible mg -m service -a "name=nginx state=stoped"
ansible mg -m get_url -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"
ansible mg -m setup
ansible mg -m file -a "dest=/opt/test state=touch"
directory:创建目录
file:如果文件不存在,则创建
link:创建symbolic link
absent:删除文件或目录
touch: 创建一个不存在的空文件
ansible mg -m cron -a "name='backup servcie' minute=*/5 job='/usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1'"
暂时使用得最多的是command和shell
检测指定ip
ansible 127.0.0.1 -m ping
特定组
ansible mg -m ping
所有配置
ansible all -m ping
批量操作示例
ansible mg -m shell -a "yum install -y yum-utils device-mapper-persistent-data lvm2"
ansible mg -m shell -a "yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo"
ansible mg -m shell -a "yum -y install docker-ce docker-ce-cli containerd.io"
ansible mg -m shell -a "systemctl start docker"
总结
ansible更高级的功能暂时没用上,但批量处理命令的方式实在是方便!