95 lines
2.9 KiB
Markdown
95 lines
2.9 KiB
Markdown
Ansible 是一个开源的自动化工具,主要用于配置管理、应用部署、和任务自动化。它通过编写简单的人可读的配置文件(YAML 格式的剧本,称为Playbooks)来定义自动化流程。Ansible 不需要在被管理节点上安装任何代理程序,使用的是 SSH 协议进行通信,这使得它非常轻量且易于部署。
|
||
|
||
### Ansible 可以做什么:
|
||
|
||
1. **配置管理**:确保服务器的状态如期望的那样。例如,安装软件包、设置系统配置等等。
|
||
2. **应用部署**:自动化应用程序的安装、升级和管理过程。
|
||
3. **任务自动化**:可以自动化执行日常的维护和操作任务。
|
||
4. **编排**:管理不同设备和服务之间的复杂工作流。
|
||
|
||
### 搭建流程:
|
||
|
||
1. **安装 Ansible**:
|
||
- 首先确保你有一台控制节点(通常是你的本地开发机),以及一台或多台被管理节点。
|
||
- 在控制节点上安装 Ansible。可以通过以下命令在大多数 Linux 发行版上安装:
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install ansible
|
||
```
|
||
|
||
对于 macOS 用户,可以使用 Homebrew:
|
||
|
||
```bash
|
||
brew install ansible
|
||
```
|
||
|
||
2. **配置 SSH 访问**:
|
||
- 确保 Ansible 控制节点可以通过 SSH 访问到被管理节点。
|
||
- 你可以用 SSH 密钥对来配置无密码登录:
|
||
|
||
```bash
|
||
ssh-keygen -t rsa
|
||
ssh-copy-id user@managed_node_ip
|
||
```
|
||
|
||
3. **设置清单文件**:
|
||
- 创建一个清单文件用于定义被管理节点,可以命名为 `hosts.ini`:
|
||
|
||
```ini
|
||
[webservers]
|
||
192.168.0.101
|
||
192.168.0.102
|
||
|
||
[databases]
|
||
192.168.0.103
|
||
```
|
||
|
||
4. **编写一个简单的 Playbook**:
|
||
- 创建一个 YAML 文件,如 `site.yml`:
|
||
|
||
```yaml
|
||
---
|
||
- name: Install and start Apache
|
||
hosts: webservers
|
||
become: yes
|
||
tasks:
|
||
- name: Ensure Apache is installed
|
||
apt:
|
||
name: apache2
|
||
state: present
|
||
|
||
- name: Ensure Apache is running
|
||
service:
|
||
name: apache2
|
||
state: started
|
||
```
|
||
|
||
5. **运行 Ansible Playbook**:
|
||
- 运行以下命令执行 Playbook:
|
||
|
||
```bash
|
||
ansible-playbook -i hosts.ini site.yml
|
||
```
|
||
|
||
### 测试一个小 Demo:
|
||
|
||
首先确保你控制节点配置好了 SSH 访问和清单文件。然后,创建一个简单的 Playbook 文件 `demo.yml`,内容如下:
|
||
|
||
```yaml
|
||
---
|
||
- name: Echo message to managed nodes
|
||
hosts: all
|
||
tasks:
|
||
- name: Echo Hello World
|
||
command: echo "Hello World"
|
||
```
|
||
|
||
运行如下命令来执行这个简单的 Playbook:
|
||
|
||
```bash
|
||
ansible-playbook -i hosts.ini demo.yml
|
||
```
|
||
|
||
这个 Playbook 将会在所有被管理节点上执行 `echo "Hello World"` 命令。通过这种小测试,可以确认 Ansible 环境的配置是否成功,并验证基础功能的正常运行。
|