ansible开局配置-openEuler

news2024/11/28 12:46:47

ansible干啥用的就不多介绍了,这篇文章主要在说ansible的安装、开局配置、免密登录。

ansible安装

  1. 查看系统版本
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

  1. 清除软件库缓存
dnf clean all
  1. 建议软件库缓存
dnf makecache 
  1. 安装epel-release软件仓
    1. 下载对应版本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 

  1. 安装ansible
dnf -y install ansible

等待安装完成即可

开局配置

  1. 常用文件介绍

/etc/ansible/hosts ## 用于存放需要批量管理的主机IP或主机名称

/etc/ansible/ansible.cfg ## 该文件为ansible的主要配置文件

  1. 添加主机到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:远程主机登录账号

  1. 远程执行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"

}

配置免密登录

  1. 生成密钥
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]-----+

  1. 编写playbook脚本文件
- hosts: # 主机组
  remote_user: # 用户名
  tasks:
    - name: push ansible key
      authorized_key: user=root key="{{ lookup('file' ,'密钥存放位置')}}" state=present

示例:

- hosts: all
  remote_user: root
  tasks:
    - name: push ansible key
      authorized_key: user=root key="{{ lookup('file' ,'/root/.ssh/id_rsa.pub')}}" state=present
  1. 执行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

  1. 测试是否可以免密
    1. 将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"

}

  1. 再次测试

直接在ansible主机上,使用ssh命令测试是否可以免密登录

ssh root@192.168.0.11

无需输入密码即可登录成功

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

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

相关文章

img 标签的 object-fit 属性

设置图片固定尺寸后,可以通过 object-fit 属性调整图片展示的形式 object-fit: contain; 图片的长宽比不变,相应调整大小。 object-fit: cover; 当图片的长宽比与容器的长宽比不一致时,会被裁切。 object-fit: fill; 图片不再锁定长宽…

基于边缘计算的智能门禁系统架构设计分析

案例 阅读以下关于 Web 系统架构设计的叙述,回答问题1至问题3。 【说明】 某公司拟开发一套基于边缘计算的智能门禁系统,用于如园区、新零售、工业现场等存在来访被访业务的场景。来访者在来访前,可以通过线上提前预约的方式将自己的个人信息…

数学建模清风——论文写作方法教程笔记

PS:本文不讲LateX的使用!讲述论文的写作方法 首页:论文标题摘要关键词 一、问题重述 二、问题分析 三、模型假设 四、符号说明 五、模型的建立与求解 六、模型的分析与检验 七、模型的评价、改进与推广 八、参考文献 附录 首页&#xff…

Laravel5 抓取第三方网站图片,存储到本地

背景 近期发现,网站上的部分图片无法显示, 分析发现,是因为引用的第三方网站图片(第三方服务器证书已过期) 想着以后显示的方便 直接抓取第三方服务器图片,转存到本地服务器 思路 1. 查询数据表&#xff0…

自适应神经网络架构:原理解析与代码示例

个人主页:chian-ocean 文章专栏 自适应神经网络结构:深入探讨与代码实现 1. 引言 随着深度学习的不断发展,传统神经网络模型在处理复杂任务时的局限性逐渐显现。固定的网络结构和参数对于动态变化的环境和多样化的数据往往难以适应&#…

《Python游戏编程入门》注-第4章1

《Python游戏编程入门》的第4章是“用户输入:Bomb Cathcer游戏”,通过轮询键盘和鼠标设备状态实现Bomb Cathcer游戏。 1 Bomb Cathcer游戏介绍 “4.1 认识Bomb Cathcer游戏”内容介绍了Bomb Cathcer游戏的玩法,即通过鼠标来控制红色“挡板”…

【Java基础】2、Java基础语法

f2/fnf2:选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释? 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息;简单理解,就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

Spring Boot 应用开发概述

目录 Spring Boot 应用开发概述 Spring Boot 的核心特性 Spring Boot 的开发模式 Spring Boot 在企业应用开发中的优势 结论 Spring Boot 应用开发概述 Spring Boot 是由 Pivotal 团队开发的一个框架,基于 Spring 框架,旨在简化和加速基于 Spring …

