了解linux的ansible 的使用

news2024/12/23 19:01:33
本章主要介绍在RHEL8中如何安装ansible 及 ansible 的基本使用。
  • ansible是如何工作的
  • 在 RHEL8中安装ansible
  • 编写ansible.cfg和清单文件
  • ansible 的基本用法
如果管理的服务器很多,如几十台甚至几百台,那么就需要一个自动化管理工具了,
ansible就是这样的一种自动化管理工具。
ansible是通过ssh连接到被管理主机,然后执行相关操作的,如图28-1所示。
ansible主机通过ssh连接到被管理主机时,需要提前设置密钥登录,使得从ansible主机
可以无密码登录到被管理主机。
本实验的拓扑图如图28-2所示。
这里server是 ansible主机,以lduan用户登录。server2和server3是被管理主机,在这两
台主机上创建lduan 用户并配置好sudo,使得这两台主机上的lduan用户通过sudo-i可以无
密码切换到root,下面开始配置。
[root@pp ~]# yum -y install https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@pp ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@server ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
先安装系统的开发工具
步骤1、挂载镜像
操作:略
配置本地yum源
操作:略
安装开发工具
1 [root@pp ~]# yum ‐y groupinstall 开发工具
RHEL8默认的Python版本为3.6,不符合项目的需求。现在升级到3.9
# 下载Python3.9.5
1 wget https://www.python.org/ftp/python/3.9.5/Python‐3.9.5.tgz
2 tar zxvf Python‐3.9.5.tgz
# 安装必须的包
1 dnf ‐y install gcc zlib* libffi‐devel
# 安装Python
1 cd Python‐3.9.5/
2 ./configure ‐‐prefix=/usr/local/python3 ‐‐enable‐optimizations
3 make
4 make install
# 删除原先的Python3和pip3
1 rm ‐rf /usr/bin/python3
2 ln ‐s /usr/local/python3/bin/python3 /usr/bin/python3
3 rm ‐rf /usr/bin/pip3
4 ln ‐s /usr/local/python3/bin/pip3 /usr/bin/pip3
#查看Python3和Pip3是否正确的被安装:
1 python3 ‐‐version
2 pip3 ‐‐version
第二步安装ansible
1 rpm ‐ivh http://47.108.86.156/rhel8/ansible29/ansible‐2.9‐for‐rhel‐8‐x
86_64‐rpms/Packages/a/ansible‐2.9.11‐1.el8ae.noarch.rpm
警告:/var/tmp/rpm-tmp.uk5jjC: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51:
NOKEY
错误:依赖检测失败:
python3-cryptography 被 ansible-2.9.11-1.el8ae.noarch 需要
python3-jinja2 被 ansible-2.9.11-1.el8ae.noarch 需要
sshpass 被 ansible-2.9.11-1.el8ae.noarch 需要
需要解决依赖包问题
前面两个使用本地yum源就可以解决了
sshpass使用一个新的yum源
[root@pp ~]# cat /etc/yum.repos.d/ansible.repo
[ansible]
name=ansible
baseurl=http://47.108.86.156/rhel8/ansible29/ansible‐2.9‐for‐rhel‐8‐x8
6_64‐rpms/
gpgcheck=0
安装以上依赖
yum ‐y install python3‐cryptography
yum ‐y install python3‐jinja2
配置sshpass软件yum源
[root@pp ~]# cat /etc/yum.repos.d/ansible.repo
[ansible]
name=ansible
baseurl=http://47.108.86.156/rhel8/ansible29/ansible‐2.9‐for‐rhel‐8‐x8
6_64‐rpms/
gpgcheck=0
[root@pp ~]#
再次安装ansible
[root@pp ~]# rpm ‐ivh
http://47.108.86.156/rhel8/ansible29/ansible‐2.9‐for‐rhel‐8‐x86_64‐rpms/P
ackages/a/ansible‐2.9.11‐1.el8ae.noarch.rpm
使用命令检查ansible的安装结果
ansible ‐‐version
pip3 ‐‐version
这里安装的ansible的版本是2.9.27,同时也显示ansible的默认配置是
letc/ansible/ansible.cfgo还要确保ansible主机能够解析所有的被管理机器,这里通过配
置/etc/hosts 来实现,l/etchosts的内容如下。
[root@pp ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.248.45 pp.rhce.cc pp
192.168.248.23 up.rhce.cc up
192.168.248.lp lp.rhce.cc lp
[root@pp ~]# 
在up和lp两台机器上确认已经创建好了blab 用户,如果没有请自行创建,然
后配置好sudo,命令如下。
[root@up ~]# cat /etc/sudoers.d/blab
blab ALL=(root) NOPASSWD: ALL
[root@up ~]# 

[root@lp ~]# cat /etc/sudoers.d/blab
blab ALL=(root) NOPASSWD: ALL
[root@lp ~]# 
这样在这两台机器上,blab 用户通过sudo-i可以无密码切换到root用户。
使用blab 用户登录server,配置好ssh密钥登录,使得blab 用户可以无密码登录到
up和 lp,命令如下。
[root@pp ~]# ssh up
The authenticity of host 'up (192.168.248.23)' can't be established.
ECDSA key fingerprint is SHA256:m8du5O4O5MZFdMmtcJYat7m78cwewV63nN8DJBE0UI4.

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Fri Dec 15 10:04:18 2023 from 192.168.248.1
[root@up ~]# 
[root@up ~]# 
[root@up ~]# 
28.2 编写ansible.cfg和清单文件
执行ansible或ansible-playbook命令时,优先使用当前目录中ansible.cfg的配置。如果
当前目录中没有,则使用默认的/etc/ansible.cfg中的配置。
下面的操作都是server上的blab用户操作的,先在家目录下创建ansible.cfg,内容如下。
[root@pp ~]# cat ansible.cfg 
[defaults]
inventory = ./hosts

[privilege_escalation]
become=True
become_method=sudo
become_user=root
[root@pp ~]# 
这里在[defaults]字段下只添加了一句inventory = ./hosts,表示把当前目录下名称为
hosts的文件当作清单文件(什么是清单文件马上就要讲到)。
在 [privilege_escalation]字段下定义了如何提升权限,因为是使用lduan用户登录到被管
理主机的,所以需要提升权限。这个字段下写了3条,分别如下。
(1)become=True:登录到被管理主机时要切换到其他用户。
(2)become_method=sudo:以 sudo的方式切换。
(3)become_user-root :切换到root用户。
这三句的意思是,当用ssh登录到被管理主机时,以 sudo的方式切换到root,这也是为
什么一开始要在被管理主机上配置好sudo的原因。
所有的被管理机器都要写入清单文件中。在实验环境中有两台被管理主机,那么分别写在
hosts中,内容如下。
[blab@pp ~]$ cat hosts
up
lp
[blab@pp ~]$ 
这里一行一台主机,我们在使用ansible或ansible-playbook命令时,指定的主机名必须
是这个名称才行。要确保能解析server2和server3,写成相应的IP也可以。
如果环境中被管理的主机很多,把主机一台台地写进去太冗繁,所以可以改成如下写法。
[blab@pp ~]$ cat hosts 
up
lp
server[10:15]
[blab@pp ~]$ 
这里加了一行server[10:15],表示 server10到 server15,这样在清单文件中就写了8台主
机(需要注意的是,在我们的练习环境中server10到server15不存在)。
如果在执行ansible命令时只是想在部分主机上执行,那么在清单文件中可以对主机进行
分组。定义主机组时,组名写在中括号“[]”中,在[下面写的主机名都属于这个组,直到定
义下一个组的位置为止。修改清单文件的内容如下。
[blab@pp ~]$ cat hosts 
up
lp
server[10:15]

[db1]
server[2:5]

[db2]
server6
server7
[blab@pp ~]$ 
这里一行一台主机,我们在使用ansible或ansible-playbook命令时,指定的主机名必须
是这个名称才行。要确保能解析server2和server3,写成相应的IP也可以。
如果环境中被管理的主机很多,把主机一台台地写进去太冗繁,所以可以改成如下写法。
[blab@pp ~]$ cat hosts 
up
lp
server[10:15]

[blab@pp ~]$ 
这里加了一行server[10:15],表示 server10到 server15,这样在清单文件中就写了8台主
机(需要注意的是,在我们的练习环境中server10到server15不存在)。
如果在执行ansible命令时只是想在部分主机上执行,那么在清单文件中可以对主机进行
分组。定义主机组时,组名写在中括号“[]”中,在[下面写的主机名都属于这个组,直到定
义下一个组的位置为止。修改清单文件的内容如下。
[blab@pp ~]$ cat hosts 
up
lp
server[10:15]

[db1]
server[2:5]

[db2]
server6
server7
[blab@pp ~]$ 
这里定义了两个主机组db1和db2,db1组中包括的主机有server2到server5,db2组中包
括的主机有server6和 server7。
下面查看每个主机组中有多少主机。首先查看主机组db1中的主机,命令如下
[blab@pp ~]$ ansible db1 --list-hosts
  hosts (4):
    server2
    server3
    server4
    server5
[blab@pp ~]$ 
28.3 ansible的基本用法
ansible的基本用法如下。
1 ansible 机器名 ‐m 模块× ‐a "模块的参数"
这里的机器名必须出现在清单文件中,整体的意思是在指定的机器上执行模块x。例如,在
up上执行hostname命令。然后就可以看到了

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

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

相关文章

ac转dc电源芯片SM7025 支持12V/18V输出电压

AC转DC电源芯片是一种能够将交流电转换为直流电的重要器件,广泛应用于电子设备和电源系统中。它可以提供稳定的直流电源,为设备的正常运行提供保障。 AC转DC电源芯片的工作原理是利用内部的整流、滤波、变压器和稳压等电路,将输入的交流电转换…

qt-C++笔记之addAction和addMenu的区别以及QAction的使用场景

qt-C笔记之addAction和addMenu的区别以及QAction的使用场景 code review! 文章目录 qt-C笔记之addAction和addMenu的区别以及QAction的使用场景1.QMenu和QMenuBar的关系与区别2.addMenu和addAction的使用场景区别3.将QAction的信号连接到槽函数4.QAction的使用场景5.将例1修改…

用串口给stm32下载程序

由于开发板没有预留swd下载口,于时在网上找教程用串口给开发板下载。 记录一下。 好文推荐: 如何使用串口来给STM32下载程序 - 知乎 (zhihu.com) 驱动安装: CH340:CH340/CH341USB转串口WINDOWS驱动程序 PL2302:…

【论文解读】ICLR 2024高分作:ViT需要寄存器

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/abs/2309.16588 摘要: Transformer最近已成为学习视觉表示的强大工具。在本文中,我们识别并表征监督和自监督 ViT 网络的特征图中的伪影。这些…

Axure的动态面板的使用

目录 1.什么是动态面板? 2.使用动态面板 ​编辑 轮播图 erp的登录系统 erp侧边栏 1.什么是动态面板? 动态面板是Axure的高级交互元件,由不同的状态面板组成,是我们制作交互过程中运用频率最高的元件,很多交互效果需…

Intewell-Hyper I_V2.0.0_release版本正式发布

新型工业操作系统_Intewell-Hyper I_V2.0.0_release版本正式发布 软件发布版本信息 版本号:V2.0.0 版本发布类型:release正式版本 版本特点 1.建立Intewell-Hyper I基线版本 版本或修改说明 基于Intewell-Lin V2.3.0_release版本: 1.Devel…

GaussDB如何创建和管理视图

GaussDB如何创建和管理视图 一、什么是视图 当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。 视图与基本表不同,不是物理上实际存在的&#x…

LeetCode刷题--- 二叉树的所有路径

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 【 http://t.csdnimg.cn/yUl2I 】 【C】 【 http://t.csdnimg.cn/6AbpV 】 数据结构与算法 【 http://t.csdnimg.cn/hKh2l 】 前言&…

云原生向量计算引擎 PieCloudVector:为大模型提供独特记忆

拓数派大模型数据计算系统(PieDataComputingSystem,缩写:πDataCS)在10月24日程序员节「大模型数据计算系统」2023拓数派年度技术论坛正式发布。πDataCS 以云原生技术重构数据存储和计算,「一份存储,多引擎…

2021年数维杯国际大学生数学建模B题极端降雨的定量分析求解全过程文档及程序

2021年数维杯国际大学生数学建模 B题 极端降雨的定量分析 原题再现: 近两年来,我国河南、陕西、湖北等地遭遇了极为罕见的暴雨。与此同时,北方一些城市遭遇了历史上罕见的暴风雪。这些暴雨和降雪对当地人民的生命、安全和财产构成严重威胁。…

不知道CRM系统怎么选?这十款值得推荐

许多想要购买CRM软件的客户都因为市场上产品数量众多而不知从何下手。因此,我们以企业实力、品牌荣誉、企业在行业内的排名情况,结合网络口碑等多种因素为基础,为国内CRM软件建立了以下排行榜,并重点介绍排行榜前十的CRM软件供应商…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(三)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型(一) 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.平衡优化器算法4.实验参数设定5.算法…

Leetcode—1502.判断能否形成等差数列【简单】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—1502.判断能否形成等差数列 实现代码 class Solution { public:bool canMakeArithmeticProgression(vector<int>& arr) {sort(arr.begin(), arr.end());int diff abs(arr[1] - arr[0]);for(int i 1; i <…

PyQt6 表单布局Form Layout (QFormLayout)

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计43条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

react经验7:高亮关键字

预期效果&#xff1a; 实现原理 将需要高亮的关键词做成正则表达式 new RegExp((${word}), "gi")使用上述正则表达式切割目标字符串 origin.split(new RegExp((${word}), "gi"))切割结果会包含正则匹配到的词 过滤掉空字符&#xff0c;并对关键词包裹…

实在智能“数字员工”荣获工信部赛宝信创“全栈优秀解决方案奖”

近日&#xff0c;由工信部和中国通信企业协会主办的“2023&#xff08;第四届&#xff09;数字化转型推动高质量发展大会”在海口成功举办&#xff0c;大会现场重磅发布了中国赛宝信息技术应用创新优秀解决方案获奖名单&#xff0c;实在智能《信创RPA-统计局数智办公解决方案》…

24年五年制专转本招生院校有可能发生变动

据悉&#xff0c;24年五年制专转本院校可能将发生改变&#xff0c;南京传媒学院有可能停止招生 将新增一所招生大学&#xff1a;南京航空航天大学金城学院 南京航空航天大学金城学院始建于1999年&#xff0c;是南京航空航天大学联合社会力量创办的独立学院。学校位于江苏省南京…

Vue学习计划-Vue2--VueCLi(五)全局事件总线、消息订阅与发布(pubsub)

抛出问题:我们多级组件&#xff0c;或者任意不想关的子组件如何传递数据呢&#xff1f; 1. 全局事件总线&#xff08;$bus&#xff09; 一种组件间通信的方式&#xff0c;适用于任意组件间通信 全局事件总线示意图&#xff1a; 安装全局事件总线&#xff1a; new Vue({..…

代码随想录二刷 | 二叉树 | 110.平衡二叉树

代码随想录二刷 &#xff5c; 二叉树 &#xff5c; 110.平衡二叉树 题目描述解题思路递归迭代 代码实现递归法迭代法 题目描述 110.平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉…