00 Ansible简介和安装

1. Ansible概述与基本概念

1.1. 什么是Ansible?

Ansible 是一款用 Python 编写的开源 IT 自动化工具,主要用于配置管理、软件部署及高级工作流编排。它能够简化应用程序部署、系统更新等操作,并且支持自动化管理大规模的计算机系统。Ansible 的设计简单易懂,且无代理(agentless),这使得它可以快速集成到现有环境中。

大量任务基于ssh解析,会出现瓶颈。

1.2. 初学者官方指南

推荐阅读官方的入门指南:redhat ansible。该指南将帮助你快速上手 Ansible,了解其基本概念和用法,助你掌握自动化运维的基础技能。

2. 学习目的与实践场景

2.1. 学习目标

  • 自动化运维:通过Ansible实现服务器管理和配置的自动化,减少手动操作,提升效率,降低错误率。
  • 简化配置管理:使用简洁的脚本和配置文件,快速完成大规模系统配置和部署。
  • 提升运维效率:通过自动化流程减少重复工作,使运维人员能够专注于更有价值的任务。

2.2. 适合的受众:

  • 运维工程师:Ansible可以帮助运维人员管理大量的服务器,自动化配置和部署,减少人工干预。
  • 开发人员:开发人员通过使用Ansible能在开发环境中快速部署应用,环境搭建,减少手动配置环境的时间。

2.3. 实践场景:

  • 系统初始化:在公司部署一批新服务器时,使用Ansible自动化配置操作系统、系统参数调整、批量创建用户、设置用户权限、基础环境、软件安装等,确保所有服务器按照公司标准配置,无需手动配置每台服务器。
  • 配置变更:服务器中配置Nginx时,修改Nginx配置文件(如nginx.conf),并通过Ansible将配置推送到所有相关服务器,确保负载均衡策略一致,并自动重启服务生效。
  • 应用部署:通过Ansible Playbook部署Zookeeper集群、kafka集群,确保多节点间的通信和数据同步,每个节点的配置都被统一管理。
  • 计划任务:使用Ansible定期配置和执行服务器备份任务(例如通过cron),确保数据每周定时备份到远程存储,不遗漏任何重要数据。
  • 环境一致性:Ansible保证开发环境、测试环境和生产环境的配置一致性,在每个环境中部署的Nginx服务配置、SSL证书、日志路径等完全相同,避免环境间的配置差异引发问题。

二、Ansible安装配置

1. Ansible架构与工作原理

控制机:通过命令行接口(CLI)或 Playbook 发起任务请求。

SSH通信:控制机通过 SSH 协议向受控节点发送任务请求(控制机要免密登录被控机)。

受控节点:接收到任务并执行。受控节点可以是多个,Ansible 通过并行执行提高效率。

模块:Ansible 使用模块在受控节点上执行特定操作,如安装软件、复制文件等。

结果反馈:执行完毕后,受控节点将执行结果反馈给控制机,显示成功或失败的状态,并提供执行细节。

2. 安装与环境配置

2.1. 节点规划

用途

主机 IP

操作系统

备注

Ansible 控制机

192.168.101.100

Rocky Linux 9.4

安装 ansible-core、用于运行 playbook

被控节点(node1)

192.168.101.101

Rocky Linux 9.4

RockyLinux9

被控节点(node2)

192.168.101.110

CentOS 7.9

测试兼容性,常用老版本系统

被控节点(node3)

192.168.101.120

ubuntu 20.04

ubuntu操作系统

2.2. 安装Ansible

# 启用epel 源
sudo dnf install epel-release -y
# 安装ansible
sudo dnf install ansible-core -y
ansible --version

2.3. Asnsible节点与被管理节点基于Key(免密登录)SSH

# 生成ssh key
ssh-keygen
# 拷贝ssh key到远程主机,ssh的时候就不需要输入密码了
ssh-copy-id root@192.168.101.101

2.4. SSH公私钥用途(补充)

2.4.1. SSH 公钥与私钥的用途解释

用于通过不安全的网络安全地访问远程计算机。它使用 公钥加密私钥解密 机制来实现安全的身份验证和加密通信。

2.4.2. 公钥与私钥的基本概念

公钥(Public Key)

•用于加密数据或进行身份验证。

•可公开共享,并添加到远程服务器中以允许验证客户端身份。

私钥(Private Key)

•用于解密数据或验证身份。

•必须保密,泄露可能导致安全问题。

