1. 程式人生 > >ansible+jenkins+svn實現生產環境自動發布

ansible+jenkins+svn實現生產環境自動發布

檢查 AC ole CA linux下 roles AD ipv root

ansible+jenkins實戰

1、部分機器信息:
技術分享圖片
2、遠程執行用戶:(ansible機器並沒有開通外網哦)
技術分享圖片
技術分享圖片
3、ansible用到的兩個重要角色

/etc/ansible/hosts      #hosts文件定義主機與和執行權限
/etc/ansible/roles       #roles是任務集合,可在roles下面新建多模塊,如tomcat,jdk、yum源,防火墻等,分角色方便管理且靈活

##Jenkins配置
1、新建-自由分格項目
項目名稱:lbbs
Svn配置:(這個svn地址也是內網哦)
地址:svn://172.17.103.10:3391/lbproject/bs/
技術分享圖片
###構建:
1)、增加構建後的操作-->Invoke Ansible Playbook

技術分享圖片

Playbook path:/etc/ansible/roles/lbbs/lbbs.yml (備註:該路徑為ansible的roles)
Inventory:選擇File or host list File path or comma separated host list:/etc/ansible/hosts (備註:該路徑為ansible的hosts文件)
Hostsubset:lbbs (備註:此處為hosts文件中ip或者定義的主機組都行

技術分享圖片

[root@lbzpf bs]# cat /etc/ansible/roles/lbbs/tasks/main.yml 
- name: copy package to 103.111 
  copy: 
    src={{ src_path }}/103.111/ne-ops-1.0.0.war
    dest={{ dest_path }}   
    backup=yes  #開啟遠程備份,在遠程主機/ane/update下備份
  when: "ansible_nodename == ‘lb_bs1‘ and ansible_eth0.ipv4.address == ‘172.17.103.111‘"   #條件判斷 
- name: copy package to 103.32 
  copy:
    src={{ src_path }}/103.32/ne-ops-1.0.0.war
    dest={{ dest_path }}
    backup=yes
  when: "ansible_nodename == ‘bs-web04‘ and ansible_eth0.ipv4.address == ‘172.17.103.32‘"
備註:加when條件判斷原因是:war包裏有個文件引用了當前的主機ip,沒辦法,只能這樣了

[root@lbzpf bs]# cat  /etc/ansible/roles/lbbs/vars/main.yml   #vars定義了上面用到的兩個變量路徑
src_path: /var/lib/jenkins/workspace/lbbs    #源路徑
dest_path: /ane/update   #目標路徑

技術分享圖片
2)、增加構建後的操作-->(Invoke Ansible Ad-Hoc Command)
技術分享圖片
###發布
1、Jenkins中點擊立即構建,或者指定定時任務,
技術分享圖片
2、編寫計劃任務發布
發布時間一般是固定的,所以可以指定定時任務(通linux下的crond),讓其自動構建操作
技術分享圖片

檢查執行結果
技術分享圖片
技術分享圖片
技術分享圖片

ansible+jenkins+svn實現生產環境自動發布