Ansible主机清单

华子目录

  • 管理`Ansible静态清单`
    • 1.定义主机清单
    • 2.两种方式定义`主机清单`
    • 3.使用`静态主机`清单指定受管主机(默认)
      • 3.1产生原因
      • 3.2`静态主机清单`文件本质
      • 3.3清单内容分析(不分组)
      • 3.4清单内容分析(分组)
      • 3.5通过范围简化主机清单写法
      • 3.6嵌套分组
    • 4.自定义主机清单
    • 5.有选择地查看主机和组

管理Ansible静态清单

1.定义主机清单

  • 作用:主机清单用于定义ansible将要管理的一批主机,这些主机也可以分配到组中,以进行集中管理组中也可以包含子组一台主机也可以是多个组中的成员。

2.两种方式定义主机清单

  • 静态主机清单可以通过文本文件定义
  • 动态主机清单可以根据需要通过脚本其他程序生成

3.使用静态主机清单指定受管主机(默认)

3.1产生原因

  • Ansible服务是用于实现主机批量自动化控制的管理工具,受管的主机一定不是一两台,而是数十台甚至成百上千台,那么主机清单inventory)在生产环境中可以起到重要作用。

3.2静态主机清单文件本质

  • Ansible目标受管主机的文本文件
  • 路径:/etc/ansible/hosts

3.3清单内容分析(不分组)

  • 格式:一行书写一个主机IP或主机名
  • 例:
[root@server ~]#  vim  /etc/ansible/hosts
node1.example.com
node2.example.com
  • 查看主机清单内容
[root@server ~]# ansible all --list-hosts   #all的意思是所有组
  hosts (2):    #数字表示主机数
    node1.example.com
    node2.example.com
  • 尝试ping
[root@server ~]# ansible all -m ping
node2.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
node1.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

3.4清单内容分析(分组)

  • 作用:按照主机的地理位置工作性质进行分组,如:开发机(dev)测试机(test)产品(prod)
  • 分组格式:
[组名]    #名字自定义
一行一个IP或主机名
[root@server ~]# vim  /etc/ansible/hosts
[dev]
node1.example.com
[test]
node2.example.com
  • 查看分组内容
[root@server ~]# ansible-inventory --graph
@all:
  |--@ungrouped:    #未分组的主机,当前无
  |--@dev:
  |  |--node1.example.com
  |--@test:
  |  |--node2.example.com
  • 查看单个组的内容
#查看未分组的主机信息
[root@server ~]# ansible ungrouped --list-hosts 
[WARNING]: No hosts matched, nothing to do
  hosts (0):

#查看dev组的主机信息
[root@server ~]# ansible dev --list-hosts
  hosts (1):
    node1.example.com

#查看test组的主机信息
[root@server ~]# ansible test --list-hosts
  hosts (1):
    node2.example.com
  • 分组操作
[root@server ~]# ansible dev -m ping   #向dev组的主机发送ping命令
node1.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}


[root@server ~]# ansible test -m ping  #向test组的主机发送ping命令
node2.example.com | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

3.5通过范围简化主机清单写法

  • IP格式
[root@server ~]# vim /etc/ansible/hosts
[root@server ~]# cat /etc/ansible/hosts
192.168.80.[100:120]

[root@server ~]# ansible all --list-hosts
  hosts (21):
    192.168.80.100
    192.168.80.101
    192.168.80.102
    192.168.80.103
    192.168.80.104
    192.168.80.105
    192.168.80.106
    192.168.80.107
    192.168.80.108
    192.168.80.109
    192.168.80.110
    192.168.80.111
    192.168.80.112
    192.168.80.113
    192.168.80.114
    192.168.80.115
    192.168.80.116
    192.168.80.117
    192.168.80.118
    192.168.80.119
    192.168.80.120
  • 分组
[root@server ~]# vim /etc/ansible/hosts
[root@server ~]# cat /etc/ansible/hosts
192.168.80.100   #未分组的写在上面
192.168.80.101

[dev]
192.168.80.[102:109]

[test]
1092.168.80.[110:120]

