跳转至

控制节点与被控制节点

在 Ansible 中,控制节点和被控制节点是其架构的两个基本组成部分。下面是对它们的详细介绍:

控制节点(Control Node)

  • 控制节点是运行 Ansible 并控制其他主机的机器。它是管理和执行 Ansible 剧本的地方,通过 SSH 连接和管理受管节点。负责向被控制节点发送命令和任务。

1. 控制节点的特点:

1. Ansible 安装:

  • 控制节点上必须安装 Ansible 软件。被控制节点无需安装任何 Ansible 软件。
  • 可以使用大多数 Linux 发行版(如 Ubuntu、CentOS、RHEL)或 macOS 作为控制节点。

2. 编写和管理剧本:

  • 控制节点管理所有 剧本(playbooks)、模块(modules)、角色(roles)、配置文件(config files)等存储在控制节点上。并执行这些任务。它从一个中心位置向多个被控制节点发送指令。

3. 执行任务:

  • 控制节点通过 SSH 或 WinRM(Windows Remote Management)与被控制节点通信,执行配置管理和应用部署任务。(这意味着控制节点需要有被控制节点的 SSH 访问权限。)

安装 Ansible 并配置 SSH 访问:

# 在控制节点上安装 Ansible(以 Ubuntu 为例)
sudo apt update
sudo apt install ansible

# 生成 SSH 密钥对并复制公钥到被控制节点
ssh-keygen -t rsa
ssh-copy-id user@managed-node

4. 集中管理:

  • 控制节点集中管理多个被控制节点,简化了大规模系统的管理和自动化。

2.控制节点的流程

1. 编写 Playbook:

    - 用户在控制节点上编写 Ansible Playbook,这些 Playbook 定义了要在受管节点上执行的任务。

2. 管理 Inventory 文件:

    - 控制节点上存放着 Inventory 文件,定义了所有受管节点的列表以及分组信息。

3. 运行 Ansible 命令:

    - 用户在控制节点上执行 Ansible 命令,例如 ansible 和 ansible-playbook,通过这些命令控制节点会将任务发送到受管节点。

2. 被控制节点 (Managed Node)

被控制节点是被控制节点种 Ansible 控制和管理的目标主机或服务器。被控制节点接收并执行来自控制节点的任务和指令。

1. 被控制节点的特点:

1. 无需安装 Ansible:

  • 被控制节点不需要安装 Ansible 软件。只需确保能够通过 SSH(对于 Linux/Unix 系统)或 WinRM(对于 Windows 系统)访问控制节点。

2. 操作系统多样性:

  • 被控制节点可以是任何支持远程连接的操作系统,包括各种 Linux 发行版、Windows、网络设备等。

3. 任务执行:

  • 被控制节点接收来自控制节点的命令,并在本地执行这些命令,从而实现配置管理、应用部署、服务管理等操作。

2. 控制节点与被控制节点的通信方式

1. SSH(Secure Shell):

  • Linux 和 Unix 系统的被控制节点通常通过 SSH 进行通信。控制节点使用 SSH 密钥对来认证和连接被控制节点。

2. WinRM(Windows Remote Management):

  • Windows 系统的被控制节点通过 WinRM 进行通信。控制节点需要配置适当的认证信息以连接 Windows 被控制节点。

3. 举个例子

  1. 编写 inventory 清单文件 一个简单的 Ansible 清单文件(inventory file),列出了控制节点管理的被控制节点:
[webservers]
web1.example.com
web2.example.com

[dbservers]
db1.example.com
db2.example.com
  1. 基本剧本示例 一个简单的 Ansible 剧本示例,展示了控制节点如何与被控制节点交互:
---
- name: Ensure web server is installed
  hosts: webservers
  become: yes
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present

- name: Ensure database server is running
  hosts: dbservers
  become: yes
  tasks:
    - name: Install MySQL
      apt:
        name: mysql-server
        state: present
    - name: Start MySQL service
      service:
        name: mysql
        state: started

总结

控制节点与被控节点

控制节点: 1. 运行 Ansible,管理和执行剧本。 2. 通过 SSH 或 WinRM 与被控制节点通信。 3. 需要安装 Ansible 软件。

被控制节点: 1. 接收并执行来自控制节点的命令。 2. 不需要安装 Ansible 软件,只需要配置远程访问(SSH 或 WinRM)。 3. 可以是任何支持远程访问的操作系统。

控制节点通过 SSH 或 WinRM 与被控制节点通信,实现自动化配置管理和应用部署。理解控制节点和被控制节点的角色和工作方式,是使用 Ansible 进行高效自动化管理的关键。