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

news2025/1/15 6:58:49

更多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 file
  hosts: k8s_node
  become: yes 
  tasks:
    - name: 创建一个目录
      file:
        path: /data
        state: directory
    - name: 创建一个文件
      file:
        path: /data/file.txt
        state: 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: 临时关闭 selinux
  hosts: target_hosts
  shell: "setenforce 0"
  failed_when: false
- name: 永久关闭 selinux
  hosts: target_hosts
  lineinfile:
    dest: /etc/selinux/config
    regexp: "^SELINUX="
    line: "SELINUX=disabled"  #修改为disabled后即可关闭selinux
文件查找

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

- name: find file in dir
  hosts: kube_node
  tasks:
    - name: find txt file
      find:
        paths: /opt
        file_type: file
        patterns: '*.txt'
      register: found_files

    - name: 打印结果
      debug:
        msg: "{{item.path}}"
      with_list: "{{found_files.files}}"

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

  • 判断文件是否存在
 - name: 检查目录是否存在
  hosts: kube_node
  become: 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_hosts
  tasks:
    - name: 使用模板生成配置文件
      template:
        src: /path/to/template.j2
        dest: /path/to/configfile.conf

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

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

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

相关文章

OSPF综合

实验拓扑 实验需求: 1 R4为ISP,其上只能配置IP地址; R4与其他所有直连设备间均使用公有IP 2 R3-R5/6/7为MGRE环境,R3为中心站点 ; 3 整个OSPF环境IP基于172.16.0.0/16划分; 4 所有设备均可访问R4的环回; 5 减少LSA的更新量,加快收…

数据分析实战 | 逻辑回归——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接:https://download.csdn.net/d…

Windows下安装Anaconda5.3.1+Python3.8+TensorFlow2.13.0-CPU版本总结

Python3.8安装可以参考博文https://janus.blog.csdn.net/article/details/55274849 进行安装即可。 【1】Anaconda 清华的开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载,这里选择的是5.3.1版本。 然后正常安装就可以&am…

悟空crm二次开发 增加客户保护功能 (很久没有消息,但是有觉得有机会的客户)就进入了保护转态

需求:客户信息录入不限数量,但是录入的信息1个月内只有自己和部门领导能看到,如果1个月内未成交或者未转移至自己的客保 则掉入公海所有人可见,这里所说的客保就是现在系统自带的客保 1、需求思维导图 2、新增保护按钮 3、点击该…

openstack部署后实战

分布式部署规则 1、平常都是两台Node安装OpenStack平台,那如果想分布式部署该怎么做?比如:部署两台Nova服务,一台单独的Neutron服务,一台单独的存储节点等。 整体思想: 如果想要部署两台Nova服务&#xf…

matplotlib从起点出发(11)_Tutorial_11_TightLayout

如何使用紧凑的而已来干净利落地将绘图放入图形中。 tight_layout会自动调整子图参数,使子图适合图区域。这是一项实验性功能,在某些情况下可能不起作用。它仅检查刻度标签、轴标签和标题的范围。 tight_layout的替代方法是constrained_layout。 1 简…

echart宽度100px原因(解决el-tabs里的echarts图表宽度不自适应,只有100px问题)

目录 问题描述产生原因处理方法1.使用echart 的API —— resize()2.使用 v-if 总结 问题描述 项目中在el-tabs下面使用了图表,发现图表的宽度始终只有100px 产生原因 首先echart初始化的组件宽度设置了width: 100%,那么本来这个时候,echar…

Python每日练习:20个常用代码,初学者也可以自己实现!

文章目录 前言20个代码1.重复元素判定2.字符元素组成判定3.内存占用4.字节占用5.打印 N 次字符串6.大写第一个字母7.分块8.压缩9.解包10.链式对比11.逗号连接12.元音统计13.首字母小写14.展开列表15.列表的差16.通过函数取差17.链式函数调用18.检查重复项19.合并两个字典20.将两…

稳定扩散AI 纹理生成器

