jenkins-ansible-playbook发布模式
- 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 #执行打包操作 - name: Archive Workspace Code archive: path: "{{ workspace.stdout}}/*" dest: "{{ work_dir }}/{{ web_name }}_{{ date.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 - name: Create Web Site Directory file: path: "{{ work_dir }}/{{ web_name }}_{{ date.stdout}}" state: directory #解压目录 - name: Unarchive Web Code unarchive: src: "{{ work_dir }}/{{web_name}}_{{ date.stdout }}.tar.gz" dest: "{{ work_dir }}/{{web_name}}_{{ date.stdout }}" #删除软连接 - name: Unlink Path file: path: "{{ work_dir }}/{{ web_name }}" state: absent #重新创建软连接 - name: Create Links Path file: src: "{{ work_dir }}/{{ web_name }}_{{ date.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 }}" #上线节点(委派给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'] }}"