在 Ubuntu 操作系统上部署 Ansible

AnsibleAnsibleBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将指导你在 Ubuntu 操作系统上安装 Ansible,这是一个强大的开源 IT 自动化工具。你将学习如何设置 Ansible 并执行 Ansible 剧本以简化你的基础设施管理任务。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/PlaybookEssentialsGroup(["Playbook Essentials"]) ansible(("Ansible")) -.-> ansible/AnsibleSetupandConfigurationGroup(["Ansible Setup and Configuration"]) ansible(("Ansible")) -.-> ansible/InventoryManagementGroup(["Inventory Management"]) ansible/AnsibleSetupandConfigurationGroup -.-> ansible/install("Ansible Setup") ansible/InventoryManagementGroup -.-> ansible/groups_inventory("Define Inventory Groups") ansible/InventoryManagementGroup -.-> ansible/host_variables("Set Host Variables") ansible/PlaybookEssentialsGroup -.-> ansible/playbook("Execute Playbook") ansible/PlaybookEssentialsGroup -.-> ansible/roles("Assign Roles") subgraph Lab Skills ansible/install -.-> lab-411632{{"在 Ubuntu 操作系统上部署 Ansible"}} ansible/groups_inventory -.-> lab-411632{{"在 Ubuntu 操作系统上部署 Ansible"}} ansible/host_variables -.-> lab-411632{{"在 Ubuntu 操作系统上部署 Ansible"}} ansible/playbook -.-> lab-411632{{"在 Ubuntu 操作系统上部署 Ansible"}} ansible/roles -.-> lab-411632{{"在 Ubuntu 操作系统上部署 Ansible"}} end

了解 Ansible

Ansible 是一款开源的软件供应、配置管理和应用程序部署工具。它的设计理念是简单、强大且无需代理,允许用户同时管理和配置多个远程系统。

什么是 Ansible?

Ansible 是一个强大的自动化工具,使你能够以声明式和幂等的方式管理基础设施、应用程序和服务。它使用一种名为 YAML 的简单、易读的语言来定义系统的期望状态,然后执行必要的任务以达到该状态。

Ansible 的关键特性

  • 无需代理:Ansible 不需要在远程系统上安装任何特殊软件或代理。它使用 SSH(或 Windows 远程管理)与目标系统进行通信。
  • 声明式方法:Ansible 采用声明式方法,你只需定义系统的期望状态,Ansible 会负责实现该状态所需的必要步骤。
  • 幂等性:Ansible 的任务设计为幂等的,这意味着它们可以多次运行而不会导致任何意外更改。
  • 模块化设计:Ansible 具有模块化设计,拥有大量内置模块,可用于执行各种任务,例如管理文件、安装软件包或与云服务进行交互。
  • 简单易读:Ansible 基于 YAML 的语言设计得简单易读,开发人员和系统管理员都能轻松上手。

Ansible 的用例

Ansible 可用于广泛的任务,包括:

  • 基础设施供应
  • 配置管理
  • 应用程序部署
  • 编排
  • 安全与合规
  • 持续集成/持续部署(CI/CD)

Ansible 架构

Ansible 使用客户端 - 服务器架构,其中 Ansible 控制节点(安装 Ansible 的系统)通过 SSH 或 Windows 远程管理与远程目标系统(你要管理的系统)进行通信。

graph TD A[Ansible 控制节点] -- SSH/WinRM --> B[目标系统 1] A -- SSH/WinRM --> C[目标系统 2] A -- SSH/WinRM --> D[目标系统 3]

Ansible 控制节点在目标系统上执行必要的任务,目标系统将结果反馈回控制节点。

在 Ubuntu 上安装 Ansible

先决条件

在安装 Ansible 之前,请确保你具备以下先决条件:

  • Ubuntu 22.04 LTS 系统
  • 已安装 Python 3
  • 拥有 sudo 或 root 权限

安装 Ansible

  1. 更新软件包索引:
sudo apt update
  1. 安装所需软件包:
sudo apt install software-properties-common
  1. 将 Ansible PPA(个人软件包存档)添加到系统的源列表中:
sudo add-apt-repository --yes --update ppa:ansible/ansible
  1. 安装 Ansible:
sudo apt install ansible
  1. 验证安装:
ansible --version

你应该会看到显示的 Ansible 版本信息。

配置 Ansible

  1. 创建一个 Ansible 清单文件:
sudo nano /etc/ansible/hosts

将目标主机添加到清单文件中,例如:

[webservers]
192.168.1.100
192.168.1.101

[databases]
192.168.1.200
192.168.1.201
  1. 创建一个 Ansible 配置文件:
sudo nano /etc/ansible/ansible.cfg

添加所需的配置选项,例如:

[defaults]
inventory = /etc/ansible/hosts
remote_user = ubuntu
  1. 测试 Ansible 连接:
ansible all -m ping

此命令将对清单文件中的所有主机执行 ping 操作并验证连接。

现在,你已在 Ubuntu 22.04 系统上成功安装了 Ansible,并对其进行了配置以管理目标主机。

执行 Ansible 剧本

什么是 Ansible 剧本?

Ansible 剧本是一个 YAML 格式的文件,用于定义基础设施或应用程序的期望状态。它包含一系列任务,这些任务按特定顺序执行以实现期望状态。

Ansible 剧本剖析

一个基本的 Ansible 剧本由以下元素组成:

  • 主机:剧本将在其上执行的目标主机或主机组。
  • 任务:Ansible 将在目标主机上执行的操作。
  • 变量:可在整个剧本中使用的值。
  • 处理器:由其他任务触发的任务。

以下是一个在一组 Ubuntu 主机上安装 Apache 网络服务器的 Ansible 剧本示例:

- hosts: webservers
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present
    - name: Start Apache
      service:
        name: apache2
        state: started
        enabled: yes

执行 Ansible 剧本

要执行 Ansible 剧本,请按以下步骤操作:

  1. 将剧本保存到一个文件中,例如 apache.yml
  2. 使用 ansible-playbook 命令运行剧本:
ansible-playbook apache.yml

这将在目标主机上执行剧本中定义的任务。

剧本执行选项

你可以使用各种选项来自定义剧本执行,例如:

  • 限制:在特定主机或主机组上执行剧本。
    ansible-playbook apache.yml -l webservers
  • 检查:进行试运行以查看将会做出哪些更改。
    ansible-playbook apache.yml --check
  • 提升权限:以提升的权限执行剧本。
    ansible-playbook apache.yml --become

通过理解和使用 Ansible 剧本,你可以轻松地在 Ubuntu 系统上自动化基础设施和应用程序的部署与配置。

总结

在本教程结束时,你将对 Ansible 及其功能有扎实的理解,同时掌握在你的 Ubuntu 系统上安装 Ansible 并开始使用 Ansible 剧本自动化基础设施管理任务的知识。