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

玩转ansible之参数调试和文件操作篇

更多IT技术文章,欢迎关注微信公众号“运维之美”

玩转ansible之参数调试和文件操作篇

  • 01 剧本调试和帮助
  • 02 使用场景举例

上节我们学习了使用ansible进行软件安装,那么安装完软件后,就需要linux系统和软件配置修改了,对于linux主机批量修改内核参数或者软件配置,使用ansible来实现是最合适不过了。ansible语法众多,学会调试和使用命令帮助更加重要。

01 剧本调试和帮助

ansible-ploybook剧本的语法和模块很多,由于格式和其他因素可能导致报错,在使用中学会调试和检查工具,以及排错,在我看来比记语法更多重要。

  • 剧本检查
#检查Playbook的语法是否正确,但不执行任何操作
ansible-playbook --syntax-check playbook.yml#列出Playbook中的所有任务。
ansible-playbook --list-tasks playbook.yml #列出Playbook中将要执行剧本的所有主机
ansible-playbook --list-hosts playbook.yml#列出Playbook中定义的所有标签
ansible-playbook --list-tags playbook.yml#列出所有任务的标签,包括未使用的标签
ansible-playbook --list-tags playbook.yml --tags=all#列出所有任务以及它们的标签。
ansible-playbook --list-tags playbook.yml --list-tasks
  • 使用帮助
ansible-playbook --help:获取有关ansible-playbook命令的帮助信息。ansible-doc -l:列出所有可用的Ansible模块及其简要描述。ansible-doc module_name:查看特定模块的文档和使用帮助。ansible-doc --help:获取有关ansible-doc命令的帮助信息。

例如执行ansible-doc yum除了可以看到可用参数,还可以看到使用案例

在这里插入图片描述

02 使用场景举例

  • 文件创建

使用场景:创建/data目录,并在目录下创建file.txt的文件

- name: touch filehosts: k8s_nodebecome: yes tasks:- name: 创建一个目录file:path: /datastate: directory- name: 创建一个文件file:path: /data/file.txtstate: touch

执行结果
图片

  • 文件复制

等同于copy命令

 - name: Copy Files to dest dir hosts: target_hosts  tasks:  - name: Copy file  copy:  src: /path/to/source/file  dest: /path/to/destination/file  owner: user  group: group  mode: 0644   
  • 删除文件

等同于rm命令

 - name: Delete Files  hosts: target_hosts  tasks:  - name: Delete file  file:  path: /path/to/file  state: absent    
  • 备份和改名
- name: 移动文件command: mv /opt/sourcefile.txt /tmp/newfile.txt

command模块调用linux命令和直接执行一样,只不过是批量的,效率更高

  • 追加数据

等同于linux命令sed插入数据

 - name: Insert Line in File  hosts: target_hosts  tasks:  - name: Insert line to file  lineinfile:  path: /path/to/file  line: 'hello world'    
  • 替换操作

sed也有修改替换数据的能力,使用此剧本可以修改内核参数

- name: 临时关闭 selinuxhosts: target_hostsshell: "setenforce 0"failed_when: false
- name: 永久关闭 selinuxhosts: target_hostslineinfile:dest: /etc/selinux/configregexp: "^SELINUX="line: "SELINUX=disabled"  #修改为disabled后即可关闭selinux
文件查找

作用和linux命令find相同,当然你也可以通过command模块搭配find命令实现此功能

- name: find file in dirhosts: kube_nodetasks:- name: find txt filefind:paths: /optfile_type: filepatterns: '*.txt'register: found_files- name: 打印结果debug:msg: "{{item.path}}"with_list: "{{found_files.files}}"

查找出文件后,可以进行删除或者其他后续操作

  • 判断文件是否存在
 - name: 检查目录是否存在hosts: kube_nodebecome: yes  # 使用 sudo 或 root 权限tasks:- name: 使用 stat 模块检查目录是否存在stat:path: /tmp  # 指定要检查的目录路径register: dir_check- name: 打印检查结果debug:var: dir_check.stat.exists

