ansible自动化运维实战--Inventory主机清单(2)

文章目录

一、Inventory 的定义

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

二、Inventory 的功能和用途

2.1、主机管理(未分组):

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

bash 复制代码
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 的一个重要功能,它允许你根据不同的功能、位置或其他属性将主机划分为不同的组。例如:

bash 复制代码
[webserves]
host01
host02
host03
host04

[dbservers]
host01

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

bash 复制代码
#测试组webservers的联通性
ansible webserves -m ping -o -u root -k

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

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

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

bash 复制代码
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 变量,用于指定连接这些主机时使用的用户名和密码。

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

bash 复制代码
[webservers:vars]
http_port=80

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

2.4、嵌套组:

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

bash 复制代码
[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 命令行工具时:

bash 复制代码
ansible webservers -m ping

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

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

yaml 复制代码
yaml
- name: Playbook example
  hosts: webservers
  tasks:
    - name: Install Apache
      yum:
        name: httpd
        state: present

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

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


‌"燃烧智慧,编织代码,天才程序员们正蓄势待发。"‌


相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
悠然南风5 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜6 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB7 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220709 天前
如何搭建本地yum源(上)
运维
大树8812 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠12 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql