jenkins-ansible-playbook-基于commit-id 发布模式

脚本
- hosts: webservers
vars:
- work_dir: /opt
- web_name: web
- web_backend: web_cluster
- service_port: 80
serial: 1 #控制每次仅操作一个主机
tasks:
#获取一个时间 年月日时分{{ date.stdout}}
- name: Get System Time
shell:
cmd: "echo $(date +%F_%H_%M)"
register: date
delegate_to: 127.0.0.1
#获取项目的工作目录{{ workspace.stdout }}
- name: Get WorkSpace Work Path
shell:
cmd: "echo ${WORKSPACE}"
register: workspace
delegate_to: 127.0.0.1
#获取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
#执行打包操作
- name: Archive Workspace Code
archive:
path: "{{ workspace.stdout}}/*"
dest: "{{ work_dir }}/{{ web_name }}_{{ date.stdout }}_{{ git_commit_id.stdout }}.tar.gz"
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
#为web集群创建站点目录 /opt/web-2022-02-04-09-42_commit_id
- name: Create Web Site Directory
file:
path: "{{ work_dir }}/{{ web_name }}_{{ date.stdout}}_{{ git_commit_id.stdout }}"
state: directory
#解压目录
- name: Unarchive Web Code
unarchive:
src: "{{ work_dir }}/{{web_name}}_{{ date.stdout }}_{{ git_commit_id.stdout }}.tar.gz"
dest: "{{ work_dir }}/{{web_name}}_{{ date.stdout }}_{{ git_commit_id.stdout }}"
#删除软连接
- name: Unlink Path
file:
path: "{{ work_dir }}/{{ web_name }}"
state: absent
#重新创建软连接
- name: Create Links Path
file:
src: "{{ work_dir }}/{{ web_name }}_{{ date.stdout }}_{{ git_commit_id.stdout }}"
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'] }}"

浙公网安备 33010602011771号