木讷大叔爱运维

运维细无声,让我们放松对变更、风险及基线的警惕!

Image

预计阅读时间3分钟Image

Image

导语

面向大开大合的架构、容器化、DevOps运维,是否会让我们陷入迷之自信,以为可以运维细无声,从而放松对变更、风险及基线的警惕,这不在集思广益的讨论下,大叔来给大家送精神食粮来了!

需求:多场景下的证书续期替换!

问题点:多云环境、两地三中心、多负载以及证书变更等情况下,如何高效、完整平滑的替换证书变得有点棘手!

目标:周期性的巡检、快速替换。

  • 方案1:acme自动更新,配置blackbox告警
  • 方案2:写好证书分发流程,批量工具ansible处理
  • 方案3:写个文档,运维作业遵循SOP
  • 方案4:产品化证书管理系统

总结:证书管理是一件看起来不起眼,但是责任巨大的事务性工作!

Image

需求:处理非权限内但职责范围内的场景!

问题点:运维经常会遇到处理非权限内需求的场景,但这可能涉及到责任、权限和合规性等多个方面,稍有不慎就会陷入麻烦!

审慎解决:通过以下方法确保在处理非权限内需求时,既满足业务需求,又遵守相关法规和公司政策,保障系统的安全和稳定。

  1. 明确责任:首先要弄清楚需求的来源和目的。如果是上级或同事要求的,需要与他们沟通,明确责任和需求的合理性。如果是自己的测试需求,应该在非生产环境中进行,避免对生产环境造成影响。
  2. 权限管理:对于非权限内的需求,需要通过正式的流程申请相应的权限。如果没有明确的授权,私自操作可能会违反公司政策,甚至触犯法律法规。
  3. 合规性:在处理数据时,要严格遵守数据保护法规和公司的数据管理政策,避免数据泄露和滥用。
  4. 风险评估:对于任何可能影响生产环境的操作,都需要进行风险评估,确保操作的安全性和必要性。
  5. 沟通协调:与相关部门和人员进行沟通,寻求他们的支持和理解,通过正式的渠道解决问题。
  6. 记录和审计:对于所有的操作,都要有详细的记录和审计,以备后续的审查和追溯。
  7. 培训和教育:加强对员工的安全意识和合规性培训,提高他们对权限问题的认识。
  8. 技术手段:在技术上,可以采用权限管理系统,来严格控制权限的分配和使用。

    Image

需求:CentOS 7 EOL,如何确保继续使用YUM安装软件包!

问题点:当 CentOS 7 已达到生命周期结束(EOL,End of Life)时,原有的 YUM 仓库源可能不再有效。这种情况下,脚本通过将仓库源替换为阿里云的 centos-vault 和 epel-archive 镜像源来确保系统可以继续使用 YUM 安装软件包。

这不有乐于分享的大佬专供了此脚本,其功能为已经到达生命周期结束的 CentOS 7 系统替换无法使用的 YUM 仓库源,使系统能够继续正常获取和安装软件包,尤其是 EPEL 软件包。通过备份、修改、安装和记录状态,确保整个过程稳定且可恢复。

#!/bin/bash

ACTIVE_REPO_DIR="/etc/yum.repos.d"
BACKUP_REPO_DIR="$ACTIVE_REPO_DIR/backup"
STATUS_FILE="/etc/yum.repos.d/CENTOS7_EOL_REPO_URL_PATCHED.txt"
CENTOS_VAULT_SERVER_BASE="https://mirrors.aliyun.com/centos-vault"
EPEL_RPM_URL="https://mirrors.aliyun.com/epel-archive/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm"
EPEL_REPO="epel.repo"
EPEL_VAULT_SERVER_BASE="https://mirrors.aliyun.com/epel-archive"

# Check if the script has already been run
if [ -f "$STATUS_FILE" ]; then
echo "The script has already been run. Exiting."
cat $STATUS_FILE
exit 1
fi

