聊聊Ansible批量部署Node Exporter到底省了哪些步骤?下载、建用户、写systemd和启动服务一次编排

开发过程中有些细节容易被忽略,今天挑几个重点聊一聊。

前言

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)
它最大的特点是:简单、无代理、基于SSH、用YAML语法。

1.2 Ansible的核心作用

1. 批量执行命令

无需逐台登录服务器,一条命令可在成百上千台机器上同时运行:

1. 统一配置管理

确保所有服务器的配置一致,比如:

  • 安装指定版本的软件(如 Node Exporter、Nginx)
  • 同步配置文件(如 /etc/hosts、prometheus.yml)
  • 创建用户、设置权限、管理服务状态
  • 自动化部署应用
通过 Playbook(YAML 文件)定义部署流程,一键搞定复杂应用上线:

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)

暂无评论