要想用ansbile的方式CD部署项目,需要下载对应的插件
Screenshot of Update Center [Jenkins].jpg
一、配置ansible路径
Screenshot of Manage Jenkins [Jenkins].jpg
Screenshot of Global Tool Configuration [Jenkins].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方式
Screenshot of ansible-ad-hoc Config [Jenkins].jpg
Screenshot of ansible-ad-hoc Config [Jenkins] (1).jpg
点击高级会出现一些额外的配置
Screenshot of ansible-ad-hoc Config [Jenkins] (2).jpg
Screenshot of ansible-ad-hoc Config [Jenkins] (3).jpg
利用debug模块输出刚才定义的变量
Screenshot of ansible-ad-hoc Config [Jenkins] (4).jpg
手动构建查看输出结果
Screenshot of ansible-ad-hoc #3 Console [Jenkins].jpg
输出的变量结果与我们定义的一致 这证明我们的测试成功
这就是anisble的ad-hoc的大致使用方法
五、ansible的剧本使用
Screenshot of ansible-playbook Config [Jenkins].jpg
Screenshot of ansible-playbook Config [Jenkins] (1).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}}"
执行任务 查看结果
Screenshot of ansible-playbook #4 Console [Jenkins].jpg
可以看到 输出的结果和我们预期的结果一致
说明我们的测试成功











网友评论