非对称加密的特点

•公钥和私钥成对使用,公钥加密的数据只能通过对应的私钥解密,反之亦然。

2.4.3. SSH 免密登录原理

1.生成密钥对:在客户端生成公钥和私钥(使用 ssh-keygen)。私钥保存在本地,公钥可公开。

2.部署公钥:将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中。

3.身份验证:

•客户端连接时,服务器发送一个加密的随机挑战信息。

•客户端使用私钥解密挑战信息,并返回解密结果。

•如果解密正确,服务器允许登录。

免密登录本质

•通过 公钥加密私钥解密 来验证客户端身份,无需使用密码。

公钥和私钥比作一个 锁和钥匙:

  • 公钥:如一把可以公开的锁,任何人都可以用它锁住东西(加密)。
  • 私钥:如仅你拥有的钥匙,只有你能打开锁(解密)。

3. Ansible 常用命令

3.1. 定义主机组

[rockylinux]
192.168.101.100
192.168.101.101[centos]
192.168.101.110[ubuntu]
192.168.101.120

3.2. 远程执行Linux命令(使用常用命令批量管理机器)

指定用户没有做过免密登录提示任务运行失败,也可以指定密码,相对繁琐。

ansible all -m ping -u xinglu
ansible all -m ping -u xinglu

3.3. 执行命令

在所有的远程主机上,以当前bash的同名用户,在远程主机执行“echo bash”

ansible -i hosts all -m command -a "pwd"

指定rockylinux 组创建文件

所有组创建文件

查看详细信息加v

ansible -i hosts all -a 'w' -vvv

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

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

相关文章

Linxu实验五——NFS服务器

一.NFS服务器介绍 NFS服务器(Network File System)是一种基于网络的分布式文件系统协议,允许不同操作系统的主机通过网络共享文件和目录3。其核心作用在于实现跨平台的资源透明访问,例如在Linux和Unix系统之间共享静态数据&#…

『 测试 』测试基础

