要想用ansbile的方式CD部署项目,需要下载对应的插件
![](https://img.haomeiwen.com/i18861860/48ac3c5f97c66e73.jpg)
一、配置ansible路径
![](https://img.haomeiwen.com/i18861860/5a2b212367162e9b.jpg)
![](https://img.haomeiwen.com/i18861860/d10d3407380cabd5.jpg)
二、资产服务器
docker-compose up --scale webserver=2 -d # 准备两个资产服务器
# 注意 部署多个服务时,有些东西不能指定
# 例如 容器名 映射端口 等等
#因为根据一个服务起了多个服务器,这个时候如果用原来的命令只能进入第一个容器
docker-compose exec webserver bash # 只能进入第一个容器内
#docker-compose exec -h 中这样记载
#--index=index index of the container if there are multiple
#instances of a service [default: 1]
#可以看到默认进入的是第一个容器内
docker-compose exec --index=2 webserver bash # 进入第二个容器
#当然完全可以用docker命令根据容器名进入容器内
docker exec -it container_name bash
jenkins服务器对资产服务器要进行免密
因为资产服务器没有安装ssh,所以先进行该操作
yum -y install openssh-server
ssh-keygen -A
passwd # 建立密码
注意 当部署多个应用服务器时, 会发现nginx容器会停止
因为我们重新起了一个容器,容器名会发生变化
所以 配置文件不能通过原先的容器名来识别,只需要修改对应的配置文件即可
我们只需要修改三步
1、进入应用服务器内,修改uwsgi配置文件 修改对应的容器名
2、进入nginx的配置文件 修改负载均衡的主机
3、重启服务即可
三、jenkins端服务器
jenkins服务器下载ansible
apk add ansible #因为我们的jenkins服务器是apline版 所以用的是apk安装
yum -y install ansible #这适用与centos版的
jenkins服务器对资产服务器进行免密
ssh-copy-id root@auto-cmdb_webserver_1
ssh-copy-id root@auto_cmdb_webserver_2
hosts文件内容
[prod]
auto-cmdb_cmdb_1
[dev]
auto-cmdb_cmdb_2
[prod:vars]
name=prod
port=22
[dev:vars]
name=dev
port=23
四、ad-hoc方式
![](https://img.haomeiwen.com/i18861860/99155932e4352c20.jpg)
![](https://img.haomeiwen.com/i18861860/3f2dbec949c0574b.jpg)
点击高级会出现一些额外的配置
![](https://img.haomeiwen.com/i18861860/5f150398e30b2964.jpg)
![](https://img.haomeiwen.com/i18861860/c266191dc5821108.jpg)
利用debug模块输出刚才定义的变量
![](https://img.haomeiwen.com/i18861860/77c8cc49ac02da39.jpg)
手动构建查看输出结果
![](https://img.haomeiwen.com/i18861860/ca247fc88e93d054.jpg)
输出的变量结果与我们定义的一致 这证明我们的测试成功
这就是anisble的ad-hoc的大致使用方法
五、ansible的剧本使用
![](https://img.haomeiwen.com/i18861860/b6207d1b54eedfff.jpg)
![](https://img.haomeiwen.com/i18861860/778b78ebc62f3fe6.jpg)
剧本内容
---
- name: test ansible-playbook
hosts: all
gather_facts: no # 去掉facts收集资产信息
remote_user: root
vars:
name: shark
port: 22
tasks:
- name: show var
debug: msg="name==>{{name}},port==>{{port}}"
执行任务 查看结果
![](https://img.haomeiwen.com/i18861860/b3e4ff0f38c24080.jpg)
可以看到 输出的结果和我们预期的结果一致
说明我们的测试成功
网友评论