在 CentOS 上用 Golang 落地自动化运维
一 环境准备与工程骨架
wget https://golang.org/dl/go1.20.linux-amd64.tar.gz && sudo tar -C /usr/local -xzf go1.20.linux-amd64.tar.gz~/.bash_profile 或 /etc/profile):
export GOPATH=$HOME/goexport PATH=$PATH:/usr/local/go/bin:$GOPATH/binsource ~/.bash_profile && go versiongo mod init myopsgo get github.com/gorhill/cronexprgo get golang.org/x/crypto/sshgo get github.com/spf13/cobra-cli二 常见运维场景与 Golang 实现
.log 文件,防止磁盘被占满。systemctl is-active 检测服务状态,异常时 systemctl start 拉起,并记录事件日志。os/exec 调用 nmcli/ifcfg 或编辑网络配置文件,实现 IP/网关/DNS 的自动化配置(变更前务必备份与回滚预案)。三 示例代码片段
df -h,筛选包含 /dev/ 的行并输出,便于接入阈值告警。systemctl start 并记录日志。systemctl is-active 的返回值和字符串修剪。uptime 并汇总结果。四 工程化与交付实践
Restart=always、RestartSec=5,确保崩溃自动拉起;日志接入 journald。sudo。docker push 推送到仓库;在 Kubernetes 以 Deployment/Service 部署,配合 Jenkins/GitLab CI 实现自动构建、测试与发布。