[prod]
192.168.80.[111:130]
[root@server ~]# ansible-inventory --graph
@all:
  |--@ungrouped:      # 未分组
  |  |--192.168.80.100
  |  |--192.168.80.101
  |--@dev:            # dev组
  |  |--192.168.80.102
  |  |--192.168.80.103
  |  |--192.168.80.104
  |  |--192.168.80.105
  |  |--192.168.80.106
  |  |--192.168.80.107
  |  |--192.168.80.108
  |  |--192.168.80.109
  |--@test:             # test组
  |  |--1092.168.80.110
  |  |--1092.168.80.111
  |  |--1092.168.80.112
  |  |--1092.168.80.113
  |  |--1092.168.80.114
  |  |--1092.168.80.115
  |  |--1092.168.80.116
  |  |--1092.168.80.117
  |  |--1092.168.80.118
  |  |--1092.168.80.119
  |  |--1092.168.80.120
  |--@prod:            # prod组
  |  |--192.168.80.111
  |  |--192.168.80.112
  |  |--192.168.80.113
  |  |--192.168.80.114
  |  |--192.168.80.115
  |  |--192.168.80.116
  |  |--192.168.80.117
  |  |--192.168.80.118
  |  |--192.168.80.119
  |  |--192.168.80.120
  |  |--192.168.80.121
  |  |--192.168.80.122
  |  |--192.168.80.123
  |  |--192.168.80.124
  |  |--192.168.80.125
  |  |--192.168.80.126
  |  |--192.168.80.127
  |  |--192.168.80.128
  |  |--192.168.80.129
  |  |--192.168.80.130
  • 名称格式:[A:B].example.com

3.6嵌套分组

  • 格式
[子组1名]
主机列表

[子组2名]
主机列表

[子组3名]
主机列表

[父组名:children]    
子组1名
子组2名
子组3名
[root@server ~]# vim /etc/ansible/hosts
[root@server ~]# cat /etc/ansible/hosts
192.168.80.100
192.168.80.101

[dev]
192.168.80.[102:109]

[test]
1092.168.80.[110:120]

[prod]
192.168.80.[111:130]

[Father:children]
dev
test
prod
[root@server ~]# ansible-inventory --graph
@all:
  |--@ungrouped:
  |  |--192.168.80.100
  |  |--192.168.80.101
  |--@Father:
  |  |--@dev:
  |  |  |--192.168.80.102
  |  |  |--192.168.80.103
  |  |  |--192.168.80.104
  |  |  |--192.168.80.105
  |  |  |--192.168.80.106
  |  |  |--192.168.80.107
  |  |  |--192.168.80.108
  |  |  |--192.168.80.109
  |  |--@test:
  |  |  |--1092.168.80.110
  |  |  |--1092.168.80.111
  |  |  |--1092.168.80.112
  |  |  |--1092.168.80.113
  |  |  |--1092.168.80.114
  |  |  |--1092.168.80.115
  |  |  |--1092.168.80.116
  |  |  |--1092.168.80.117
  |  |  |--1092.168.80.118
  |  |  |--1092.168.80.119
  |  |  |--1092.168.80.120
  |  |--@prod:
  |  |  |--192.168.80.111
  |  |  |--192.168.80.112
  |  |  |--192.168.80.113
  |  |  |--192.168.80.114
  |  |  |--192.168.80.115
  |  |  |--192.168.80.116
  |  |  |--192.168.80.117
  |  |  |--192.168.80.118
  |  |  |--192.168.80.119
  |  |  |--192.168.80.120
  |  |  |--192.168.80.121
  |  |  |--192.168.80.122
  |  |  |--192.168.80.123
  |  |  |--192.168.80.124
  |  |  |--192.168.80.125
  |  |  |--192.168.80.126
  |  |  |--192.168.80.127
  |  |  |--192.168.80.128
  |  |  |--192.168.80.129
  |  |  |--192.168.80.130

4.自定义主机清单

  • /root目录下创建一个名称为inv的自定义主机清单
[root@server ~]# vim  /root/inv

[web]
node1.example.com
node2.example.com
  • 查看自定义主机清单
  • -i指定自定义的主机清单
[root@server ~]# ansible all -i /root/inv --list-hosts
  hosts (2):
    node1.example.com
    node2.example.com
[root@server ~]# ansible web -i /root/inv --list-hosts
  hosts (2):
    node1.example.com
    node2.example.com

5.有选择地查看主机和组

[root@server ~]# vim  /etc/ansible/hosts

192.168.48.254

[web]
192.168.48.[130:133]

[http]
192.168.48.[134:135]

[ftp]
192.168.48.[136:139]

[dns]
192.168.48.[140:145]

[mail]
192.168.48.[143:146]
  • 查看全部主机
[root@server ~]# ansible all --list-hosts
  hosts (18):
    192.168.48.254
    192.168.48.130
    192.168.48.131
    192.168.48.132
    192.168.48.133
    192.168.48.134
    192.168.48.135
    192.168.48.136
    192.168.48.137
    192.168.48.138
    192.168.48.139
    192.168.48.140
    192.168.48.141
    192.168.48.142
    192.168.48.143
    192.168.48.144
    192.168.48.145
    192.168.48.146
  • 查看单个组
[root@server ~]# ansible dns --list-hosts
  hosts (6):
    192.168.48.140
    192.168.48.141
    192.168.48.142
    192.168.48.143
    192.168.48.144
    192.168.48.145
  • 匹配多个组
#    &表示交集
[root@server ~]# ansible 'dns:&mail' --list-hosts
  hosts (3):
    192.168.48.143
    192.168.48.144
    192.168.48.145
#    !表示补集,即属于dns组但不属于mail组
[root@server ~]# ansible 'dns:!mail' --list-hosts
  hosts (3):
    192.168.48.140
    192.168.48.141
    192.168.48.142
# 不属于dns组但属于mail组
[root@server ~]# ansible '!dns:mail' --list-hosts
  hosts (1):
    192.168.48.146
#   并集
[root@server ~]# ansible 'dns:mail' --list-hosts
  hosts (7):
    192.168.48.140
    192.168.48.141
    192.168.48.142
    192.168.48.143
    192.168.48.144
    192.168.48.145
    192.168.48.146


[root@server ~]# ansible 'dns:mail:ftp' --list-hosts
  hosts (11):
    192.168.48.140
    192.168.48.141
    192.168.48.142
    192.168.48.143
    192.168.48.144
    192.168.48.145
    192.168.48.146
    192.168.48.136
    192.168.48.137
    192.168.48.138
    192.168.48.139

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777075.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

golang结合neo4j实现权限功能设计

neo4j 是非关系型数据库之图形数据库,这里不再赘述。 传统关系数据库基于rbac实现权限, user ---- role ------permission,加上中间表共5张表。 如果再添上部门的概念:用户属于部门,部门拥有 角色,则又多了一层: user-…

WPF UI 界面布局 魔术棒 文字笔记识别 技能提升 布局功能扩展与自定义 继承Panel的对象,测量与排列 系列七

应用开发第一步 功能分类:页面上的功能区域划分。。。。需求分析 业务逻辑 数据流 功能模块 UI/UX 编码 测试 发布 功能开发与布局 不用显式的方式设定元素的尺寸 不使用屏幕坐标来指定位置 Grid 功能最强大,布局最灵活的容器…

代码提交错分支了怎么办?

你有么有遇到过正在开发的代码,提交到生产环境的分支去,遇到这种情况怎么办? 问题重现: 这段注释// AAAAAAAAAAA 本来应该写在dev分支的,现在提交并push到master分支了 现在第一步,撤回提交 第二步&…

第五届机械工程与智能制造国际学术会议(MEIM 2024,7月26-28)

第五届机械工程与智能制造国际学术会议(MEIM 2024) 计划2024年7月26-28日在中国辽宁锦州隆重举行。本次会议由辽宁理工学院主办。 会议主要围绕机械工程与智能制造等研究领域展开讨论,旨在为从事机械工程与智能制造研究的专家学者、程技术人员、技术研发人员提供一个…

Midjourney 如何使用参考图像来提升图像的准确性和相似度?

🧙🏼图像提示 🧙🏼‍♂️ 您可以使用图像作为提示的一部分来影响作业的构图、样式和颜色。图像提示可以单独使用,也可以与文本提示一起使用 - 尝试组合具有不同样式的图像以获得最令人兴奋的结果。 🛠️实际图像提示操作步骤 点击加号按钮,双击上传文件,把小黄猫…

SwiftUI 6.0(iOS 18.0)滚动视图新增的滚动阶段(Scroll Phase)监听功能趣谈

何曾几时,在 SwiftUI 开发中的秃头小码农们迫切需要一种能够读取当前滚动状态的方法。 在过去,他们往往需要借助于 UIKit 的神秘力量。不过这一切在 SwiftUI 6.0 中已成“沧海桑田”。 在本篇博文中,您将学到如下内容: 1. Scroll…