微信小程序 - 动画(Animation)执行过程 / 实现过程 / 实现方式

前言 因官方文档描述不清晰,本文主要介绍微信小程序动画 实现过程 / 实现方式。 实现过程 推荐你对照 官方文档 来看本文章,这样更有利于理解。 简单来说,整个动画实现过程就三步: 创建一个动画实例 animation。调用实例的方法来描述动画。最后通过动画实例的 export 方法…

docker的安装配置与基本简单命令

目录 1.docker简介 2.docker安装 2.1使用root用户登陆 更新yum源 2.2安装依赖 2.3设置yum源 更新yum源索引 2.4安装docker 2.5启动并且设置开机自启动 2.6验证安装是否成功 2.7配置docker加速器 2.8重启docker服务 3.docker简单使用 3.1下载镜像 3.2列出…

【Spring】Cookie与Session

💐个人主页:初晴~ 📚相关专栏:计算机网络那些事 一、Cookie是什么? Cookie的存在主要是为了解决HTTP协议的无状态性问题,即协议本身无法记住用户之前的操作。 "⽆状态" 的含义指的是: 默认情况…

论文略读:Can We Edit Factual Knowledge by In-Context Learning?

EMNLP 2023 第一个探索in-context learning在语言模型知识编辑方便的效果 传统的知识编辑方法通过在包含特定知识的文本上进行微调来改进 LLMs 随着模型规模的增加,这些基于梯度的方法会带来巨大的计算成本->论文提出了上下文知识编辑(IKE&#xff0…

WebGL 添加背景图

1. 纹理坐标(st坐标)简介 ST纹理坐标(也称为UV坐标)是一种二维坐标系统,用于在三维模型的表面上精确地定位二维纹理图像。这种坐标系统通常将纹理的左下角映射到(0,0),而右上角映射到(1,1)。 S坐标&#x…

基于Multisim的可编程放大电路设计与仿真

74LS279(RS触发器),结合开关,将输出接入74LS163实现的8位计数器的时钟端,每拨动两次开关K,将产生一个脉冲信号,计数器将加一,产生的结果为000,001,010,011,100,101,110,111&#xff…

面试经典 150 题.P26. 删除有序数组中的重复项(003)

本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public int removeDuplicates(int[] nums) …

并发编程(2)——线程管控

目录 二、day2 1. 线程管控 1.1 归属权转移 1.2 joining_thread 1.2.1 如何使用 joining_thread 1.3 std::jthread 1.3.1 零开销原则 1.3.2 线程停止 1.4 容器管理线程对象 1.4.1 使用容器 1.4.2 如何选择线程运行数量 1.5 线程id 二、day2 今天学习如何管理线程&a…

5个可替代Gamma的国产ppt软件推荐!职场办公不要太简单!

Gamma ppt是海外一款非常受欢迎的ai做ppt软件,这款软件上线的时间不长,却在短时间内收获了众多用户的好评和资本市场的青睐。 对国内用户而言,Gamma PPT在国内虽然可以使用,但是由于其站点架设在海外,访问时往往存在延…

2024年9月电子学会青少年软件编程Python等级考试(三级)真题试卷

2024年9月青少年软件编程Python等级考试(三级)真题试卷 选择题 第 1 题 单选题 以下python表达式的值为True的是?( ) A.all( ,1,2,3) B.any([]) C.bool(abc) D.divmod(6,0) 第 2 题 单选题 下列python代码的…

数据结构与算法-21算法专项(中文分词)(END)

中文分词 搜索引擎是如何理解我们的搜索语句的? mysql中使用 【like “%中国%”】,这样的使用方案 缺点1:mysql索引会失效缺点2:不能模糊,比如我搜湖南省 就搜不到湖南相关的 1 trie树 Trie树,又称前缀树…

【日志】力扣13.罗马数字转整数 || 解决泛型单例热加载失败问题

2024.10.28 【力扣刷题】 13. 罗马数字转整数 - 力扣(LeetCode)https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150这题用模拟的思想可以给相应的字母赋值,官方的答案用的是用一…