开发过程中有些细节容易被忽略,今天挑几个重点聊一聊。
前言
Prometheus已经搭起来以后,真正容易变成重复劳动的往往是Node Exporter部署。机器少的时候,逐台SSH进去安装、建用户、写systemd服务还能接受;主机一多,同样的步骤反复执行,版本和目录也更容易出现差异。
Ansible适合把这类“每台机器都要做一遍”的流程固定下来。控制机只要维护Inventory和Playbook,再通过SSH把下载、解压、创建用户、写服务文件、启动并设置开机自启这些步骤统一发到目标主机。
这篇先在Ubuntu上安装Ansible,补齐/etc/ansible下的基础配置,再单独过一遍Node Exporter手工安装流程,方便看清自动化到底替代了哪些重复步骤。
如果后续主机数量继续增加,变化的主要只是Inventory里的目标列表,而部署逻辑本身可以继续复用,不要为每台机器再单独整理一套安装步骤。
随后正文会创建node_exporter.service.j2模板和node_exporter.yml Playbook,把目标主机写进hosts后直接执行ansible-playbook,最终再到被控机确认Node Exporter服务状态。
后半段继续处理另一种场景:目标主机不在同一局域网时,通过cpolar提供SSH入口,再把公网地址和端口写回Ansible Inventory。整篇真正跑的是Inventory登记主机 → Playbook统一部署 → systemd启动Node Exporter → 跨网络主机继续执行同一套自动化这条链。
1.在各位的虚拟机上安装ansiable
1.1 什么是Ansible?
Ansible是一个开源的 自动化运维工具,由Red Hat赞助开发,用于达成:
- 配置管理(Configuration Management)
- 应用部署(Application Deployment)
- 任务自动化(Task Automation)
- IT编排(Orchestration)
1.2 Ansible的核心作用
1. 批量执行命令
无需逐台登录服务器,一条命令可在成百上千台机器上同时运行:
1. 统一配置管理
确保所有服务器的配置一致,比如:
- 安装指定版本的软件(如 Node Exporter、Nginx)
- 同步配置文件(如 /etc/hosts、prometheus.yml)
- 创建用户、设置权限、管理服务状态
- 自动化部署应用
1. 幂等性(Idempotency)
重复执行同一个 Playbook,结果始终一致——没装的会装,已装的不会重复操作,安全可靠。
1. 无需安装客户端(Agentless)
Ansible通过SSH 与目标主机通信,只需控制机安装Ansible,被控机只要有Python 和SSH即可。
1. 支持云和容器编排
可管理AWS、Azure、阿里云等云资源,也能操作Docker、Kubernetes。
1.3 安装ansiale
我这里是ubuntu系统,如果想用centos可以看参考cpolar官网的这篇教程:《别再手动操作了!我用Ansible+cpolar给飞牛OS装了个“遥控器》
登录到 Ubuntu系统,并在APT命令下运行以应用更新:
sudo apt update
sudo apt upgrade -y
安装最新版本的Ansible:
apt install -y ansible
安装搞定后,验证ansiable版本:
ansible --version
我们查看一下,有没有启动文件:
ls /etc/ansible
我发现我这里没有,那我们手动配一下,创建ansiable文件:
mkdir -p /etc/ansible
编写hosts文件:
```
cat > /etc/ansible/hosts
今天的内容大概就这些,实际开发中大家还会遇到更多细节,欢迎留言分享自己的经验。
评论 (0)
暂无评论