摘要
在工作中总是不可避免的要上传包到服务器进行部署,每次都需要用winscp登陆服务器上传包,然后使用rundeck 进行部署。所以大概了解了一下其工作原理,因此学习了ansible(不过毕竟是公司的server不敢乱搞,所以只是在两台电脑之间做了操作,把另一台电脑当成了server来用)
注意:要先安装ansible, ansible 请自行百度安装
Mac 生成ssh key
1. 查看秘钥是否存在
在终端下运行 cat ~/.ssh/id_rsa.pub 命令检查是否已有一个SSH密码,存在则不需要重新生成,
如果不存在请按照第二步生成新的密钥
2.生成新秘钥
ssh-keygen -t rsa -C "email@example.com"
你需要把邮箱换成自己的邮箱,email@example.com只是一个示例。
ansible 配置
ansible使用ssh来管理远程机器,所以要保证你的电脑上已经生成了SSH密钥。
## 拷贝当前主机的ssh key 到远程主机,ip地址替换为远程地址
$ ssh-copy-id davidwang@192.168.31.53
## 保存远程主机ip保存到当前主机的known_hosts
$ ssh-keyscan 192.168.31.53 >> ~/.ssh/known_hosts
sudo vi /etc/ansible/hosts 在这里可以配置添加要管理的服务器
ansible test --list-host 查看test组下的所有主机
## 配置完成之后,用命令ping下试试配置是否生效
$ ansible all -m ping
## 创建ssh连接
ssh davidwang@192.168.31.53
## 先在本地创建一个SHELL脚本
# vim /tmp/test.sh
#!/bin/sh
tar zxvf Desktop/tmp/tmp.zip -C Desktop/tmp2
## 将创建的脚本文件分发到远程组test下所有的主机
# ansible test -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh owner=root group=root mode=0755" owner 是相应的用户名称
## 部署本地资源到所有服务器的目标资源
ansible all -m copy -a "src=Desktop/tmp.zip dest=Desktop/tmp mode=0755"
## 远程执行脚本,将资源部署到相应的folder
# ansible test -m shell -a "/tmp/test.sh"