文章目录 1. 调试与测试的区别2. 开发过程中的需求3. 开发模型3.1 软件的生命周期3.2 瀑布模型3.2.1 瀑布模型的特点/缺点 3.3 螺旋模型3.3.1 螺旋模型的特点/缺点 3.4 增量模型与迭代模型3.5 敏捷模型3.5.1 Scrum模型3.5.2 敏捷模型中的测试 4 测试模型4.1 V模型4.2 W模型(双V…

红外遥控键

红外 本章节旨在让用户自定义红外遥控功能,需要有板载红外接收的板卡。 12.1. 获取红外遥控键值 由于不同遥控器厂家定义的按键键值不一样,所以配置不通用,需要获取实际按键对应的键值。 1 2 3 4 5 6 #设置输出等级 echo 7 4 1 7> /pr…

同一个虚拟环境中conda和pip安装的文件存储位置解析

文章目录 存储位置的基本区别conda安装的包pip安装的包 看似相同实则不同的机制实际路径示例这种差异带来的问题如何检查包安装来源最佳实践建议 总结 存储位置的基本区别 conda安装的包 存储在Anaconda(或Miniconda)目录下的pkgs和envs子目录中: ~/anaconda3/en…

机器学习极简入门:从基础概念到行业应用

有监督学习(supervised learning) 让模型学习的数据包含正确答案(标签)的方法,最终模型可以对无标签的数据进行正确处理和预测,可以分为分类与回归两大类 分类问题主要是为了“尽可能分开整个数据而画线”…

split和join的区别‌

split和join是Python中用于处理字符串的两种方法,它们的主要区别在于功能和使用场景。‌ split()方法 ‌split()方法用于将字符串按照指定的分隔符分割成多个子串,并返回这些子串组成的列表‌。如果不指定分隔符,则默认分割所有的空白字符&am…

MySQL从入门到精通(二):Windows和Mac版本MySQL安装教程

目录 MySQL安装流程 (一)、进入MySQL官网 (二)、点击下载(Download) (三)、Windows和Mac版本下载 下载Windows版本 下载Mac版本 (四)、验证并启动MySQL …

LeetCode 解题思路 45(分割等和子集、最长有效括号)

解题思路: dp 数组的含义: 在数组中是否存在一个子集,其和为 i。递推公式: dp[i] | dp[i - num]。dp 数组初始化: dp[0] true。遍历顺序: 从大到小去遍历,从 i target 开始,直到 …

电影感户外哑光人像自拍摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!

调色详情 电影感户外哑光人像自拍摄影 Lr 调色,是借助 Lightroom 软件,针对户外环境下拍摄的人像自拍进行后期处理。旨在模拟电影画面的氛围与质感,通过调色赋予照片独特的艺术气息。强调打造哑光效果,使画面色彩不过于浓烈刺眼&a…

使用 NV‑Ingest、Unstructured 和 Elasticsearch 处理非结构化数据

作者:来自 Elastic Ajay Krishnan Gopalan 了解如何使用 NV-Ingest、Unstructured Platform 和 Elasticsearch 为 RAG 应用构建可扩展的非结构化文档数据管道。 Elasticsearch 原生集成了行业领先的生成式 AI 工具和提供商。查看我们的网络研讨会,了解如…

Android 13 使能user版本进recovery

在 debug 版本上,可以在关机状态下,同时按 电源键 和 音量加键 进 recovery 。 user 版本上不行。 参考 使用 build 变体 debug 版本和 user 版本的差别之一就是 ro.debuggable 属性不同。 顺着这个思路追踪,找到 bootable/recovery/reco…

每日算法刷题计划

这是我每天坚持刷算法题的仓库,每天刷1-3道,时间30-40min,加油! 目前考虑leetcode洛谷形式,c和python3语言,leetcode主要学核心思想,洛谷学会输入输出格式 每日打卡:markdowncsdn打卡 刷题策略: 按分类刷…

红黑树():

1. 红黑树: 红黑树从根节点开始的最长的路径不会超过最短路径的2倍。 红黑树的话,他的结点的分布没有我们的AVL树的结点的分布均衡,但是效率也不错,AVL树的结点分布的那么均匀,其实也是在进行了旋转,付出了…

【AI智能推荐系统】第六篇:隐私保护与联邦学习在推荐系统中的平衡之道

第六篇:隐私保护与联邦学习在推荐系统中的平衡之道 提示语:🔥 “数据不出域,推荐更精准!深度揭秘腾讯、蚂蚁集团如何用联邦学习打造合规推荐系统,隐私计算技术全景解析与工业级实现方案!” 目录 隐私保护的行业挑战隐私计算技术体系 2.1 联邦学习基础架构2.2 差分隐私…

【Qt/C++】深入理解 Lambda 表达式与 `mutable` 关键字的使用

【Qt/C】深入理解 Lambda 表达式与 mutable 关键字的使用 在 Qt 开发中,我们常常会用到 lambda 表达式来编写简洁的槽函数。今天通过一个实际代码示例,详细讲解 lambda 的语法、变量捕获方式,特别是 mutable 的作用。 示例代码 QPushButto…

记录 ubuntu 安装中文语言出现 software database is broken

搜索出来的结果是 sudo apt-get install language-pack-zh-han* 然而,无效,最后手动安装如下 apt install language-pack-zh-hans apt install language-pack-zh-hans-base apt install language-pack-gnome-zh-hans apt install fonts-arphic-uming apt install libreoffic…

[虚幻官方教程学习笔记]深入理解实时渲染(An In-Depth Look at Real-Time Rendering)

原英文教程地址深入理解实时渲染(An In-Depth Look at Real-Time Rendering) 文章目录 1.Intro to An In-Depth Look at Real-Time RenderingCPU VS GPUDeferred VS Forward 2. Before Rendering and OcclusionCulling计算的步骤使用console command:fre…

Linux进程间信号

目录 信号入门 生活角度中的信号 技术应用角度的信号 信号的发送与记录 信号处理常见方式概述 产生信号 通过终端按键产生 通过系统函数向进程发信号 由软件条件产生信号 由硬件异常产生信号 阻塞信号 信号其他相关常见概念 在内核中的表示 sigset_t 信号集操作…

Git简介和发展

Git 简介 Git是一个开源的分布式版本控制系统,跨平台,支持Windows、Linux、MacOS。主要是用于项目的版本管理,是由林纳斯托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。 起因 在2002年至2005年间,Linux内核开发团队使…

Perspective,数据可视化的超级引擎!

Perspective 是一个强大的交互式数据分析和可视化库,它允许你创建高度可配置的报告、仪表板、笔记本和应用程序。给用户提供了一个新的视角来看待数据。 Stars 数9125Forks 数1217 主要特点 高效流式查询引擎:Perspective使用C编写,并编译为…