这个小工具真的好用,运维方便了很多。随着慢慢用的变多,整个单独的文档记录一些平时需要批量处理的小场景和命令。
因为场景通常比较简单,基本都是用的 Linux命令和shell脚本,也没什么学习成本。理论上只要能写好shell脚本、传到目标库、执行,足够干n多事情了。基本命令参考:
ansible权威指南笔记(一)—— 安装配置、常用命令与模块_Hehuyi_In的博客-CSDN博客_ansible中文权威指南
主要场景:节前快速检查服务器磁盘
先从最简单的开始,利用ansible批量执行 df -h 命令,并且这个普通用户都能执行,不存在sudo之类的配置。想看的方便点也可以搞成个shell脚本,下面有批量执行shell脚本的方法。
vi /tmp/host
- [all:vars]
- ansible_ssh_user=dba # ssh用户
- ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
-
- [testgroup]
- 10.192.168.101
- 10.192.168.137 ansible_ssh_port=9528
ansible -i /tmp/host testgroup -m shell -a "df -h" > disk_usage.txt
主要场景:服务器需要批量安装新软件包,或者修复漏洞要批量升级。
vi /tmp/host
生产服务器一般不会有root的密码,都是sudo用户切换过去的,所以下面的文件加上了sudo的配置。
- [all:vars]
- ansible_ssh_user=dba # ssh用户
- ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
- ansible_become=true # 执行sudo
- ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
-
- [testgroup]
- 10.192.168.101
- 10.192.168.137 ansible_ssh_port=9528
- # /tmp/host为host文件位置,testgroup为主机组名称
- ansible -i /tmp/host testgroup -m copy -a "src=polkit-0.112-26.0.1.el7_9.1.x86_64.rpm dest=/tmp/"
ansible -i /tmp/host testgroup -m shell -a "cd /tmp; rpm -Uvh polkit-0.112-26.0.1.el7_9.1.x86_64.rpm"
主要场景:批量修改服务器配置文件、监控脚本等
vi /tmp/host
- [all:vars]
- ansible_ssh_user=dba # ssh用户
- ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
- ansible_become=true # 执行sudo
- ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
-
- [testgroup]
- 10.192.168.101
- 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/"
当然还可以再传个小脚本验证下配置有没成功
主要场景:批量设置Oracle、pg 数据库参数、创建用户、执行shell脚本等等
vi /tmp/host
因为是改数据库参数,这里我们需要用oracle用户,但是没有oracle用户的密码(也可能每个服务器上密码是不一样的)。所以需要:dba用户 -> sudo切换到root -> 切换到oracle
- [all:vars]
- ansible_ssh_user=dba # ssh用户
- ansible_ssh_pass=xxxx # ssh用户的密码,配置了key可以不用
- ansible_become=true # 执行sudo
- ansible_become_pass=xxxxx # sudo切换的密码,配置了免密可以不用
- ansible_become_user=oracle # 再切换到oracle用户
-
- [testgroup]
- 10.192.168.101
- 10.192.168.137 ansible_ssh_port=9528
vi setParams.sh
- #!/bin/bash
-
- source ~/.bash_profile
- sqlplus -S / as sysdba << EOF
- set heading off feedback off pagesize 0 verify off echo off
- Alter system set "_optimizer_use_feedback" = FALSE;
- Alter system set "_optimizer_gather_feedback" = FALSE;
- EOF
chmod +x setParams.sh
script命令 = 传送+执行+删除脚本,一步到位
ansible -i /tmp/host testgroup -m script -a "setParams.sh"
更多场景,等待发现...