Anubi WebKey开启去中心化数字革命的新纪元

随着技术的飞速发展,Web3正在重新定义未来互联网的架构,标志着从集中式控制向去中心化自主的历史性转变。在这场全球性的技术演变中,Anubi WebKey不仅仅是一款前沿的智能设备,它代表的是一种划时代的技术革命,一个重塑…

24.【C语言】getchar putchar的使用

1.基本作用 用户输入字符,getchar()获取字符(含\n:即键入的Enter)(字符本质上是以ASCII值或EOF(-1)存储的)(与scanf有区别) putchar() 打印字符(把得到的A…

图像畸变矫正与透视变换

图像畸变矫正与透视变换 Halcon自动生成的圆形棋盘格Halcon透视变换 Halcon自动生成的圆形棋盘格 示例程序: *生成棋圆形棋盘格 行 列 直径 直径/距离比值 gen_caltab (12, 9, 0.002, 0.5, caltab_12X9.descr, caltab.ps) *生成相机参数 焦距 畸变系数 X解析度 Y解…

计算云服务1

前言 一直以来,计算资源都是整个企业业务系统发展所需的大动脉,没有计算资源,企业业务就无法正常运行。在云计算的时代里,计算服务也是云服务中的第一大类服务,计算资源的重要性由此可见。本章,我们将带领…

【数据结构】常见四类排序算法

1. 插入排序 1.1基本思想: 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。实际中我们…

HTML5+JavaScript单词游戏

HTML5 JavaScript单词游戏 数据字典格式:每行一个 单词 ,单词和解释用空格分隔,如 a art.一(个);每一(个) ability n.能力;能耐,本领 able a.有能力的;出色的 baby n.婴儿;孩子…

NET程序开发可能会用到的一些资料文档

NET程序开发使用的一些资料文件,NET高级调试,NET关键技术深入解析,WPF专业编程指南,程序员求职攻略,WPF编程宝典等。 下载链接:https://download.csdn.net/download/qq_43307934/89518582

Python入门 2024/7/6

目录 数据容器入门 列表的定义语法 基本语法 嵌套列表 ​编辑 列表的下表索引 ​编辑 列表的常用操作 列表的常见方法 查找元素的下标 修改下标索引的值 插入元素 追加元素 追加一批元素 删除元素 删除某元素在列表中的第一个匹配项 清空列表内容 统计元素在…

【Unity URP】通过代码动态添加URP渲染通道RendererFeature

URP的渲染通道RendererFeature可以很方便的实现一些渲染问题,比如渲染顺序问题,遮挡后的材质替换等等。 那么我们如何通过代码来动态添加和修改呢? 首先我们需要获取到当前的URP配置文件,在对配置文件进行添加 1.通过反射获取当前UniversalRendererData 我们通过Graphic…

Linux:文件系统与日志分析

一、block与inode 1.1、概述 文件是存储在硬盘上的,硬盘的最小存储单位叫做“扇区”(sector),每个扇区存储512字节。 一般连续八个扇区组成一个"块”(block),一个块是4K大小,是文件存取的最小单位。 文件数据包括实际数据…

【数据分享】国家级旅游休闲街区数据(Excel/Shp格式/免费获取)

之前我们分享过从我国文化和旅游部官网整理的2018-2023年我国50个重点旅游城市星级饭店季度经营状况数据(可查看之前的文章获悉详情)!文化和旅游部官网上也分享有很多与旅游相关的常用数据,我们基于官网发布的名单文件整理得到全国…

.net 调用海康SDK的跨平台解决方案

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔序言 上2篇海康SDK使用以及常见的坑…

【JavaEE精炼宝库】文件操作(1)——基本知识 | 操作文件——打开实用性编程的大门

目录 一、文件的基本知识1.1 文件的基本概念:1.2 树型结构组织和目录:1.3 文件路径(Path):1.4 二进制文件 VS 文本文件:1.5 其它: 二、Java 操作文件2.1 方法说明:2.2 使用演示&…

第十五章 Nest Pipe(内置及自定义)

NestJS的Pipe是一个用于数据转换和验证的特殊装饰器。Pipe可以应用于控制器(Controller)的处理方法(Handler)和中间件(Middleware),用于处理传入的数据。它可以用来转换和验证数据,确…