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


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


相关推荐
9毫米的幻想7 分钟前
【Linux系统】—— 冯诺依曼体系结构与操作系统初理解
linux·运维·服务器·c语言·c++
刘什么洋啊Zz13 分钟前
剖析IO原理和零拷贝机制
java·运维·网络
升讯威在线客服系统37 分钟前
如何通过 Docker 在没有域名的情况下快速上线客服系统
java·运维·前端·python·docker·容器·.net
Karoku0663 小时前
【CI/CD】CI/CD环境搭建流程和持续集成环境配置
运维·ci/cd·docker·容器·kubernetes·prometheus
勤奋的凯尔森同学6 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
技术小齐10 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风10 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕10 小时前
C语言-进程
linux·运维·服务器
chenbin52011 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯11 小时前
Jenkins插件管理切换国内源地址
运维·jenkins