Ansible自动化部署K8s集群一 Ansible的基础使用实战
一、Ansible介绍
1.安装ansible: yum install ansible -y
2.ansible的架构图:
3.ansible四部分:
inventory:ansible管理的主机信息,包括ip地址、ssh端口、账号和密码等
modules:任务均由模块完成
plugins:增加ansible的核心功能
playbooks:模块化当以一些列任务供外部调用
4.主机清单(示例代码):
[webservers]
192.168.142.152
192.168.142.153
www.xiao.org
5.命令行使用:ad-hoc可以输入内容快速执行某个操作
远程连接主机认证:
[webservers]
192.168.142.152 ansible_ssh_user=root ansible_ssh_pass='xiao'
192.168.142.153 ansible_ssh_user=root ansible_ssh_pass='xiao'
ssh密钥对认证(ansible是基于ssh进行远程连接执行命令:
[webservers]
192.168.142.152 ansible_ssh_user=root ansible_ssh_key=/root/.ssh/id_rsa
192.168.142.153 ansible_ssh_user=root
上述的密钥信息也可以在ansible.cfg配置文件中指定
另外,也可以先建立起控制主机和受控主机之间的ssh的免密连接,通过在控制主机上创建一对密钥对,将公钥通过ssh_copy_id root@192.168.142.152/3传递到被控主机上,可以顺利执行ansible的ad-hoc命令。
6.ansible命令行常用的选项:
-C / --check playbook.yml的语法检查,不执行任何操作
-e var=test 设置附加变量 key=value
--user=xiao ssh连接的用户,默认为none
-k ssh连接用户的密码
-b / --become 提权,默认为root
-K 提权密码
7.命令行使用:
ansible all -m ping 网络连通性测试
ansible all -m shell -a"ls /root" -u root -k 在命令行执行脚本(查看/root信息)
ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/host" 指定webservers主机组中的主机,使得将本主机的指定文件复制到指定主机组的指定目录下。
二、ansible的常用模块
1.shell(在远程主机上执行脚本):
ansible webservers -m shell -a "ls /root"
其中如果执行多条shell语句可以使用分号将其分隔开。
2.copy(将文件复制到远程主机):
ansible webservers -m copy -a "src=/etc/hosts dest=/tmp/host mode=777 owner=xiao group=xiao backup=yes"
上述指令的作用时将指定的文件复制到远程主机上并指定复制后的主机的属主和文件的权限,其中的backup表示如果远程主机上该文件存在,会将其创建为一个备份。
3.file(管理文件和文件属性):
ansible webservers -m file -a "path=/tmp/hosts state=absent"
上述命令表示删除远程主机上的path路径的文件或者递归删除目录
上述中state参数的值决定对文件进行什么操作,其中absent表示删除,present表示创建
4.yum(软件包管理):
ansible webservers -m yum -a "name=httpd state=latest"
该条命令表示在远程主机上安装最新版本的http服务,其中state可以取absent(卸载) present(安装yum源中的软件包) latest(安装最新的软件)
5.systemd(管理服务):
ansible webservers -m systemd -a "name=httpd state=started enabled=yes"
该命令表示启动httpd服务并使其开机自启动,也可以设定其服务状态为stopped restarted reloaded
6.unarchive(解压):
ansible webservers -m unarchive -a "src=test.tar.gz dest=/tmp"
该命令表示将本机文件的压缩文件解压到远程主机的指定目录上
7.debug(执行过程中打印语句):
ansible webservers -m debug -a "var=hostvars[inventory_hostname]"
该命令表示打印远程主机的所有变量
三、Playbook的简单操作
1.主机和用户:
- hosts: webserversremote_user: xiaobecome: yesbecome_user: yes
2.定义变量:
#命令行传递:
-e var=test
#主机变量和组变量(在inventory中定义变量)#主机变量
[webservers]
192.168.142.152 ansible_ssh_user=root hostname=web1
192.168.142.153 ansible_ssh_user=root hostname=web2#主机组变量
[webservers:vars]
ansible_ssh_user=root
单文件存储:
/etc/ansible/group_vars/all.yml 对所有的主机有效
/etc/ansible/host_vars/webservers.yml 只对webservers主机组的主机生效
在playbook中自定义变量:
- hosts: webservers
vars:
http_port: 80
server_name: www.xiao.org
register变量(将其他命令的运行结果保存下来作为变量的值):
-shell: /etc/passwd
register: result
-debug:
var: result
3.任务列表:
tasks:
- name: 安装nginx最新版yum: pkg=nginx state=latest
4.任务控制:
可以将大的playbook中的多个任务进行标记,可以让其只执行有特殊标记的任务,或者让其跳过执行有特殊标记的任务。
tasks:
- name; 安装nginx最新版yum: pkg=nginx state=latesttags: install
- name: 写入nginx的配置文件template: src=/test/nginx.conf dest=/etc/nginx/nginx.conftags: config
ansible-playbook test.yml --tags "install" 表示只执行带有install标签的任务
ansible-playbook test.yml --skip-tags "install" 表示跳过带有install标签的任务
5.流程控制:
tasks:
- name: 仅在192.168.142.152上执行任务debug; msg= {{ansible_default_ipv4.address}}when: ansible_default_ipv4.address == '192.168.142.152'
循环:
tasks:
-name; 批量创建用户user: name={{ item }} state=present groups=xiaowith_items:- testuser1- testuser2
常用的循环语句:
with_items 标准循环
with_fileglob 遍历目录文件
with_dict 遍历字典
相关文章:
Ansible自动化部署K8s集群一 Ansible的基础使用实战
一、Ansible介绍 1.安装ansible: yum install ansible -y 2.ansible的架构图: 3.ansible四部分: inventory:ansible管理的主机信息,包括ip地址、ssh端口、账号和密码等 modules:任务均由模块完成 plugins:增加ansible的核心功能 pla…...
ZooKeeper Watcher 机制详解:从注册到回调的全过程
引言 在分布式系统中,数据的实时性和一致性是至关重要的。ZooKeeper 通过其 Watcher 机制提供了一种高效的方式来监听数据变化或事件,从而使客户端能够在数据发生变化时立即收到通知。本文将深入探讨 ZooKeeper 的 Watcher 机制,具体包括客户…...
flutter_tools/gradle Unsupported class file major version 65 问题解决
1.问题定位 使用 命令 flutter doctor --verbose 可以查看当前项目中,使用的java的版本。 [✓] Android Studio (version 2024.2)• Android Studio at /Applications/Android Studio.app/Contents• Flutter plugin can be installed from:🔨 https…...
C++设计模式 - 模板模式
一:概述 模板方法(Template Method)是一种行为型设计模式。它定义了一个算法的基本框架,并且可能是《设计模式:可复用面向对象软件的基础》一书中最常用的设计模式之一。 模板方法的核心思想很容易理解。我们需要定义一…...
mysql查缺补漏
好文推荐: 【数据库】快速理解脏读、不可重复读、幻读-CSDN博客 再探幻读!什么是幻读?为什么会产生幻读,MySQL中是怎么解决幻读的?-CSDN博客 引擎 mysql默认引擎:innodb 1.支持行锁 2.支持事务 3.支持外键 索引…...
跨越边界,大模型如何助推科技与社会的完美结合?
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 概述 2024年,大模型技术已成为人工智能领域的焦点。这不仅仅是一项技术进步,更是一次可能深刻影响社会发展方方面面的变革。大模型的交叉能否推动技术与社会的真正融合?2025年…...
哪吒闹海!SCI算法+分解组合+四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测
哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测 目录 哪吒闹海!SCI算法分解组合四模型原创对比首发!SGMD-FATA-Transformer-LSTM多变量时序预测效果一览基本介绍程序设计参考资料 效果一览…...
前端【技术方案】浏览器兼容问题(含解决方案、CSS Hacks、条件注释、特性检测、Polyfill 等)
浏览器兼容性测试工具 https://www.browserstack.com/ HTML 兼容处理 问题1 - 不支持 HTML5 新标签 旧版浏览器(主要是 IE8 及以下)不支持 HTML5 新标签(如 <header>、<nav>、<article> 等) 解决方案 引入 H…...
荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测
目录 荣耀Magic系列手机详细对比 最新二手价格预测 性价比分析 总结 以下是荣耀Magic系列手机的详细对比以及最新二手价格预测: 荣耀Magic系列手机详细对比 特性荣耀Magic3系列荣耀Magic4系列荣耀Magic5系列荣耀Magic6系列荣耀Magic7系列处理器骁龙888&#x…...
后盾人JS -- 模块化开发
开发模块管理引擎 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…...
CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据) 标题:CNN卷积神经网络多变量多步预测,光伏功率预测 一、引言 1.1 研究背景及意义 随着全球能源危机的加剧和环保意识的提升ÿ…...
深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 仓库主页: GitCode︱ Gitee ︱ Github 💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正! 前言 在 Java 开发中,字符串常量池(String Constant…...
单向/双向,单层/多层RNN输入输出维度问题
单向/双向,单层/多层RNN输入输出维度问题 RNN单层单向RNNRnn CellRnn 双层单向RNN单层双向RNN双层双向RNN RNN 单层单向RNN Rnn Cell 循环神经网络最原始的Simple RNN实现如下图所示: 下面写出单个时间步对应的Rnn Cell计算公式: 如果用矩阵运算视角来看待的话&…...
chromium-mojo
https://chromium.googlesource.com/chromium/src//refs/heads/main/mojo/README.md 相关类:https://zhuanlan.zhihu.com/p/426069459 Core:https://source.chromium.org/chromium/chromium/src//main:mojo/core/README.md;bpv1;bpt0 embedder:https://source.chr…...
ZooKeeper 的典型应用场景:从概念到实践
引言 在分布式系统的生态中,ZooKeeper 作为一个协调服务框架,扮演着至关重要的角色。它的设计目的是提供一个简单高效的解决方案来处理分布式系统中常见的协调问题。本文将详细探讨 ZooKeeper 的典型应用场景,包括但不限于配置管理、命名服务…...
缓存组件<keep-alive>
缓存组件<keep-alive> 1.组件作用 组件, 默认会缓存内部的所有组件实例,当组件需要缓存时首先考虑使用此组件。 2.使用场景 场景1:tab切换时,对应的组件保持原状态,使用keep-alive组件 使用:KeepAlive | Vu…...
YouBIP 项目
技术方案 难点 成效 项目背景 库存管理涉及大量数据,如何在前端实现高效的数据展示和交互是一个挑战。库存管理系统需要处理大量的入库、出库、盘点等操作,尤其是在大企业或多仓库场景下,高并发操作可能导致数据库锁争用、响应延迟等问题。…...
react概览webpack基础
react概览 课程介绍 webpack 构建依赖图->bundle 首屏渲染: 减少白屏等待时间 数据、结构、样式都返回。需要服务器的支持 性能优化 ***webpack干的事情 模块化开发 优势: 多人团队协作开发 可复用 单例:全局冲突 闭包 模块导入的顺序 req…...
DeepSeek 助力 Vue 开发:打造丝滑的步骤条
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
STM32的HAL库开发---高级定时器---互补输出带死区实验
一、互补输出简介 互补输出:OCx输出高电平,则互补通道OCxN输出低电平。OCx输出低电平,则互补通道OCxN输出高电平。 带死区控制的互补输出:OCx输出高电平时,则互补通道OCxN过一会再输出输出低电平。这个时间里输出的电…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