推荐基于稳定扩散(stable diffusion) AI 模型开发的自动纹理工具: DreamTexture.js自动纹理化开发包 - NSDT 什么是稳定扩散? 从技术上讲,Stable Diffusion 是一种用于机器学习的潜在扩散模型 (LDM)。这种类型的专用深…

直播间自动发言机器人的运行分享,与开发需要到的技术分析

先来看实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着人工智能技术的不断发展,自动发言机器人已经成为了当今社交媒体领域的重要组成部分。它们能够自动化地发布内容、回复用户评论和消息,大大提高…

解析html生成Word文档

内容:读取html文件中的文本内容,然后生成Word文档导出。 事例场景:需求开发完成之后需要写文档(代码修改清单),文档内容就是这次需求修改/新增的所有代码,需要列出修改的文件路径以及代码片段&…

JavaWeb Day09 Mybatis-基础操作01-增删改查

目录 环境准备 ①Emp.sql ②Emp.java 一、删除 ①Mapper层 ②测试类 ③预编译SQL(查看mybatis日志) 1.性能 2.安全 ④总结 二、新增 ①Mapper层 ②测试类 ③结果 ④新增(主键返回) 1.Mapper层 2.测试类 ⑤总结​…

leetCode 493 翻转对 归并分治 + 图解

493. 翻转对 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums &#xff0c;如果 i < j 且 nums[i] > 2*nums[j] 我们就将 (i, j) 称作一个重要翻转对。你需要返回给定数组中的重要翻转对的数量。 求"小和"问题是&#xff0c;当我 j 来到一个位置的时…

【研究】Splunk 字段是否被加工过

1: 背景: 最近用户有个疑问,就是有些字段的输出有点问题,不确定是否被加工过。 2: 查找问题: index=abc sourcetype=def123 发现字段: city_shanghai 的输出可能有点问题。 3: 排查问题: 先去这个splunk search head cluster 的页面: server 的查找如下: 登入so1 s…

“Git实践指南:深入探索开发测试上线、分支管理与标签“

文章目录 引言一、Git的分支的使用1.分支2.标签3.分支与标签的关系4. 分支在实际中的作用5. 四个环境以及各自的功能特点6. 分支策略分支应用场景 二、Git的标签3.1 标签的基本使用3.3 标签的共享与推送 总结 引言 在现代软件开发中&#xff0c;版本控制是一个关键的环节&…

kubernetes prometheus监控

目录 一、部署prometheus 二、 部署nginx监控实例 三、部署prometheus-adapter 一、部署prometheus 清理镜像方便后面一次性上传 docker rmi docker images | grep -v REPOSITORY | awk {print $1":"$2} 删除 docker load -i kube-prometheus-stack-0.58.0.tar…

计蒜客详解合集(3)期

目录 T1236——分苹果 T1113——整理药名 T1153——整数奇偶排列 T1249——漂亮的字符串 T1168——统计素数个数 T1160——甲流病人筛选 T1236——分苹果 分享一道特别简单的题。 蒜头君要把一堆苹果分给 个小朋友&#xff0c;要使每个人都能拿到苹果&#xff0c;而目每…

Python学习笔记--自定义类型的枚举

三、自定义类型的枚举 但有些时候我们需要控制枚举的类型&#xff0c;那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子&#xff1a; #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, uniqueEnum(Month, (Jan, Feb, Mar, Apr, M…

相机内外参实践之点云投影矢量图

目录 概述 涉及到的坐标变换 深度值可视化 3D点云的2D投影实现 实现效果 参考文献 概述 Camer的内外参在多模态融合中主要涉及到坐标系变换&#xff0c;即像素坐标、相机坐标以及其他坐标系。这篇就针对点云到图像的投影与反投影做代码实践&#xff0c;来构建一张具有深度…

【2023CANN训练营第二季】——Ascend C算子开发进阶—Ascend C Tiling计算

了解Tiling基本概念 在这一小节中接触到了一个新的概念&#xff0c;叫Tiling计算&#xff0c;指的是在Ascend C 算子开发过程中&#xff0c;矢量的算子流程分为3个基本任务&#xff1a;CopyIn&#xff0c;Compute&#xff0c;CopyOut。CopyIn任务负责将Global Memory上的输入T…