• ansible DBA常用场景命令小集


           这个小工具真的好用,运维方便了很多。随着慢慢用的变多,整个单独的文档记录一些平时需要批量处理的小场景和命令。

           因为场景通常比较简单,基本都是用的 Linux命令和shell脚本,也没什么学习成本。理论上只要能写好shell脚本、传到目标库、执行,足够干n多事情了。基本命令参考:

    ansible权威指南笔记(一)—— 安装配置、常用命令与模块_Hehuyi_In的博客-CSDN博客_ansible中文权威指南

    一、 检查服务器磁盘使用率

    主要场景:节前快速检查服务器磁盘

            先从最简单的开始,利用ansible批量执行 df -h 命令,并且这个普通用户都能执行,不存在sudo之类的配置。想看的方便点也可以搞成个shell脚本,下面有批量执行shell脚本的方法。

    •  编辑host文件(任意位置均可)

    vi /tmp/host

    1. [all:vars]
    2. ansible_ssh_user=dba # ssh用户
    3. ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
    4. [testgroup]
    5. 10.192.168.101
    6. 10.192.168.137 ansible_ssh_port=9528
    • 批量执行df -h命令
    ansible -i /tmp/host testgroup -m shell -a "df -h" > disk_usage.txt

    二、 安装/更新软件包

    主要场景:服务器需要批量安装新软件包,或者修复漏洞要批量升级。 

    • 编辑host文件(任意位置均可)

    vi /tmp/host

            生产服务器一般不会有root的密码,都是sudo用户切换过去的,所以下面的文件加上了sudo的配置。

    1. [all:vars]
    2. ansible_ssh_user=dba # ssh用户
    3. ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
    4. ansible_become=true # 执行sudo
    5. ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
    6. [testgroup]
    7. 10.192.168.101
    8. 10.192.168.137 ansible_ssh_port=9528
    • 传送rpm文件至目标库
    1. # /tmp/host为host文件位置,testgroup为主机组名称
    2. ansible -i /tmp/host testgroup -m copy -a "src=polkit-0.112-26.0.1.el7_9.1.x86_64.rpm dest=/tmp/"
    • 更新rpm文件
    ansible -i /tmp/host testgroup -m shell -a "cd /tmp; rpm -Uvh polkit-0.112-26.0.1.el7_9.1.x86_64.rpm"

    三、 备份原文件,发送新文件

    主要场景:批量修改服务器配置文件、监控脚本等

    • 编辑host文件(任意位置均可)

    vi /tmp/host

    1. [all:vars]
    2. ansible_ssh_user=dba # ssh用户
    3. ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
    4. ansible_become=true # 执行sudo
    5. ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
    6. [testgroup]
    7. 10.192.168.101
    8. 10.192.168.137 ansible_ssh_port=9528
    • 备份旧文件
    ansible -i /tmp/host testgroup -m shell -a "cd /etc/zabbix/zabbix_agentd.d/zabora/sql/; cp db_enqueue_count.sql db_enqueue_count.sql.bak0802"
    • 传送新文件至各服务器
    ansible -i /tmp/host testgroup -m copy -a "src=db_enqueue_count.sql dest=/etc/zabbix/zabbix_agentd.d/zabora/sql/"

    当然还可以再传个小脚本验证下配置有没成功

    四、sql 与 shell 脚本执行

    主要场景:批量设置Oracle、pg 数据库参数、创建用户、执行shell脚本等等

    • 编辑host文件(任意位置均可)

    vi /tmp/host

           因为是改数据库参数,这里我们需要用oracle用户,但是没有oracle用户的密码(也可能每个服务器上密码是不一样的)。所以需要:dba用户 -> sudo切换到root -> 切换到oracle

    1. [all:vars]
    2. ansible_ssh_user=dba # ssh用户
    3. ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
    4. ansible_become=true # 执行sudo
    5. ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
    6. ansible_become_user=oracle # 再切换到oracle用户
    7. [testgroup]
    8. 10.192.168.101
    9. 10.192.168.137 ansible_ssh_port=9528
    • 准备修改脚本

    vi setParams.sh

    1. #!/bin/bash
    2. source ~/.bash_profile
    3. sqlplus -S / as sysdba << EOF
    4. set heading off feedback off pagesize 0 verify off echo off
    5. Alter system set "_optimizer_use_feedback" = FALSE;
    6. Alter system set "_optimizer_gather_feedback" = FALSE;
    7. EOF

    chmod +x setParams.sh

    • 传送脚本并执行

    script命令 = 传送+执行+删除脚本,一步到位  

    ansible -i /tmp/host testgroup -m script -a "setParams.sh"

    更多场景,等待发现...

  • 相关阅读:
    Python数据展示 - 生成表格图片
    【时间序列分析】A Transformer-based Framework for Multivariate Time Series Representation Learning论文笔记
    Redisson 高性能 Redis 分布式锁源码分析
    Android cannot resolve constructor intent解决
    综合案列——产品模块布局
    软件安装教程1——Neo4j下载与安装
    【线上Java项目部署Bug记录】天翼云80端口不能使用,即使暴露了也不行!!!
    JavaWeb-三大核心组件(Servlet、Filter、Listener)
    【时间之外】风险经营的数字化
    效果类似于 distinct 的列值去重/统计 Excel中有unique函数 numbers表格中无
  • 原文地址:https://blog.csdn.net/Hehuyi_In/article/details/127830430