当前位置: 首页 > news >正文

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.xdnf.cn/news/339463.html

相关文章:

  • ubuntu 22.04 换源
  • 【Linux】FreeRTOS与Linux:实时与通用的终极对比
  • LeetCode热题100--54.螺旋矩阵--中等
  • Hutool的`BeanUtil.toBean`方法详解
  • Navee滑板车强势登陆中国,以智能科技重塑城市出行新风尚
  • 使用 Cesium 构建 3D 地图应用的实践
  • C++ 算法学习之旅:从入门到精通的秘籍
  • AWS之存储服务
  • 蓝桥杯FPGA赛道第二次模拟题代码
  • 如何从播放器构造角度研究 Media3 源码
  • 六、Hadoop初始化与启动
  • KAXA凯莎科技AGV通信方案如何赋能智能仓储高效运作?
  • 数据结构--红黑树
  • XML简单介绍
  • IBM BAW(原BPM升级版)使用教程第五讲
  • MyBatis 动态 SQL 详细指南【完整示例】
  • Python+ffmpeg 实现给视频添加字幕
  • Android ImageView 加载 Base64编码图片
  • vscode如何使用 GitHub Copilot
  • Windows ABBYY FineReader 16 Corporate 文档转换、PDF编辑和文档比较
  • 文件操作和IO(下)
  • 基础编程题目集 6-8 简单阶乘计算
  • 【Rust错误处理】Rust错误处理机制详解与应用实战
  • Go:简洁高效,构建现代应用的利器
  • 按摩椅的机芯类型和材质
  • 数字化驱动下的智慧物流与零售创新:全流程无人仓与定制开发开源AI智能名片S2B2C商城小程序的协同实践
  • 大模型(LLMs)推理面
  • android-ndk开发(10): use of undeclared identifier ‘pthread_getname_np‘
  • python读写json文件
  • 手撕基于AMQP协议的简易消息队列-7(客户端模块的编写)