ansible啟動和管理遠程主機服務


Ansible執行遠程shell流程

      1.ansible自動化運維工具屬於非交互式登陸方式進行機器管理--(默認不加載bash和系統env環境變量)

      2.ansible 命令執行流程--->ansible master執行--> 客戶端機器臨時家目錄路徑如:/home/ops/.ansible/tmp/

      3.如上目錄/home/ops/.ansible/tmp/AnsiballZ_command.py 新增臨時py 文件然后執行py文件->清理生成臨時腳本

      4.ansible -vvv 查看執行過程

本地shell啟動java成功

#!/bin/sh

export LANG=zh_CN.UTF-8

RESOURCE_NAME=admin-dev.jar

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
        echo 'Stop admin Process...'
        kill -15 $tpid
fi

sleep 5

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
        echo 'Kill admin Process!'
        kill -9 $tpid
else
        echo 'Stop admin Success!'
fi

sleep 6

echo 'Start Process...'
nohup java -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME >/dev/null 2>&1 &

sleep 6

count=`ps -ef |grep java|grep $RESOURCE_NAME|grep -v grep|wc -l`
if [ $count != 0 ];then
    echo 'admin Start Success...'
else
    echo 'admin Start Fail...'
fi
View Code

 

Ansible遠程執行失敗

    ansible webservers --user=admin -m shell -a /home/admin/app/start-register.sh

 

   原因:

       ansible執行腳本流程會在/home/admin/.ansible/tmp/目錄下找 register-center-dev.jar發現沒有此文件故報錯; Unable to access jarfile register-center-dev.jar

   修改下shell腳本即可

       在腳本最前面添加兩行

      CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )   #如果第一條語句順利執行,就執行pwd顯示當前目錄,並將結果賦值給變量“CURDIR”
      cd $CURDIR

#!/bin/bash 



export LANG=zh_CN.UTF-8
RESOURCE_NAME=register-center-dev.jar

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Register Process...'
    kill -15 $tpid
fi

sleep 5

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Register Process!'
    kill -9 $tpid
else
    echo 'Stop Register Success!'
fi

echo 'Start Process...'
#nohup java  -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME >/dev/null 2>&1 & 
/usr/bin/java  -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME 
     
count=`ps -ef |grep java|grep $RESOURCE_NAME|grep -v grep|wc -l`
if [ $count != 0 ];then
    echo 'Register Process Start Success...'
else
    echo 'Register Process Start Fail...'
fi
原腳本
#!/bin/bash 

CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )
cd $CURDIR 

export LANG=zh_CN.UTF-8
RESOURCE_NAME=register-center-dev.jar

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Register Process...'
    kill -15 $tpid
fi

sleep 5

tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Register Process!'
    kill -9 $tpid
else
    echo 'Stop Register Success!'
fi

echo 'Start Process...'
#nohup java  -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME >/dev/null 2>&1 & 
/usr/bin/java  -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME 
     
count=`ps -ef |grep java|grep $RESOURCE_NAME|grep -v grep|wc -l`
if [ $count != 0 ];then
    echo 'Register Process Start Success...'
else
    echo 'Register Process Start Fail...'
fi
新腳本

    ansible遠程執行shell啟動jar包成功

調試啟動腳本日志

        1.啟動命令的時候不要使用nohup方式執行,這樣腳本的錯誤信息將無法實時的輸出到控制台

         

       nohup java -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME >/dev/null 2>&1 &
        改成
       java -jar -Xmx2048m -Xms2048m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m $RESOURCE_NAME

配置ssh免密登錄失敗

           設置完后仍然要輸入密碼,發現是被登錄機器的文件權限問題

           chmod 700 /home/admin

           chmod 600 /home/admin/.ssh/authorized_keys

           chmod 700 /home/admin/.ssh/

          調試登錄連接信息

          ssh -vvv     'admin@192.168.309.115'

         

 ansible遠程執行shell異常

     使用ansible執行遠程機器上的shell腳本出現失敗情況

       

      

     執行遠程腳本前先加載環境變量

        ssh admin@192.168.30.102   'source /etc/profile && /app/taishi/flink/flink-1.12.2/bin/start-cluster.sh'

        

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM