Ansible组件说明

news2024/11/18 8:59:15

1.Ansible Inventory

        工作当中有不同的业务主机,我们需要在把这些机器信息存放在inventory里面,ansible默认的inventory的文件是/etc/ansible/hosts,也可以通过ANSIBLE_HOSTS环境变量来指定或者运行ansible和ansible-playbook的时候用-i参数临时设置。

        1.1 定义主机和主机组

[root@ansible01 ansible]# cat /etc/ansible/hosts |grep -v "^#"|grep -v "^$"
11.0.1.18 ansible_ssh_pass='123456'
11.0.1.19 ansible_ssh_pass='123456'
[docker]
11.0.1.1[2:4]
[docker:vars]
ansible_ssh_pass='123456'
[ansible:children]
docker

第1,2行定义了主机为:11.0.1.18/19,使用Inventory的内置变量ansible_ssh_pass定义ssh登录密码

第3行定义主机组,名为docker

第4行定义了docker组下的3台主机,从11.0.1.12到11.0.1.14

第5行和第6行针对docker组使用了Inventory的内置变量ansible_ssh_pass定义ssh登录密码

第7行和第8行定义了一个组叫ansible,这个组包含docker组

        1.2 多个Inventory列表

我们新增inventory目录,如下

[root@ansible01 inventory]# tree /etc/ansible/inventory/
/etc/ansible/inventory/
├── docker
└── hosts

0 directories, 2 files
[root@ansible01 inventory]# cat /etc/ansible/inventory/hosts 
11.0.1.18 ansible_ssh_pass='123456'
11.0.1.19 ansible_ssh_pass='123456'
[root@ansible01 inventory]# cat /etc/ansible/inventory/docker 
[docker]
11.0.1.1[2:4]
[docker:vars]
ansible_ssh_pass='123456'
[ansible:children]
docker

这样还未生效,我们还得再主配置文件ansible.cfg修改inventory指定目录,如下:

[root@ansible01 ansible]# cat /etc/ansible/ansible.cfg |grep inventory|grep -v "^#"
inventory      = /etc/ansible/inventory/
[inventory]

验证下:

[root@ansible01 ansible]# ansible docker --list-hosts
  hosts (3):
    11.0.1.12
    11.0.1.13
    11.0.1.14
[root@ansible01 ansible]# ansible ansible --list-hosts
  hosts (3):
    11.0.1.12
    11.0.1.13
    11.0.1.14
[root@ansible01 ansible]# ansible 11.0.1.18:11.0.1.19 --list-hosts
  hosts (2):
    11.0.1.18
    11.0.1.19

        1.3 动态Inventory(了解即可)

        在实际应用部署中会有大量的主机列表,手动维护这些列表会是一件很繁琐的事情,动态Inventory可以帮我们解决这些问题,动态Inventory就是Ansible所有的Inventory文件里面的主机列表和变量信息都支持从外部拉取进来,比如我们可以从CMDB系统和Zabbix监控系统拉取所有的主机信息,然后使用Ansible进行管理。

        方法:修改主配置文件ansible.cfg中inventory的定义值改成一个脚本运行。

        1.4 Inventory内置参数

        

2.Ansible AD-Hoc命令

        我们经常会通过命令的形式来使用ansible模块,目前为止ansible自带了259个模块,我们可以使用ansible-doc -l来显示自带的模块,也可以用ansible-doc 模块名,来查看模块,下面我们介绍下常用AD-Hoc命令。

        2.1 执行命令

        Ansible命令都是并发执行的,默认的并发数是由ansible.cfg中的forks值来控制,也可以在运行ansible命令时通过-f参数来指定并发数。

[root@ansible01 inventory]# ansible docker -m shell -a "hostname" -o
11.0.1.19 | CHANGED | rc=0 | (stdout) ansible02
11.0.1.18 | CHANGED | rc=0 | (stdout) ansible01
[root@ansible01 inventory]# ansible docker -m shell -a "uname -r" -f 2 -o
11.0.1.19 | CHANGED | rc=0 | (stdout) 3.10.0-327.el7.x86_64
11.0.1.18 | CHANGED | rc=0 | (stdout) 3.10.0-1160.el7.x86_64

        2.2 复制文件

        我们还可以使用copy模块来批量下发文件,文件的变化是通过MD5值来判断的

#1.使用copy复制test.txt文件
[root@ansible01 inventory]# ansible docker -m copy -a 'src=/test.txt dest=/root/test.txt owner=root group=root mode=644 backup=yes' -o
11.0.1.19 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "dest": "/root/test.txt", "gid": 0, "group": "root", "md5sum": "d41d8cd98f00b204e9800998ecf8427e", "mode": "0644", "owner": "root", "secontext": "system_u:object_r:admin_home_t:s0", "size": 0, "src": "/root/.ansible/tmp/ansible-tmp-1713505961.01-99673-167875618419234/source", "state": "file", "uid": 0}
#2.用md5sum来验证md5值
[root@ansible01 inventory]# ansible docker -m shell -a 'md5sum /root/test.txt' -o
11.0.1.19 | CHANGED | rc=0 | (stdout) d41d8cd98f00b204e9800998ecf8427e  /root/test.txt
[root@ansible01 inventory]# md5sum /test.txt 
d41d8cd98f00b204e9800998ecf8427e  /test.txt

        2.3 包和服务管理

        我们可以使用yum模块来管理包和服务

#1.yum模块安装httpd
[root@ansible01 inventory]# ansible docker -m yum -a 'name=httpd state=latest' -o
11.0.1.19 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": true, "changes": {"installed": ["httpd"], "updated": []}, "msg": "", "obsoletes": {"NetworkManager": {"dist": "x86_64", "repo": "@anaconda/7.2", "version": "1:1.0.6-27.el7"}, "grub2": {"dist": "x86_64", "repo": "@anaconda/7.2", "version": "1:2.02-0.29.el7"}, "grub2-tools": {"dist": "x86_64", "repo": "@anaconda/7.2", "version": "1:2.02-0.29.el7"}, "iwl7265-firmware": {"dist": "noarch", "repo": "@anaconda/7.2", "version": "22.0.7.0-43.el7"}, "pygobject3-base": {"dist": "x86_64", "repo": "@anaconda/7.2", "version": "3.14.0-3.el7"}, "python-rhsm": {"dist": "x86_64", "repo": "@anaconda/7.2", "version": "1.15.4-5.el7"}, "rdma": {"dist": "noarch", "repo": "@anaconda/7.2", "version": "7.2_4.1_rc6-1.el7"}, "redhat-access-insights": {"dist": "noarch", "repo": "@anaconda/7.2", "version": "1.0.6-0.el7"}}, "rc": 0, "results": ["Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-\n              : manager\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-99.el7_9.1 will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-99.el7_9.1 for package: httpd-2.4.6-99.el7_9.1.x86_64\n--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-99.el7_9.1.x86_64\n--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-99.el7_9.1.x86_64\n--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-99.el7_9.1.x86_64\n--> Running transaction check\n---> Package apr.x86_64 0:1.4.8-7.el7 will be installed\n---> Package apr-util.x86_64 0:1.5.2-6.el7_9.1 will be installed\n---> Package httpd-tools.x86_64 0:2.4.6-99.el7_9.1 will be installed\n---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package         Arch       Version                Repository              Size\n================================================================================\nInstalling:\n httpd           x86_64     2.4.6-99.el7_9.1       rhel-7-server-rpms     1.2 M\nInstalling for dependencies:\n apr             x86_64     1.4.8-7.el7            rhel-7-server-rpms     104 k\n apr-util        x86_64     1.5.2-6.el7_9.1        rhel-7-server-rpms      92 k\n httpd-tools     x86_64     2.4.6-99.el7_9.1       rhel-7-server-rpms      94 k\n mailcap         noarch     2.1.41-2.el7           rhel-7-server-rpms      31 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package (+4 Dependent packages)\n\nTotal download size: 1.5 M\nInstalled size: 4.3 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                              198 kB/s | 1.5 MB  00:07     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : apr-1.4.8-7.el7.x86_64                                       1/5 \n  Installing : apr-util-1.5.2-6.el7_9.1.x86_64                              2/5 \n  Installing : httpd-tools-2.4.6-99.el7_9.1.x86_64                          3/5 \n  Installing : mailcap-2.1.41-2.el7.noarch                                  4/5 \n  Installing : httpd-2.4.6-99.el7_9.1.x86_64                                5/5 \n  Verifying  : httpd-tools-2.4.6-99.el7_9.1.x86_64                          1/5 \n  Verifying  : apr-1.4.8-7.el7.x86_64                                       2/5 \n  Verifying  : mailcap-2.1.41-2.el7.noarch                                  3/5 \n  Verifying  : httpd-2.4.6-99.el7_9.1.x86_64                                4/5 \n  Verifying  : apr-util-1.5.2-6.el7_9.1.x86_64                              5/5 \n\nInstalled:\n  httpd.x86_64 0:2.4.6-99.el7_9.1                                               \n\nDependency Installed:\n  apr.x86_64 0:1.4.8-7.el7                 apr-util.x86_64 0:1.5.2-6.el7_9.1   \n  httpd-tools.x86_64 0:2.4.6-99.el7_9.1    mailcap.noarch 0:2.1.41-2.el7       \n\nComplete!\n"]}
#2.查看httpd是否安装
[root@ansible01 inventory]# ansible docker -m shell -a 'rpm -qa httpd' -o
11.0.1.19 | CHANGED | rc=0 | (stdout) httpd-2.4.6-99.el7_9.1.x86_64

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

泛微E9开发 快速隐藏明细表列

快速隐藏明细表列 1、隐藏列方法(不作用,一直隐藏) 在实际运用中,用户不需要但是需要间接使用的列,我们可以通过右击该列-【列自定义属性】-在“列自定义属性”菜单中启用“隐藏列”功能。 根据该方法设置的前端页…

纯js图片上传插件

目录标题 一、效果预览二、使用简单三、完整代码(一)index.html(二)css(三)js四、附带后台上传文件代码 一、效果预览 支持多图片上传,删除、预览。 二、使用简单 导入依赖(需要…

视觉化数据的艺术:掌握Matplotlib基础绘图

Matplotlib基础绘图 文章目录 Matplotlib基础绘图1.基础流程2.绘图设置3.动态rc参数4.pyplot的基础图表函数 安利 1.基础流程 1.导入模块。绘图之前,需要先导入包含相应函数的模块。 2.创建画布与创建子图。第一部分主要是构建出一张空白的画布,如果需要…

Elastic 网络爬虫:为你的网站添加搜索功能

作者:来自 Elastic Lionel Palacin 为了演示如何使用 Elastic 网络爬虫,我们将以一个具体的网站为例,讲解如何在该网站上添加搜索功能。我们将探讨发现网站的方法,并利用 Elastic 网络爬虫提供的功能,以最佳方式准备待…

springboot+ssm基于Java的小型企业银行账目管理系统代码Lw

本毕业设计课题要求学生基于软件工程方法,根据课题的需求,给出小型企业银行账目管理系统概要设计、详细设计、数据库的设计以及系统实现和测试,并撰写规范的毕业设计说明书。该系统的主要模块有:系统管理、帐目管理、查询统计、用…

如何创建响应式HTML电子邮件模板

在这个适合初学者的指南中,你将学习如何创建一个响应式电子邮件模板。你将跟随逐步说明以及代码片段设计一个在任何设备上都看起来很棒的电子邮件模板。 这个项目非常适合渴望掌握电子邮件设计基础的新手! (本文视频讲解:java56…

抖店严查违规店铺!老商家下台,新手正是入驻时机!

哈喽~我是电商月月 抖店一直在严查违规店铺,很多新手都在犹豫不前,不知道要不要去做抖音小店 以为是抖音平台在“想方设法”克扣商家钱财,开店都是坑? 要这样想,那就大错特错了! 抖店整改,把…

你的mongodb客户端是哪个呢?

MongoDB 是一种流行的文档数据库,它可以支持多种场景和应用。有很多客户端工具可以用来管理和操作 MongoDB,以下是一些常用的工具,以及它们的介绍: 一、MongoDB Shell MongoDB Shell 是连接(和使用)MongoD…

每日一题:计数质数

给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 示例 1: 输入:n 10 输出:4 解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2: 输入:n 0 输出:0示例 3&#…

NVIDIA智算中心“产品”上市,AI工业革命的iPhone时刻

GTC 2024落下帷幕了,但这个大会的信息仍在AI产业和经济中发酵。咨询机构WIKIBON认为,GTC 2024在整个科技史中的意义超过了当年史蒂夫乔布斯的iPod和iPhone发布。在AI将永久改变人类的共识下,GTC 2024在广度、愿景、生态系统等方面都有着深远影…

危险场景智能运维巡检系统

在石油、天然气、煤炭和化工等行业,特别是在I/IIC级防爆区场景中,存在着诸如易燃、易爆、高温、有毒有害以及粉尘等危险因素。例如,油气转运站、催化裂化装置、煤化工甲醇车间以及制氢站等地点,都面临着这些潜在的危险。传统的人工…

如何使用ArcGIS Pro进行路径分析

路径分析是一种空间分析技术,用于确定两个或多个地点之间最佳路径或最短路径,这里为大家介绍一下在ArcGIS Pro中如何进行路径分析,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的道路数据,除了道路数据&a…

交换基础配置--单臂路由

1、创建vlan 创建vlan10 创建vlan10和vlan20 创建vlan1到vlan9 vlan1可以不用创建,因为交换机的所有接口默认为vlan1 本实验只需要vlan10和vlan20,以上只是介绍创建vlan的方法。 查看创建的vlan: sw2同理。接着将需要划分vlan的接口划入…

linux基本命令2

一、Whereis是查找工具中速度最快的一个,但是whereis查找的范围有限, whereis只能查找2进制程序, 使用whereis查找 ls -b:查找2进制程序 -m:查找文档 -s:查找码源 二、which命令是查找工具中速度最快命令…

3D模型查看器开发实战【WebGL】

本文介绍如何从头开发一个包含3D 模型查看器的页面 - 尽管它非常简单,但你将学习的步骤也应该有助于构建其他类型的 Web 应用程序。 在自己的网站或博客里展示3D模型更简单的方式是使用NSDT 3DConvert提供的在线服务,无需任何开发工作,5分钟…

access多表关联提示:语法错误(操作符丢失)在查询表达式中

在access数据库中执行多表关联时提示了一个错误 select * from Patient a inner join BioMain b on a.BioIDb.BioID inner join BioResult c on b.BioIDc.BioID where len(a.PatientID)>12 and b.AddTime>#2024-04-17 05:53:23# and b.AddTime<#2024-04-17 17:53:23#…

基于Python 实现数据可视化大屏

数据本身是冰冷的数字&#xff0c;通过选择合适的图形或者图表来进行展示表达&#xff0c;使得传递给使用者的感受更加直观、更容易获得其中的价值。 数据可视化将技术与艺术完美结合&#xff0c;借助图形化的手段&#xff0c;清晰有效地传达与沟通信息。一方面&#xff0c;数…

Unity地形关联出错的解决办法以及地形深度拷贝

问题 最近发现unity地形系统的一个bug&#xff0c;导入的场景地形数据关联错乱了&#xff0c;关联到别的场景的地形数据了&#xff0c;meta替换了也没用&#xff0c;不清楚它具体是怎么关联的。 看下面的案例&#xff1a; 可以看到正常这个场景的地形数据应该关联的是Scene_E…

【GitBlit】Windows搭建Git服务器详细教程

前言 如果公司或个人想在 Windows 环境下搭建私有的 Git 服务器&#xff0c;那么这个开源的 GitBlit 是一个不错的选择。 Gitblit 是一个开源纯 Java 的用于管理、查看和服务 Git 存储库。它是一个小型的托管集中式存储库工具。支持 SSH、HTTP 和 GIT 协议&#xff0c;开箱即…

SpringBoot项目如何实现邮件发送

文章目录 1. 开启邮箱SMTP服务2. 导入pom依赖3. 在配置文件中添加邮箱配置3. 封装EmailTask类4. 写测试类 1. 开启邮箱SMTP服务 这里以163邮箱为例&#xff0c;点击设置——更多设置——POP3/SMTP/IMAP——开启服务 根据提示开启服务之后会得到一个授权码&#xff0c;只显示一…