Ansible 入门:从零开始在 AWS 上安装 Apache
Source: Dev.to
什么是配置管理?
配置管理是将计算机系统和软件保持在期望的、统一的状态的实践。与其手动逐台更新数十台服务器,不如一次编写配置并将其推送到所有服务器。
有代理 vs. 无代理
基于代理(Chef/Puppet)
必须在每台目标服务器上安装代理才能进行管理。
无代理(Ansible)
Ansible 通过 SSH 连接。如果你能 SSH 登录一台服务器,就可以使用 Ansible 管理它——目标节点上不需要额外的软件。
Inventory 文件 (inventory.ini)
Ansible 需要知道在哪里运行命令。这在 inventory.ini 文件中定义,你可以在其中对服务器进行分组,以便有针对性地操作。
# inventory.ini
[dbservers]
# example host entry
ubuntu@172.23.24.3
无密码认证(自动化的关键)
由于 Ansible 使用 SSH,如果每次命令都要输入密码将非常不切实际。使用 SSH 密钥设置无密码认证:
- 在控制节点(例如 VirtualBox 上的 Ubuntu 机器)生成密钥。
- 使用
ssh-copy-id -i key.pem user@ip_address将公钥复制到 AWS EC2 实例。
完成后,Ansible 就可以在不手动输入密码的情况下与 AWS 服务器通信。
Ansible 临时命令
临时命令是快速的一行操作,适合在编写完整 playbook 之前使用。
-
Ping 所有服务器:
ansible all -m ping -
检查
webservers组的磁盘空间:ansible webservers -a "df -h"
项目:在 EC2 上安装 Apache
在一次动手练习中,我将本地 Ubuntu 机器(运行在 VirtualBox 中)连接到 AWS EC2 实例,并使用临时命令:
- 更新软件包索引。
- 远程安装 Apache Web 服务器。
在 EC2 实例的公网 IP 上看到默认的 Apache 页面加载,说明操作成功。
接下来做什么?
我简要了解了 playbook,它们对于配置大量实例和处理复杂工作流至关重要。我的下一个目标是使用 Ansible 创建并运行完整的 playbook。