wallpaper from Sonny Boy
396 字
2 分钟
Ansible
前言
Ansible默认通过 SSH 协议管理机器,配置管理、应用部署和任务自动化。
Agentless: Ansible 不需要在目标主机上安装代理,只需通过 SSH 连接。
Playbooks: 使用 YAML 编写的自动化脚本,用于定义任务。
Inventory: 定义目标主机列表,可以是静态文件或动态生成。
Modules: 预定义的任务模块,用于完成具体操作(如文件管理、服务启动等)。
Roles: 用于组织和复用配置,方便管理复杂项目。
Ad-hoc Commands: 用于执行简单的单次命令。
# inventory 默认目录
/opt/homebrew/Cellar/ansible/11.1.0_1/inventory
# 配置好IP后,分发ssh密钥
# 在 Ansible 主机上运行 (前提已配好ssh)
ssh-copy-id 目标主机名次@目标主机IP
# 使用 Ad-hoc 命令测试连接:
ansible all -i inventory -m ping
监控
可以通过写 Playbooks 方式收集主机信息,使用脚本将日志连入Prometheus。
Prometheus 配置
scrape_configs:
- job_name: 'ansible'
static_configs:
- targets: ['<exporter_ip>:9100']
安全问题
于控制主机(Ansible 控制节点)通过 SSH 管理所有目标主机(Inventory 中的主机),一旦控制主机被攻破,黑客可能会获取对所有目标主机的控制权限。因此,需要采取以下安全措施来降低风险:
- 最小化权限:控制用户权限,防止过多访问。
- 数据加密:使用 Vault 加密敏感数据。
- 隔离环境:控制节点与公网隔离,必要时使用跳板机。
- 监控和审计:记录所有操作并实时监控异常活动。
参考: