ansible的安装、简单使用、问题解决

本文介绍了如何使用Ansible替代传统手动方式来搭建和管理集群,通过实例演示了Ansible的常用命令,如ping测试、文件复制、shell命令执行等。还探讨了处理shell命令中的特殊字符和变量定义的方法,提高了集群管理的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 之前自己搭建集群,使用方法非常老土:
    • 在一个机器完成所有的配置,通过scp同步到其他机器
    • 逐个机器的登录,在每台机器上启动服务
  • 工作以后发现,自己感觉做事很吃力时,还是多上网查查,不要傻傻地用笨方法
  • 搭建集群时,使用ansible下发安装包、查看机器状态等,简直不要太方便
  • 由于时间问题,ansible的安装、简单使用,可以参考博客:ansible批量执行命令

1. 常见的使用命令

  • 自己经常使用到的命令有

    # 测试配置的机器是否能ping通
    ansile test -m ping 
    
    # 指定hosts,而非使用默认/etc/ansible/hosts配置
    ansile test -m ping -i hosts
    
    # 指定登录用户
    ansible test -m shell -a "sudo jps" -u datard -k
    
    # 拷贝命令
    ansible test -m copy -a 'src=./jvm.properties dest=/opt/xxx/etc/'
    
    # 执行shell命令
    ansible test -m shell -a 'cat /opt/xxxx/jvm.properties | grep  "max.request.size" '
    

2. 一些高阶需求

2.1 shell模块,命令中有特殊字符

  • 通过shell执行shell命令时,需要通过awk获取某些列的数据并打印。

  • 其中awk '{print $1}'中,$属于特殊字符,需要添加转义字符\才能正常运行

    ansible test -m shell -a "sudo jps | awk '{print \$1}'" 
    

2.2 shell模块,命令中需要定义变量

  • 将命令的执行结果赋值给变量,再针对该变量进行后续处理
  • 下面命令的意图:获取某个服务的进程pid,然后进入对应的/proc/pid目录获取其工作目录信息(cwd
  • 这时,需要将sudo jps | grep xxServer | awk '{print \$1}'的结果保存变量中,变量的定义方式$( ... )
  • 同样需要对变量定义中的$添加转义字符\
    ansible test -m shell -a "sudo ls -l /proc/\$(sudo jps | grep xxServer | awk '{print \$1}') | grep cwd " 
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值