jenkins-ansible-playbook-基于commit-id 版本回退
- hosts: webservers
vars:
- work_dir: /opt
- web_name: web
- web_backend: web_cluster
- service_port: 80
serial: 1 #控制每次仅操作一个主机
tasks:
#获取commitid 编号 {{ git_commit_id.stdout}}
- name: Get CommitID
shell:
cmd: "echo ${git_commit_id} | cut -c 1-8"
register: git_commit_id
delegate_to: 127.0.0.1
#下线节点(委派给lbservers)
- name: offline Haproxy "{{ inventory_hostname }}"
haproxy:
state: disabled
host: '{{ inventory_hostname }}'
backend: "{{ web_backend }}"
socket: /var/lib/haproxy/stats
delegate_to: "{{ item }}"
loop: "{{ groups['lbservers'] }}"
#关闭 Nginx server
- name: Systemd Nginx Stoppend
systemd:
name: nginx
state: stopped
#检测端口是否存活
- name: Check Nginx Port
wait_for:
port: "{{ service_port}}"
state: stopped
#删除软连接
- name: Unlink Path
file:
path: "{{ work_dir }}/{{ web_name }}"
state: absent
#获取对应commitid的目录属性,其中包含了路径
- name: Find {{ work_dir }} "{{ git_commit_id.stdout}}"
find:
paths: "{{ work_dir }}"
patterns: "*{{ git_commit_id.stdout }}*"
file_type: directory
register: web_name_commitid
#获取commitid对应目录的绝对路径(map参数提取过滤器,转为list,使用first取第一个)
- name: Output web_name_commitid Full Path
debug:
msg: "{{ web_name_commitid.files | map(attribute='path') | list | first }}"
register: web_name_commitid_path
#重新创建软连接
- name: Create Links Path
file:
src: "{{ web_name_commitid_path.msg }}"
dest: "{{ work_dir }}/{{ web_name}}"
state: link
#启动Nginx Server
- name: Systemd Nginx Started
systemd:
name: nginx
state: started
#检测端口是否存活
- name: Check Nginx Port
wait_for:
port: "{{ service_port }}"
state: started
#上线节点(委派给lbservers)
- name: online Haproxy "{{ inventory_hostname }}"
haproxy:
state: enabled
host: '{{ inventory_hostname }}'
backend: "{{ web_backend }}"
socket: /var/lib/haproxy/stats
delegate_to: "{{ item }}"
loop: "{{ groups['lbservers'] }}"
rollback_html_commitid.yml 、、、、、deploy_html_commitid.yml deploy_html.sh deploy_html.yml

浙公网安备 33010602011771号