4.Ansible Inventory介绍及实战 - A list or group of lists nodes

news/2024/4/28 6:01:49/文章来源:https://blog.csdn.net/u011069294/article/details/130885073
  1. 什么是inventory
    官方解释:Ansible automates tasks on managed nodes or “hosts” in your infrastructure, using a list or group of lists known as inventory.
    在这里插入图片描述
    Ansible可以同时与您基础设施中的一个或多个系统协同工作。为了与多台服务器协同工作, Ansible需要与这些服务器建立连接。这是通过使用SSH(适用于Linux)和PowerShell远程处理(适用于Windows)来完成的。 这就是Ansible无代理的原因。无代理意味着您不需要在目标机器上安装任何额外的软件,就可以使用Ansible。一个简单的SSH连接就能满足Ansible的需求。
    大多数其他编排工具的主要缺点之一是,在调用任何类型的自动化之前, 都需要在目标系统上配置代理。现在, 有关这些目标系统的信息存储在inventory文件中。如果您不创建新的inventory文件,Ansible将使用位于etc/Ansible/hosts位置的默认库存文件。

    让我们看一个示例Inventory文件。它只是一个接一个地列出了许多服务器,是ini格式的。您还可以将不同的服务器分组在一起,方法是在方括号内的组名下定义服务器,并在下面的行中定义属于该组的服务器列表。可以在单个Inventory文件中定义多个组。
    在这里插入图片描述
    让我们仔细看看Inventory文件。例如, 我有一个服务器列表,名称从14。但是, 我想在Ansible中使用别名(如Web服务器或数据库服务器)来引用这些服务器。我可以通过在行首添加每个服务器的别名,并将该服务器的地址分配给Ansibleansible_host参数来实现这一点。ansible_host是一个inventory参数, 用于指定服务器的域名或IP地址。在这里插入图片描述
    还有其他参数。
    在这里插入图片描述
    其中包括ansible_connection, ansible_port, ansible_useransible_ssh_pass

    1. ansible_connection: 定义了Ansible连接到目标服务器的方式。这是到Linux服务器的ssh连接或者到Windows服务器的winrm。这就是我们定义要连接的目标主机是Linux主机还是Windows主机的方式。
      您也可以将其设置为localhost,以表示我们希望使用本地主机,而不连接到任何远程主机。如果您没有多个服务器可供使用, 则可以简单地从清单文件中的本地主机开始。
    2. ansible_port:定义要连接的端口。默认情况下, 它被设置为SSH的端口22,但如果您需要更改, 您可以使用这个参数进行不同设置。
    3. ansible_user: 定义用于进行远程连接的用户。默认情况下,对于Linux计算机, 设置为root。果需要更改此设置, 可以用这个参数。
    4. ansible_ssh_pass: 定义了Linuxssh密码。请注意, 以这种纯文本格式存储密码可能不是很理想。最佳实践是在服务器之间设置基于SSH密钥的无密码身份验证,并且您绝对应该在生产或公司环境中这样做。 如果是windows,使用ansible_password
      但现在, 我们想从Ansible的基本知识开始,而不想过多地讨论安全性或其他主题。因此, 首先, 我们将从用户名和密码的基本设置开始。
  2. inventory实战
    1)打开宿主机mac上的terminalssh进入到ansiblecontroller,然后通过vim命令创建一个inventory.txt文件,写入如下的配置。这里指定了target1作为别名,可以在Ansible中用别名来访问这台虚拟机;同时指定了ssh连接的密码(通常公司的系统上不推荐使用这种方式,应该用ssh key,实现无密码访问)
    在这里插入图片描述
    2)使用Ansible使用ping测试controllertarget1是否能连通,同时带上inventory配置文件

    ansible target1 -m ping -i inventory.txt
    

    幸运的是,你可能会遇到下面这个错误:

    target1 | FAILED! => {
    "msg": "Using a SSH password instead of a key is not possiblebecause Host Key checking is enabled and sshpass doesnot support this.  Please add this host's fingerprint to yourknown_hosts file to manage this host."
    }
    

    在这里插入图片描述
    解决方式有两种:

    1. ansible-controller手动ssh连接到ansible-target1,然后手动接受fingerprint
      在这里插入图片描述
    2. ansible-controller的配置文件/etc/ansible/ansible.cfg,并且搜host key,将host_key_checking标记为False,默认是true。(不推荐这样干)
      # uncomment this to disable SSH key host checking
      #host_key_checking = False
      
  1. 接受fingerprint完成之后,继续使用ansible target1 -m ping -i inventory.txt测试连通性
    很幸运的是,又可能又会遇到下面这个错误:
    一般是因为指定的inventory文件路径不对,-i读取的是当前所在路径下的inventory.txt,也就是/etc/ansible/inventory.txt,实际上我们创建的inventory.txt是在用户目录。

    [osboxes@ansiblecontroller ansible]$ ansible target1 -m ping -i inventory.txt
    [WARNING]: Unable to parse /etc/ansible/inventory.txt as an inventory source
    [WARNING]: No inventory was parsed, only implicit localhost is available
    [WARNING]: provided hosts list is empty, only localhost is available. Note that
    the implicit localhost does not match 'all'
    [WARNING]: Could not match supplied host pattern, ignoring: target1
    

    cd ~,然后再跑上面的ansible命令,看见下面类似的返回,就表示成功了

    [osboxes@ansiblecontroller ~]$ ansible target1 -m ping -i inventory.txt
    target1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"
    }
    
  1. 最后给一个完整的inventory例子,包含group的用法:

    # Sample Inventory File# Web Servers
    web_node1 ansible_host=web01.xyz.com ansible_connection=winrm ansible_user=administrator ansible_password=Win$Pass
    web_node2 ansible_host=web02.xyz.com ansible_connection=winrm ansible_user=administrator ansible_password=Win$Pass
    web_node3 ansible_host=web03.xyz.com ansible_connection=winrm ansible_user=administrator ansible_password=Win$Pass# DB Servers
    sql_db1 ansible_host=sql01.xyz.com ansible_connection=ssh ansible_user=root ansible_ssh_pass=Lin$Pass
    sql_db2 ansible_host=sql02.xyz.com ansible_connection=ssh ansible_user=root ansible_ssh_pass=Lin$Pass[db_nodes]
    sql_db1
    sql_db2[web_nodes]
    web_node1
    web_node2
    web_node3[boston_nodes]
    sql_db1
    web_node1[dallas_nodes]
    sql_db2
    web_node2
    web_node3
    

    更多关于Ansible的文章,请参考我的Ansible专栏:https://blog.csdn.net/u011069294/category_12331290.html

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

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

相关文章

接口测试的请求和响应

接口测试的请求和响应 在软件开发中,接口测试是必不可少的一环节。接口测试主要涉及到测试请求和响应的过程。请求是指客户端向服务器发送的一些指令或数据,而响应则是服务器对这些请求做出的回应。 请求通常包括请求方法、请求头以及请求体。请求方法有…

【什么是iMessage苹果推?】什么是苹果推信?什么是苹果推?

挑选得当的IM推送平台:选择合用于PC真个IM推送平台 开辟或集成API:依照所选平台的开发文档,利用响应的编程语言(如Python、Java等)开发或集成API,以便与平台举行交互和节制。API可用于建立、办理和发送消息…

【HarmonyOS】【FAQ】HarmonyOS应用开发相关问题解答(二)

【写在前面】 之前和大家分享过一下HarmonyOS应用开发相关问题,今天继续和大家分享! 【前提简介】 本文档主要总结HarmonyOS开发过程中可能遇到的一些问题解答,主要围绕HarmonyOS展开,包括但不限于不同API版本HarmonyOS开发、UI…

单体项目偶遇并发漏洞!短短一夜时间竟让老板蒸发197.83元

事先声明:以下故事基于真实事件而改编,如有雷同,纯属巧合~ 眼下这位正襟危坐的男子,名为小竹,他正是本次事件的主人公,也即将成为熊猫集团的被告,嗯?这究竟怎么一回事?欲…

Linux网络编程—Day10

Linux服务器程序规范 Linux服务器程序一般以后台进程形式运行。后台进程又称守护进程。它没有控制终端,因而也不会意外接收到用户输入。 守护进程的父进程通常是init进程(PID为1的进程);Linux服务器程序通常有一套日志系统&#…

设备快线客户端软件V1.0用户手册

1.前言欢迎使用设备快线客户端软件产品。设备快线客户端软件简称DYClient,DYClient客户端是东用科技有限公司推出的一款用于远程维护的控制软件,主要为客户远程访问现场终端设备提供便捷的接入服务,并且通过DYClient客户端软件用户可以非常方便快捷的访问…

基于RetinaNet和TensorFlow Object Detection API实现目标检测(附源码)

文章目录 一、RetinaNet原理二、RetinaNet实现1. tf.train.CheckPoint简介2. RetinaNet的TensorFlow源码 一、RetinaNet原理 待补充 二、RetinaNet实现 1. tf.train.CheckPoint简介 待补充 2. RetinaNet的TensorFlow源码 Step 1:安装Tensorflow 2 Object Detect…

云原生之深入解析Docker容器退出码的含义和产生原因

一、前言 为什么我的容器没有运行?回答这个问题之前,需要知道 Docker 容器为什么退出?退出码会提示容器停止运行的情况?本文列出最常见的退出码,来回答两个重要问题:这些退出码是什么意思?导致该退出码的动作是什么?exit code:代表一个进程的返回码,通过系统调用 exi…

chatgpt赋能python:Python修改密码:一种安全可靠、快速高效的方式

Python 修改密码:一种安全可靠、快速高效的方式 在数字化时代,越来越多的信息被存储在计算机系统中,因此密码的保护变得尤为重要。人们需要保证他们的密码是安全可靠的,并定期更换密码。Python作为一种强大而且通用的编程语言&am…

iOS-最全的App上架教程

App上架教程 在上架App之前想要进行真机测试的同学,请查看《iOS- 最全的真机测试教程》,里面包含如何让多台电脑同时上架App和真机调试。 P12文件的使用详解 注意: 同样可以在Build Setting 的sign中设置证书,但是有点麻烦&…

生态伙伴 | 携手深圳科创学院,持续推动项目落地与成长

01 大赛介绍 中国硬件创新创客大赛始于2015年,由深圳华秋电子有限公司主办,至今已经成功举办八届,赛事范围覆盖华南、华东、华北三大地区,超10个省市区域。 大赛影响了超过45万工程师群体,吸引了35000多名硬创先锋报…

Linux文件系统、磁盘I/O是怎么工作的?

同CPU、内存一样,文件系统和磁盘I/O,也是Linux操作系统最核心的功能。磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘基础上,提供了一个用来管理文件的树状结构。 目录: 一. 文件系统 1. 索引节点和目录项 2. 虚拟文件系…

抖音短视频APP的益与害都存在,今日详解其利弊

抖音是一款音乐创意短视频社交软件,是一个专注年轻人的15秒音乐短视频社区。这两年抖音太火了,不若与众身边的朋友百分之八十的朋友手机上都有这个软件,即使不拍也会抱着手机刷到停不下来。 首先,抖音其实给人们带来了许多乐趣和娱…

兼容性测试点和注意项,建议收藏

一:兼容性测试的概念:就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二:兼容性测试的分类: (1)浏览器兼容性测试 指的是在浏览器上检查…

【CCF- CSP 202104-2 邻域均值 二维数组前缀和满分题解】

代码思路: 本题如果直接用暴力求解的话只能得70分。 运用到了二维数组的前缀和,难点是如何求出二维数组的前缀和并计算出领域所有元素的和。 注意计算平均数的时候要保证精度相同,所有都要化为double型,否则会出错。 首先&…

基于SpringBoot+Vue的闲一品交易平台设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

160743-62-4,DMG PEG2000,1,2-二肉豆蔻酰-rac-甘油-3-甲氧基聚乙二醇2000

DMG PEG2000,DMG-mPEG2000,1,2-二肉豆蔻酰-rac-甘油-3-甲氧基聚乙二醇2000 Product structure: Product specifications: 1.CAS No:160743-62-4 2.Molecular formula: C34H66O 3.Molecular weight&#xff…

基于openfaas托管脚本的实践

作者 | 张曦 一、openfaas产品背景 在云服务架构发展之初,这个方向上的思路是使开发者不需要关心搭建和管理后端应用程序。这里并没有提及无服务器这个概念,而是指后端基础设施由第三方来托管,需要的基础架构组建均以服务的形式提供&#x…

Paragon NTFS2023最新mac免费实用工具磁盘工具

mac虽然系统稳定,但在使用过程中也有一些瑕疵,如当mac连接到ntfs格式移动磁盘时,可能会出现移动磁盘无法在mac被正常读写的状况。遇到移动磁盘无法正常读写的状况,我们可以在mac中使用磁盘工具,以使mac获得对ntfs格式移…

100种思维模型之全局观思维模型-67

全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。 01、何谓全局观思维模型 一、全局观思维 什么叫全局观? 世界上的所有东西,都是被规律作用者的&#xff0c…