ansible开局配置-openEuler
ansible干啥用的就不多介绍了,这篇文章主要在说ansible的安装、开局配置、免密登录。
ansible安装
- 查看系统版本
cat /etc/openEuler-latest
输出内容如下:
openeulerversion=openEuler-24.03-LTS
compiletime=2024-05-27-21-31-28
gccversion=12.3.1-30.oe2403
kernelversion=6.6.0-28.0.0.34.oe2403
openjdkversion=1.8.0.412.b08-5.oe2403
- 清除软件库缓存
dnf clean all
- 建议软件库缓存
dnf makecache
- 安装epel-release软件仓
- 下载对应版本epel-release的软件仓库
# 不同系统版本需要安装不同的epel-release
wget https://mirrors.aliyun.com/repo/epel-testing.repo
2. 重新建立软件库索引
mv epel-testing.repo /etc/yum.repo.d/
dnf clean all
dnf makecache
- 安装ansible
dnf -y install ansible
等待安装完成即可
开局配置
- 常用文件介绍
/etc/ansible/hosts ## 用于存放需要批量管理的主机IP或主机名称
/etc/ansible/ansible.cfg ## 该文件为ansible的主要配置文件
- 添加主机到ansible
192.168.0.10 ansible_ssh_pass=主机密码 ansible_ssh_user=主机账号
192.168.0.11 ansible_ssh_pass=主机密码 ansible_ssh_user=主机账号
192.168.0.12 ansible_ssh_pass=主机密码 ansible_ssh_user=主机账号
ansible_ssh_pass:远程主机登录密码
ansible_ssh_user:远程主机登录账号
- 远程执行ping命令,会发现执行报错
ansible all -m ping
输出内容如下:
192.168.0.10 | FAILED! => {
“msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support
this. Please add this host’s fingerprint to your known_hosts file to
manage this host.”}
192.168.0.11 | FAILED! => {
“msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support
this. Please add this host’s fingerprint to your known_hosts file to
manage this host.”}
192.168.0.12 | FAILED! => {
“msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support
this. Please add this host’s fingerprint to your known_hosts file to
manage this host.”}
出现这个问题主要是因为ansible默认是没有开启账号密码登录的,默认采用证书登录,只需要在配置文件中把证书登录关闭就可以执行成功了。
进入/etc/ansible/ansible.cfg文件,将host_key_checking = False取消注释或者增加该内容即可
再次重新执行就不会有问题了,成功后输出内容如下
192.168.0.11 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.0.10 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.0.12 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
配置免密登录
- 生成密钥
ssh-keygen
一路回车即可,输出内容如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:+RGyyNnrIHOLllk+e2hpNyTmxjBZkMY5vvDmTGuEh5g root@ecs-5352
The key’s randomart image is:
±–[RSA 3072]----+
| . o |
| B |
| o o . . |
| . …+ + . |
| o = ++ S . |
|E o @ + .o . |
| Bo%o=. . |
| O=@++ |
| o.+o=… |
±—[SHA256]-----+
- 编写playbook脚本文件
- hosts: # 主机组remote_user: # 用户名tasks:- name: push ansible keyauthorized_key: user=root key="{{ lookup('file' ,'密钥存放位置')}}" state=present
示例:
- hosts: allremote_user: roottasks:- name: push ansible keyauthorized_key: user=root key="{{ lookup('file' ,'/root/.ssh/id_rsa.pub')}}" state=present
- 执行playbook脚本文件
ansible-playbook push_key.yml
输出结果如下表示执行成功:
[root@ecs-5352 yml]# ansible-playbook push_key.yml
PLAY [all]
TASK [Gathering Facts]
ok: [192.168.0.10]
ok: [192.168.0.12]
ok: [192.168.0.11]
TASK [push ansible key]
changed: [192.168.0.10]
changed: [192.168.0.12]
changed: [192.168.0.11]
PLAY RECAP
192.168.0.10 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.0.11 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.0.12 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
- 测试是否可以免密
- 将ansible.cfg配置文件中的host_key_checking = False注释掉
2. 删除hosts文件主机后面的用户名和密码
3. 测试执行ping命令
ansible all -m ping
输出结果如下:
192.168.0.10 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.0.12 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
192.168.0.11 | SUCCESS => {
"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": false,"ping": "pong"
}
- 再次测试
直接在ansible主机上,使用ssh命令测试是否可以免密登录
ssh root@192.168.0.11
无需输入密码即可登录成功
相关文章:

ansible开局配置-openEuler
ansible干啥用的就不多介绍了,这篇文章主要在说ansible的安装、开局配置、免密登录。 ansible安装 查看系统版本 cat /etc/openEuler-latest输出内容如下: openeulerversionopenEuler-24.03-LTS compiletime2024-05-27-21-31-28 gccversion12.3.1-30.…...

连锁收银系统的优势与挑战
在快速发展的零售环境中,连锁收银系统不仅是收银的工具,更是现代零售管理的重要组成部分。它在提升效率、优化客户体验以及数据管理等方面发挥了关键作用。然而,随着技术的进步和市场环境的变化,连锁收银系统也面临着诸多挑战。本…...
轻型民用无人驾驶航空器安全操控理论培训知识总结-多旋翼部分
航空器知识 螺旋桨 螺旋桨为多旋翼民用无人驾驶航空器提供升力,多旋翼民用无人驾驶航空器通过飞控系统控制电机调节螺旋桨转速,来实现飞行。 天线 多旋翼民用无人驾驶航空器的图像传输以及遥控控制信号,主要是通过无线信道进行的,靠民用无人驾驶航空器与遥控器的天线传…...

springboot092安康旅游网站的设计与实现(论文+源码)_kaic
毕业设计(论文) 基于JSP的安康旅游网站的设计与实现 姓 名 学 号 院 系 专 业 指导老师 2021 年 月 教务处制 目 录 目 录 摘 要 Abstract 第一章 绪论 1.1 研究现状 1.2 设…...
优化 Git 管理:提升协作效率的最佳实践20241030
优化 Git 管理:提升协作效率的最佳实践 引言 在现代软件开发中,版本控制系统是确保代码质量和团队协作顺畅的基石。Git 作为最流行的分布式版本控制工具,其灵活性和强大功能使得开发者能够高效地管理项目代码。然而,仅依靠工具本…...
Cocos使用精灵组件显示相机内容
Cocos使用精灵组件显示相机内容 1. 为什么使用精灵渲染 在游戏引擎中,游戏场景内除webview和video外所有的节点都是渲染在Canvas上,这导致了webview和video只能存在于所有节点的最上层或最下层,而这种层级关系会出现节点事件无法正常监听或者…...

AListFlutter(手机alist)——一键安装,可在手机/电视上运行并挂载各个网盘
前面提到软路由系统OpenWRT的时候,当时说过可以在OpenWRT里安装alist,然后挂载网盘,这样就可以通过webdav的方式在家庭局域网下的任何设备都可以访问操作这些网盘,摆脱硬盘空间不够的问题。 但alist的官方版本是没有手机版本的&a…...

2024快手面试算法题-生气传染
问题描述 思路分析 生气只会向后传播,最后一个生气的人一定是最长连续没有生气的人中的最后一个人,前提是前面得有一个人生气。 注意,一次只能传播一个人,比如示例1,第一次只会传播给第一个P,不会传播给第…...

组织如何防御日益增加的 API 攻击面
应用程序编程接口 (API) 日益重要。随着 API 超出手动控制范围,组织可能面临更大的安全挑战。 在这里,我们与 Akamai 安全技术战略总监 Karl Mattson 进行了交谈。 请介绍一下您的职位和背景。 我在网络安全和技术领导方面拥有超过 25 年的经验&am…...

如何防止U盘盗取电脑数据?
数据安全无论是对企业还是个人都至关重要。这些用户群体随时面临着数据被窃取的风险,而 U 盘则成为了潜在的安全隐患。如果你想要禁止电脑上使用 这类USB 存储设备,看完这篇文章,防止 U 盘盗取数据并非难事。 禁止使用usb存储设备 打开电脑上…...

python爬虫抓取豆瓣数据教程
环境准备 在开始之前,你需要确保你的Python环境已经安装了以下库: requests:用于发送HTTP请求。BeautifulSoup:用于解析HTML文档。 如果你还没有安装这些库,可以通过以下命令安装: pip install requests…...
Mybatis 注意传递多种参数,不一定都有参数值,用xml如何写出查询语句
Mybatis 注意传递多种参数,不一定都有参数值,用xml如何写出查询语句 有一张User表,传递name和age参数,通过mybatis的xml格式编写查询namelike“%张%”,或者age18的学生信息,但是注意传递name和age参数&…...
【Windows】Redis 部署
1、部署 (1)下载 目前 Redis官网 没有提供Windows版本的安装程序,如果需要安装,需要到Github上下载适合Windows的版本。 具体下载地址为: Redis-x64-3.0.504.zipRedis-x64-5.0.14.1.zip (2)…...
【经典】Vue中this指向问题??
在Vue中,this关键字的指向取决于this在何处被定义。在Vue的组件方法中,this指向当前组件实例,即Vue的实例。 以下是一些常见场景的this指向示例: 组件方法内部: export default { methods: { someMethod() { …...
Oracle数据泵(expdp)导入导出数据
源数据库操作(数据备份) 自定义变量 1.查询当前数据库的自定义变量(里面包含导出数据文件路径变量配置,即DUMP_DIR) select * from dba_directories; 2.若没有配置,则创建一个dump_dir(变量…...

得物App 3D球鞋博物馆亮相两博会,打造沉浸式消费新体验
近日,2024中国体育文化博览会、中国体育旅游博览会(简称“两博会”)在苏州国际展览中心拉开帷幕。得物App携手Apple Vision Pro共同打造的3D球鞋博物馆亮相两博会上海展区,并通过3D技术为观众呈现独特的沉浸式消费新体验。 在3D球…...
深度学习中的迁移学习
文章目录 一、迁移学习的基本概念二、迁移学习的步骤三、迁移学习的策略四、迁移学习的应用五、迁移学习的挑战与未来展望 深度学习中的迁移学习是一种重要的机器学习方法,其 核心思想在于利用从一个任务(源任务)中学到的知识或模型…...

【深入浅出】深入浅出Bert(附面试题)
本文的目的是为了帮助大家面试Bert,会结合我的面试经历以及看法去讲解Bert,并非完整的技术细致讲解,介意请移步。 深入浅出】深入浅出Bert(附面试题) 网络结构Pre-TrainingFine-Tuning 输入编码词向量编码句子编码位置…...

Docker-安装
操作系统:Ubuntu 20.04.6 LTS 更新apt sudo apt update 删除旧版本docker sudo apt-get remove docker docker-engine docker.io 安装docker sudo apt install docker.io 查看docker版本 docker --version 启动docker 启动docker sudo systemctl start docker 启用…...

《盼归》
《盼归》 烈日炎炎天桥上,小月踮脚望远方。 汗水滑落笑颜开,心中英雄是父忙。 车声轰鸣情意长,喇叭回应泪两行。 生日快乐声声唤,盼父归来情意长。 在一个炎热的夏日午后,阳光炙烤着大地,天桥上的温度达…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...

使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...