当前位置: 首页 > 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 …...

M12连接器的工作原理:如何在极端环境下保证信号零丢失

“凡益之道&#xff0c;与时偕行。”在工业现场&#xff0c;这句话往往被换一种方式理解&#xff1a;&#x1f449; 环境越复杂&#xff0c;连接就越不能出错。我是德索连接器-胡工&#xff0c;日常在工厂里做工业连接器与线束方案。 在自动化产线、户外设备、工业控制项目中&a…...

你的游戏本性能被锁定了吗?解锁秘籍来了!

你的游戏本性能被锁定了吗&#xff1f;解锁秘籍来了&#xff01; 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度&#xff0c;自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 还在为高价游戏本性能发挥不出来而烦恼吗…...

当SPI遇上ESP32:实战配置CPOL和CPHA驱动WS2812B LED灯带(附常见通信失败排查)

当SPI遇上ESP32&#xff1a;实战配置CPOL和CPHA驱动WS2812B LED灯带 在物联网和嵌入式开发领域&#xff0c;ESP32因其强大的无线功能和丰富的外设接口而广受欢迎。而WS2812B LED灯带则因其简单的单线控制方式和绚丽的RGB效果&#xff0c;成为创客和智能家居项目的宠儿。但你是否…...

OPPO Reno6 Pro强解BL锁实战:MTK机型Root全流程(含Magisk安装避坑指南)

OPPO Reno6 Pro深度解锁指南&#xff1a;从BL解锁到Magisk安装的全流程解析 开篇&#xff1a;为什么我们需要解锁BL锁&#xff1f; 每次拿到新手机&#xff0c;总有种被束缚的感觉——预装应用删不掉、系统功能改不了、性能潜力挖不出。对于OPPO Reno6 Pro这样的MTK平台设备&…...

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解 第一部分:引言与基础 1.1 引人注目的标题 从零到一理解工业级 Multi-Agent 系统:字节跳动智能创作平台架构深度拆解 副标题: 揭秘大厂如何通过多智能体协作实现高效、高质量的 AIGC 内容生产 1.2 摘要/引言…...

GRBL移植实战(一):从AVR到ARM的引脚映射与平台适配

1. GRBL移植前的准备工作 第一次接触GRBL移植的朋友可能会觉得无从下手&#xff0c;毕竟要把一个成熟的运动控制系统从AVR平台搬到ARM架构上&#xff0c;听起来就像是要把一辆老爷车的发动机装进新能源车里。但别担心&#xff0c;我去年刚完成了一个从Atmega328p到STM32F407的…...

深入Linux内核:cgroup v2如何用单一层级解决容器资源管理的世纪难题?

Linux内核革命&#xff1a;cgroup v2如何用单一层级重塑容器资源管理 1. 从混乱到秩序&#xff1a;cgroup的演进之路 在云计算和容器化技术蓬勃发展的今天&#xff0c;Linux内核中的控制组&#xff08;cgroup&#xff09;技术已成为资源隔离和管理的基石。然而&#xff0c;cgro…...

保姆级教程:在飞腾FT-2000/4开发板上搞定Ubuntu Server 19.10(附串口调试与NVMe硬盘避坑指南)

飞腾FT-2000/4开发板Ubuntu Server 19.10全流程部署手册 第一次拿到飞腾FT-2000/4开发板时&#xff0c;我和大多数开发者一样&#xff0c;迫不及待想装个Ubuntu系统开始折腾。但很快发现&#xff0c;从镜像选择到驱动配置&#xff0c;每个环节都暗藏玄机。这篇手册不仅会带你走…...

OV5640摄像头模组研究

OV5640是一款由OmniVision(豪威科技)公司生产的高性能500万像素CMOS图像传感器,凭借其卓越的成像质量、灵活的接口配置和丰富的功能特性,已成为嵌入式视觉系统、智能监控设备和机器人技术等领域的热门选择。作为一款1/4英寸光学格式的传感器,OV5640支持多种分辨率(最高25…...

AutoGen Studio一站式部署指南:从Conda环境到Web界面

1. 环境隔离&#xff1a;用Conda打造专属Python沙盒 第一次接触AutoGen Studio时&#xff0c;我最头疼的就是各种Python包版本冲突。比如上周帮同事调试时&#xff0c;他的TensorFlow死活装不上&#xff0c;最后发现是系统自带的Python 3.7不兼容。这种问题用Conda就能完美解决…...