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 的自动化操作提供了灵活的主机管理和配置方式,通过对主机进行分组和变量定义,可以方便地实现不同主机的不同操作和配置。


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


相关推荐
叱咤少帅(少帅)4 分钟前
IDC机房机柜部署
运维
阿巴阿巴boer1 小时前
用wsl搭建远程linux服务器
linux·运维·服务器·ssh
lisanmengmeng2 小时前
docker 方式安装部署禅道zentao(五)
运维·docker·容器
Logic1012 小时前
《告别重复劳动!易语言实现档案数字化录入全自动助手》
自动化·实战项目·档案管理·易语言·办公效率·模拟按键·文字录入
wanhengidc2 小时前
云手机的硬件依赖性如何?
运维·服务器·智能手机·云计算
piaoroumi2 小时前
UVC调试
linux·运维·前端
VekiSon2 小时前
Linux系统编程——标准IO
linux·运维·服务器
Evan芙3 小时前
DNS服务器类型,解析答案,正反解析域,资源记录定义总结
运维·服务器
wanhengidc3 小时前
巨椰 云手机办公便利性高
运维·服务器·安全·智能手机·云计算
Saniffer_SH3 小时前
【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?
运维·服务器·网络·人工智能·驱动开发·fpga开发·硬件工程