zoukankan      html  css  js  c++  java
  • 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'

             

  • 相关阅读:
    关于ThreadLocal
    二月份推荐的书籍
    《编写高质量代码:改善Java程序的151个建议》笔记
    Oracle中定义package以及存储过程的使用
    不同系统平台下Java默认的安装路径
    WebSphere数据源配置
    Dedication(转)
    Upgrading to Java 8——第二章 Method References(方法引用)
    Upgrading to Java 8——第一章 Lambda表达式
    Multi-catch
  • 原文地址:https://www.cnblogs.com/yxh168/p/13277549.html
Copyright © 2011-2022 走看看