目录

  • 简介
  • 主机管理
  • 手动管理
  • 利用 Ansible 管理主机
  • Playbook 编写
  • 基本结构
  • 常用模块
  • 变量管理

简介

青龙多容器 青龙容器是什么_运维

Ansible 是一种基于 Python 编写的配置管理工具,它能够让运维人员自动化地配置和管理多个服务器,实现自动化部署、配置文件管理、应用程序部署等操作。相比其他配置管理工具,Ansible 更加轻量级、易学易用,因此在运维领域得到了广泛的应用。

Ansible 基于 SSH 进行通信,不需要在被管理的主机上安装客户端,而是通过 SSH 远程执行命令,因此无需在被管理的主机上安装任何额外的软件,大大降低了部署和维护的成本。

主机管理

在使用 Ansible 进行管理之前,需要先定义需要管理的主机。主机管理可以手动进行,也可以利用 Ansible 进行管理。

手动管理

手动管理就是在一个文件中定义需要管理的主机列表,例如:

[webserver]
192.168.1.100
192.168.1.101

这里我们定义了一个名为 webserver 的主机组,其中包括两个主机。

利用 Ansible 管理主机

除了手动管理,我们还可以利用 Ansible 进行主机管理,这需要在 Ansible 控制机上安装 Ansible,同时需要在被管理的主机上开启 SSH 服务。

安装 Ansible 的方法取决于操作系统的不同,在 Ubuntu 上可以使用以下命令进行安装:

sudo apt-get update
sudo apt-get install ansible

安装完成后,我们需要在 Ansible 控制机上创建一个名为 inventory 的主机清单文件,指定需要管理的主机列表,例如:

[webserver]
192.168.1.100
192.168.1.101

接下来,我们可以使用 ansible 命令测试连接是否正常:

ansible -m ping -i inventory webserver

如果连接正常,会返回类似以下的结果:

192.168.1.100 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.101 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

这里的 -m ping 表示使用 ping 模块测试连接,-i inventory 表示使用 inventory 文件指定主机清单,webserver 表示使用 webserver 主机组中的所有主机。

主机管理

青龙多容器 青龙容器是什么_运维_02

在 Ansible 中,您可以通过定义 inventory 来管理主机。Inventory 是一个文本文件,其中包含了您要管理的主机的信息。Ansible 会根据 inventory 中的信息来执行任务。

定义 inventory

在 Ansible 中,默认的 inventory 文件是 /etc/ansible/hosts。您可以使用以下命令来编辑这个文件:



bashCopy code

sudo nano /etc/ansible/hosts

在 inventory 文件中,每行表示一个主机或主机组,格式如下:

[主机组名]
主机1
主机2

[另一个主机组名]
主机3
主机4

您可以使用主机名、IP 地址或域名来表示主机。如果要定义具有不同用户名和/或 SSH 端口的主机,可以在主机名后面添加参数,例如:



Copy code

web1 ansible_user=ubuntu ansible_port=2222

主机组

在 inventory 文件中,您可以使用方括号来定义主机组。您可以将主机组嵌套在其他主机组中,从而创建复杂的主机组层次结构。

例如,下面的 inventory 文件中定义了一个 webserver 主机组和一个 dbservers 主机组:

[webserver]
web1
web2

[dbservers]
db1
db2

主机变量

在 inventory 文件中,您可以为每个主机设置变量。这些变量可以是 Ansible 内置的,也可以是您自己定义的。例如,要为 web1 主机设置 http_port 变量:

[webserver]
web1 http_port=80
web2 http_port=8080

动态 inventory

在实际情况中,您可能需要管理大量的主机,并且这些主机的数量可能会发生变化。此时,手动维护一个静态 inventory 文件可能会变得困难。因此,Ansible 支持使用动态 inventory 来管理主机。

动态 inventory 通常是一个脚本,它会根据您的需求生成 inventory。这个脚本可以从外部系统中获取信息,例如 Amazon EC2、OpenStack 或 VMware。

Playbook 编写

Playbook 是一个 YAML 文件,用于定义 Ansible 任务的执行顺序和配置信息。Playbook 可以包含一个或多个任务,每个任务都由一个或多个操作组成。

以下是一个简单的 Playbook,用于安装 Apache Web 服务器:

- hosts: webserver
  become: true
  tasks:
    - name: Install Apache
      apt:
        name: apache2
        state: present
      notify:
        - restart apache
    - name: Enable Apache
      service:
        name: apache2
        state: started
        enabled: true
  handlers:
    - name: restart apache
      service:
        name: apache2
        state: restarted