Ansible自動化部署服務

1、安裝部署
yum inatsll ansible -y

2、配置文件
Ansible常用參數詳解

[defaults]          #通用默認配置
inventory      = /etc/ansible/hosts     #被控制端IP或者DNS列表
library        = /usr/share/my_modules/     ##默認搜尋模塊的位置
remote_tmp     = ~/.ansible/tmp            #遠程執行臨時文件
local_tmp      = ~/.ansible/tmp
plugin_filters_cfg = /etc/ansible/plugin_filters.yml
forks          = 5      ##並行線程數
poll_interval  = 15     ##回頻率或輪詢間隔時間
sudo_user      = root       ##sudo遠程執行用戶名
ask_sudo_pass = True        ##使用sudo,是否需要輸入密碼
ask_pass      = True        ##是否需要輸入密碼
transport      = smart      ##通信機制
remote_port    = 22         ##遠程SSH端口
module_lang    = C          ##模塊和系統之間通信的語言
module_set_locale = False
gathering = implicit        ##控制默認facts收集(遠程系統變量)
gather_subset = all
gather_timeout = 10
roles_path    = /etc/ansible/roles      ##使用playbook搜索Ansible roles
host_key_checking = False       ##是否檢查遠程主機密鑰
sudo_exe = sudo         ##sudo遠程執行命令
sudo_flags = -H -S -n       ##傳遞sudo之外的參數
timeout = 10            ##SSH超時時間
remote_user = root      ##遠程登錄用戶名
log_path = /var/log/ansible.log     ##日誌文件存放路徑
module_name = command       ##Ansible命令默認執行的模塊
executable = /bin/sh        ##執行的shell環境,用戶shell模塊
hash_behaviour = replace    ##特定的優先級覆蓋變量
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18    ##允許開啓jinja2擴展模塊
private_key_file = /path/to/file    ##私鑰文件存儲位置
display_skipped_hosts = True        ##顯示跳過任何任務的狀態
system_warnings = True      ##禁用系統運行Ansible潛在問題警告
deprecation_warnings = True     ##PlayBook輸出禁用“不建議使用”警告
command_warnings = False    ##command模塊Ansible默認發出警告
nocolor = 1         ##輸出帶上顏色區別,0表示開啓,1表示關閉
pipelining = False      ##開啓pipe SSH通道優化

[accelerate]        ##accelerate緩存加速
accelerate_port = 5099      ##加速連接端口5099
accelerate_timeout = 30     ##命令執行超過時間,單位爲s
accelerate_connect_timeout = 5.0    ##上一個活動連接的時間,單位爲min
accelerate_daemon_timeout = 30      ##允許多個私鑰被加載到daemon
accelerate_multi_key = yes      ##任何客戶端想要連接daemon都要開啓這個選項

簡單配置
配置ansible.cfg 文件

[root@localhost ansible]# cat ansible.cfg 
[defaults]
inventory = /root/ansible/inventory
remote_user = root
roles_path = /root/ansible/roles

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

配置 inventory文件

[root@localhost ansible]# cat inventory 
goods-service
[sy-test]
sy-test-service

配置hosts文件

[root@localhost ansible]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 walle.china95059.com 
192.168.1.5 sy-test-service

配置執行文件sy-test.yml

---
- hosts: sy-test
  tasks:
    - name: uat-back
      shell: mv /home/project/shangye/uat-prj-shangye-biz-app.jar /home/project/shangye/uat-prj-shangye-biz-app.jar-20210120.bak
    - name: scp
      copy:
        src: /opt/shangye/uat-prj-shangye-biz-app.jar
        dest: /home/project/shangye/uat-prj-shangye-biz-app.jar
    - name: restart service
      shell: source /etc/profile; cd /home/project/shangye; source ~/.bash_profile; sh 902.驗收商業app.sh nohup
    - name: ust the new website
      shell: /opt/sy/test.sh

編寫服務啓動檢查腳本

#!/bin/bash
i=0
host_ip=`ifconfig | grep "\<inet\>" | grep -v 127.0.0.1 | head -1 | awk '{print $2}'` #截取主機ip
while ((i <= 8))
do
    curl http://$host_ip:8001/app/deployTest -D /opt/sh/curl.txt &> /dev/null    #訪問tomcat網站,並將頭部信息存放在指定文件中
    num=`head -1 /opt/sh/curl.txt| cut -d' ' -f2`                 #截取網站響應碼
    if [[ "$num" == "200" ]];then                    #判斷響應碼是否正常
            exit 0                                        #正常返回0
    fi
    sleep 15
    ((i++))
done
exit 1

運行命令ansible-playbook sy-test.yml

注意:ansibl機器到目標機器一定要免密登錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章