这里首先使用 stat 模块来检查目标目录的存在性,将结果保存到 dir_check 变量中。然后,使用 debug 模块来打印检查结果,dir_check.stat.exists 变量将包含 True 或 False,表示目录是否存在。

  • 使用template模版

使用template模板

- name: 生成配置文件hosts: target_hoststasks:- name: 使用模板生成配置文件template:src: /path/to/template.j2dest: /path/to/configfile.conf

通过用于将预先定义好template的文件作为模版提供给软件或者修改内核参数使用。

相关文章:

玩转ansible之参数调试和文件操作篇

更多IT技术文章,欢迎关注微信公众号“运维之美” 玩转ansible之参数调试和文件操作篇 01 剧本调试和帮助02 使用场景举例 上节我们学习了使用ansible进行软件安装,那么安装完软件后,就需要linux系统和软件配置修改了,对于linux主机…...

JVM虚拟机:垃圾回收器之Parallel Old(老年代)

本文重点 本文将学习老年代的另外一种垃圾回收器Parallel Old(PO),这是一种用于老年代的并行化垃圾回收器,它使用标记整理算法进行垃圾回收。 历史 在1.6之前,新生代使用Parallel Scavenge只能搭配老年代的Serial Old收集器,而…...

Stream流的groupingBy

Stream流的groupingBy 简单使用 业务场景:现在有100个人,这些人都年龄分部在18-30岁之间。现要求把他们按照年龄进行分组 key:年龄 value:数据列表 public void listToMapGroup() {//这里假设通过listStreamService.list();方法…...

如何在不结束tcpdump的情况下复制完整的pcap

tcpdump正在运行的时候,他写入的pcap可能是不完整的,通常我们要结束掉tcpdump才能拿到完整的pcap,否则wireshark打开的时候会提示:The capture file appears to have been cut short in the middle of a packet。这可能是因为tcpd…...

maven POM文件总体配置说明

<project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-- 父项目的坐…...

49.批处理命令(1/2)

目录 一批处理。 &#xff08;1&#xff09;批处理定义。 &#xff08;2&#xff09;常见命令。 &#xff08;2.1&#xff09;rem和:: &#xff08;2.2&#xff09;echo和。 &#xff08;2.3&#xff09;pause。 &#xff08;2.4&#xff09;errorlevel。 &#xff08;…...

react类式组件的生命周期和useEffect实现函数组件生命周期

概念 生命周期是一个组件丛创建,渲染,更新,卸载的过程,无论是vue还是react都具有这个设计概念,也是开发者必须熟练运用的,特别是业务开发,不同的生命周期做不同的事是很重要的. ....多说两句心得,本人是先接触vue的,无论是vue2还是vue3的生命周期,在理解和学习上都会比react更…...

ARM 基础学习记录 / 异常与GIC介绍

GIC概念 念课本&#xff08;以下内容都是针对"通用中断控制器&#xff08;GIC&#xff09;"而言&#xff0c;直接摘录的&#xff0c;有的地方可能不符人类的理解方式&#xff09;&#xff1a; 通用中断控制器&#xff08;GIC&#xff09;架构提供了严格的规范&…...

java压缩pdf体积,图片体积

pdf整体进行压缩,图片进行压缩 // 生成主证书的PDF路径 创建一个文件String pdfPath UploadDown.createFile(".pdf");outputStream new FileOutputStream(pdfPath);bufferedOutputStream new BufferedOutputStream(outputStream);writer PdfWriter.getInstance(…...

Ubuntu(WSL2) 安装最新版本的 GCC

要在 Ubuntu 上安装最新版本的 GCC&#xff0c;可以通过以下步骤进行操作&#xff1a; 1. 打开终端&#xff08;Terminal&#xff09; 2. 更新软件包列表&#xff0c;确保系统使用最新的软件包信息&#xff0c;运行以下命令&#xff1a; sudo apt update 3. 安装 GCC 软件包…...

lua 时间差功能概略

简介 在进行程序设计过程中&#xff0c;经常需要对某些函数、某些程序片断从开始运行到运行结束所耗费的时间进行一些量化。这种量化实际上就是计算时间差。 获取函数耗时情景如下&#xff1a; function time_used() --开始计时-- do something at here. --结束计时--时间差&…...

【C++11】左值引用,右值引用,移动/复制构造,完美转发

左值与右值 字面意思是可以放在等号左边的就是左值&#xff0c;只能放在等号右边的就是右值&#xff08;为何是“可以”“只能”&#xff1f;例如i是左值&#xff0c;但他依然可以放在等号右边&#xff09;。 严格上的定义&#xff1a;可以取地址的就是左值&#xff0c;反之为…...

解决找不到x3daudio1_7.dll的方法,快速解决x3daudio1_7.dll丢失问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到x3daudio1_7.dll”。这个问题可能是由于多种原因引起的&#xff0c;例如文件丢失、损坏或被病毒感染等。下面将详细介绍如何解决这个问题。 首先&#xff0c;我们需要了解x3daudio1_…...

LeetCode:2300. 咒语和药水的成功对数(C++)

目录 2300. 咒语和药水的成功对数 题目描述&#xff1a; 实现代码与解析&#xff1a; 二分 原理思路&#xff1a; 2300. 咒语和药水的成功对数 题目描述&#xff1a; 给你两个正整数数组 spells 和 potions &#xff0c;长度分别为 n 和 m &#xff0c;其中 spells[i] 表…...

【Spring生命周期核心底层源码之剖析】

文章目录 一、Spring生命周期核心底层源码剖析—扫描1.1、Spring底层扫描机制doScan方法源码剖析 一、Spring生命周期核心底层源码剖析—扫描 1.1、Spring底层扫描机制doScan方法源码剖析 其源代码如下&#xff1a; protected Set<BeanDefinitionHolder> doScan(Strin…...

关于Thread.sleep方法的一些使用

Thread.sleep方法的作用就是使当前线程暂停执行一段指定的时间。 它的参数是以ms为单位的时间参数&#xff0c;表示暂停时间长度。如Thread.sleep(1000);表示暂停1s。 这个方法通常用在以下一些情况&#xff1a; 1、模拟延迟&#xff1a;在某些情况下&#xff0c;我们希望在…...

MeterSphere | 前端入参加密

项目场景&#xff1a; 在 MeterSphere 开源框架中&#xff0c;解决前端手机号入参加密 解决方案&#xff1a; 导入 JavaScript 包采用加密算法 导入网上 JavaScript 包 // 1. 通过cdn加载网上的js文件 g new Packages.org.mozilla.javascript.tools.shell.Global(Packages.o…...

微服务如何做负载均衡?

笔者在参与联通某子公司时&#xff0c;遇到了这样一个问题。感觉比较实际&#xff0c;特来记录一波。 先看腾讯混元的解答&#xff1a; 微服务架构中&#xff0c;负载均衡是必不可少的。在微服务中&#xff0c;负载均衡可以通过以下几种方式来实现&#xff1a; 1. DNS轮询&am…...

C++高级编程:构建高效稳定接口与深入对象设计技巧

C高级编程&#xff1a;构建高效稳定接口与深入对象设计技巧 建立稳定接口 类是C中的主要抽象单位。你应该将抽象原则应用于你的类&#xff0c;尽可能将接口与实现分离。具体来说&#xff0c;你应该使所有数据成员私有&#xff0c;并可选择性地提供getter和setter方法。这就是…...

Qt——连接mysql增删查改(仓库管理极简版)

目录 UI布局设计 .pro文件 mainwindow.h main.cpp UI布局设计 .pro文件 QT core gui QT core gui sql QT sqlgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any …...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...