# Create backup directory
mkdir -p "$BACKUP_REPO_DIR"

# Function to backup and modify repo files
process_repo() {
local repo="$1"
local baseurl="$2"

if [ ! -f "$BACKUP_REPO_DIR/$repo" ]; then
cp "$ACTIVE_REPO_DIR/$repo" "$BACKUP_REPO_DIR"
fi

if [ -f "$ACTIVE_REPO_DIR/$repo" ]; then
if [[ "$repo" == CentOS-* ]]; then
# For CentOS repos
sed -i -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/|baseurl=$baseurl/|g" \
"$ACTIVE_REPO_DIR/$repo"
elif [[ "$repo" == "$EPEL_REPO" ]]; then
# For EPEL repos
sed -i -e "s|^metalink=|#metalink=|g" \
-e "s|^#baseurl=http://download.example/pub/epel/|baseurl=$baseurl/|g" \
"$ACTIVE_REPO_DIR/$repo"
fi
else
echo "File ($ACTIVE_REPO_DIR/$repo) does not exist, skipping replacement"
fi
}

# Process CentOS repos
for repo in CentOS-{Base,fasttrack,x86_64-kernel}.repo; do
process_repo "$repo" "$CENTOS_VAULT_SERVER_BASE"
done

# Import GPG keys and install EPEL
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum install -y epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum install -y "$EPEL_RPM_URL"

# Process EPEL repo
process_repo "$EPEL_REPO" "$EPEL_VAULT_SERVER_BASE"

# Create status file to indicate the script has run
echo "YUM Repositories of EOL'd CentOS 7 and EPEL 7 on this node, had been patched." > "$STATUS_FILE"

echo "Script completed successfully."

为方便大家解析脚本,特使用AI进一步总结脚本的主要功能:

  1. 防止重复运行:

  • 脚本会在 /etc/yum.repos.d/ 目录下创建一个名为 CENTOS7_EOL_REPO_URL_PATCHED.txt 的状态文件。通过检查这个文件,脚本可以判断是否已经运行过,如果已经运行过,则退出并显示之前运行的信息,防止重复执行。
  • 备份原有的 YUM 仓库配置文件:

    • 脚本会创建一个 backup 目录,备份 /etc/yum.repos.d/ 中的原有 .repo 文件,防止误操作或错误配置导致无法恢复。
  • 修改 CentOS 和 EPEL 的 YUM 仓库配置:

    • CentOS 仓库:将原来的 mirrorlist 注释掉,替换成阿里云的 centos-vault 镜像源,确保可以从过期的 CentOS 7 仓库中获取软件包。
    • EPEL 仓库:修改 EPEL 的 .repo 文件,将原来的 metalink 注释掉,替换成阿里云的 epel-archive 镜像源。
  • 导入 GPG 密钥并安装 EPEL:

    • 导入 CentOS 和 EPEL 的 GPG 密钥,确保软件包的来源可信任。
    • 使用 yum install -y 命令安装 epel-release 包,并从阿里云镜像中安装 epel-release-7-14.noarch.rpm。
  • 标记脚本运行状态:

    • 脚本最后创建一个状态文件,记录补丁已经应用的状态,表明 CentOS 7 和 EPEL 7 仓库的源已经被成功修改。
    • Image

    添加好友,邀你入群,运维人的圈子,每日精彩分享,更有小伙伴们的热议!

    Image

    对的那条路,往往不是最好走的!

    精彩文章合集

    文章推荐

    ☞【合集】运维思索系列
    ☞【合集】运维管理系列
    ☞【合集】运维监控之路
    ☞【合集】基础设施自动化之路
    ☞【合集】CI/CD之路
    ☞【合集】Ansible之路
    ☞【合集】K8S之路
    ☞【合集】数据库系列

    札记:“证书管理是一件看起来不起眼,但是责任巨大的事务性工作!“

    --优秀的运维小伙伴

    Image