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


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


相关推荐
时空自由民.28 分钟前
linux下camera 详细驱动流程 OV02K10为例(chatgpt版本)
linux·运维·服务器
云川之下1 小时前
【网络】使用 DNAT 进行负载均衡时,若未配置配套的 SNAT,回包失败
运维·网络·负载均衡
ManageEngineITSM2 小时前
云原生环境下的ITSM新趋势:从传统运维到智能化服务管理
大数据·运维·人工智能·云原生·itsm·工单系统
檀越剑指大厂2 小时前
【Nginx系列】查看 Nginx 的日志
运维·nginx
byte轻骑兵4 小时前
【Linux文件系统】Linux文件系统与设备驱动
linux·运维·服务器
top_designer5 小时前
作品集PDF又大又卡?我用InDesign+Acrobat AI构建轻量化交互式文档工作流
人工智能·pdf·自动化·设计规范·acrobat·indesign·交互式pdf
Lethehong6 小时前
在 CentOS 7 上搭建 OpenTenBase 集群:从源码到生产环境的全流程指南
linux·运维·centos·tdsql·opentenbase·腾讯云数据库
yuxb737 小时前
集群与负载均衡:HAProxy 与 Nginx 实践
运维·nginx·负载均衡
知白守黑2677 小时前
KVM虚拟化
linux·运维·架构·centos
G_H_S_3_9 小时前
【网络运维】Linux 文本搜索利器: grep命令
linux·运维·网络·操作文本