问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Ansible自动化运维实战:Inventory主机清单详解

创作时间:
作者:
@小白创作中心

Ansible自动化运维实战:Inventory主机清单详解

引用
CSDN
1.
https://m.blog.csdn.net/weixin_43025151/article/details/145275437

Ansible是自动化运维领域的热门工具,其核心概念之一就是Inventory(主机清单)。本文将详细介绍Inventory的定义、功能和使用方法,帮助读者掌握Ansible自动化运维的基础知识。

一、Inventory 的定义

Inventory(主机清单)是 Ansible 中一个非常重要的概念,它是一个文件或一组文件,用于存储 Ansible 要管理的所有主机的信息。它允许你对主机进行分组,以便可以根据不同的需求对不同组的主机执行不同的任务。这个清单文件可以使用多种格式,如 INI 格式(默认的 /etc/ansible/hosts 文件使用的格式)或 YAML 格式。

二、Inventory 的功能和用途

2.1、主机管理(未分组)

可以将多个主机添加到 Inventory 中,这些主机可以是 IP 地址、主机名或 DNS 名称。例如,在 INI 格式的 Inventory 中:

192.168.1.10
192.168.1.11
server1.example.com

这表示 Ansible 可以管理 192.168.1.10、192.168.1.11 和 server1.example.com 这三个主机。

2.2、主机分组

对主机进行分组是 Inventory 的一个重要功能,它允许你根据不同的功能、位置或其他属性将主机划分为不同的组。例如:

[webservers]
host01
host02
host03
host04

[dbservers]
host01

这里创建了两个组:webservers 组包含 host01 host02 host03 host04主机,这样可以方便地针对不同组的主机执行不同的操作,例如在 webservers 组上部署 Web 服务,在 dbservers 组上部署数据库服务。

测试组webservers的联通性:

ansible webserves -m ping -o -u root -k

2.3、变量定义(添加主机用户名和密码)

可以为每个主机或主机组定义变量,这些变量可以在 Ansible 的 Playbook 中使用,以便根据不同的主机或组进行不同的配置。

对于主机级别的变量,例如:

192.168.162.102 ansible_user=root ansible_password=123
192.168.162.103 ansible_user=root ansible_password=123

这里为 192.168.162.102 和 192.168.162.103 分别定义了 ansible_user 和 ansible_password 变量,用于指定连接这些主机时使用的用户名和密码。

对于组级别的变量,可以这样定义:

[webservers:vars]
http_port=80

这为 webservers 组内的所有主机定义了 http_port 变量,其值为 80。在编写 Playbook 时,可以使用 {{ http_port }} 来引用这个变量,从而实现根据组来配置服务的端口。

2.4、嵌套组

可以创建嵌套组,将一个组包含在另一个组中。例如:

[webservers]
192.168.1.10
192.168.1.11

[frontend]
192.168.1.10

[backend]
192.168.1.11

[webservers:children]
frontend
backend

这里 webservers 组包含 frontend 和 backend 组,而 frontend 组包含 192.168.1.10,backend 组包含 192.168.1.11。这样可以更灵活地管理主机和组,根据不同的层次结构来组织主机。

三、使用 Inventory 执行 Ansible 任务

当你使用 Ansible 命令或编写 Ansible Playbook 时,通常会指定要操作的主机或主机组。例如,使用 ansible 命令行工具时:

ansible webservers -m ping

这个命令将对 webservers 组中的所有主机使用 ping 模块进行测试,以检查 Ansible 是否可以成功连接并执行操作。

在 Playbook 中,可以这样使用 Inventory 中的主机组:

- name: Playbook example
  hosts: webservers
  tasks:
- name: Install Apache
      yum:
        name: httpd
        state: present

这里的 hosts: webservers 表示这个 Playbook 中的任务将在 webservers 组中的主机上执行,yum 任务将在这些主机上安装 httpd 软件包。

综上所述,Inventory 是 Ansible 中管理主机和分组的核心组件,它为 Ansible 的自动化操作提供了灵活的主机管理和配置方式,通过对主机进行分组和变量定义,可以方便地实现不同主机的不同操作和配置。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号