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  

posted @ 2022-02-04 16:24  NeilyoX  阅读(129)  评论(0)    收藏  举报