ansible学习之路

前言

为了更快速的部署项目,开始学习ansible运维自动化,下面是简单的一些ansible学习心得

安装ansible

以centOs系统为环境,使用yum方式安装

1.安装ansible ,默认安装在 /etc目录下

yum install ansible

2.进入ansible目录

cd /etc/ansible在这里插入图片描述
ansible.cfg 主配置文件,配置ansible工作特性
hosts 主机清单
roles 存放角色的目录

3.配置连接主机

vi hosts

在这里插入图片描述
[test] 表示主机组的名称为test,当命令调用test名称的时候会自动瞎发到27和136这2台主机上
Test1 类似于别名的作用,来识别27号主机的名称为Test1

编辑然后保存退出

4.生成ssh秘钥

ssh-keygen

5.基于ssh的免密登录

ssh-copy-id 192.168.0.27
ssh-copy-id 192.168.0.136

在这里插入图片描述
6.命令测试

ansible test -m ping

在这里插入图片描述

实例

由于刚开始学习,对ansible的认识还仅限于表面,但对于我现在项目来说已经基本可以开始运用了,下面是我项目部署的一个实例

项目情况

项目为spring-boot项目,分布式部署在3台虚机上,所以用到了ansible的文件分发以及远程虚机脚本的执行

  1. 准备

    4台虚机:
    192.168.0.31     
    192.168.0.32      
    192.168.0.33    
    192.168.0.34     
    其中31为跳板机,部署了nginx、ansible、mysql等
    32、33、34分部部署了3个模块的项目
    
  2. 修改ansible里hosts的配置,将32 33 34主机配置进去

    在这里插入图片描述

  3. 执行ssh-copy-id 【ip】命令分发shh秘钥连接虚机.

  4. 分发项目文件(jar包)

    ansible C32 -m copy -a “src=/home/internet-platform/internet-company/target/internet-company-0.0.1-SNAPSHOT-exec.jar dest=/home”
    将跳板机上面的jar发送到32号虚机上
    同理将其他2个模块jar用相同方式分发到33 34号虚机上

  5. 远程执行启动jar操作

    ansible C32 -m command -a "java -jar /home/internet-company-0.0.1-SNAPSHOT-exec.jar "

    远程执行命令这里我使用了脚本,在32 33 34上分别有个start的脚本文件
    内容如下:

    #!/bin/sh
    #company
    RESOURCE_NAME1=/home/internet-company-0.0.1-SNAPSHOT-exec.jar
    tpid=ps -ef|grep $RESOURCE_NAME1|grep -v grep|grep -v kill|awk '{print $2}'
    if [ ${tpid} ]; then
    echo ‘Stop Process…’
    kill -15 $tpid
    fi
    sleep 5
    tpid=ps -ef|grep $RESOURCE_NAME1|grep -v grep|grep -v kill|awk '{print $2}'
    if [ ${tpid} ]; then
    echo ‘Kill Process!’
    kill -9 $tpid
    else
    echo ‘companyStop Success!’
    fi
    tpid=ps -ef|grep $RESOURCE_NAME1|grep -v grep|grep -v kill|awk '{print $2}'
    if [ ${tpid} ]; then
    echo ‘App is running.’
    else
    echo ‘App is NOT running.’
    fi
    rm -f tpid
    nohup java -jar $RESOURCE_NAME1 &
    echo $! > tpid
    echo companyStart Success!

    该脚本;实现了:确认该jar是不是在执行中,如果是就kill掉,然后再执行java -jar的命令

    最后在31号机上用ansible执行这个脚本文件

    ansible C32 -m command -a “sh /start”

    这样就不会导致因为原有的jar包在跑而出现报错情况了

  6. 问题解决:

    ansible C32 -m command -a “sh /start”

    在执行这条命令时可能会报错,比如找不到java文件、java命令不存在等
    原因:
    当用ansible发送远程java命令时,远程服务器所配置的java环境变量不生效,所以需要在远程脚本上重新把环境变量配置上去,即在start脚本文件开头添加 source /etc/profile

结尾

以上就是我这几天学习ansible的结果以及对它的应用,当然都是一些比较简单粗浅的运用。而ansible的核心,比如PLAYBOOKS、MODULES、PLUGINS、API、ANSIBLE等等还没有用到,还需继续学习。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值