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機器到目標機器一定要免密登錄