ansible进阶-剧本调试方法

news2024/11/15 5:39:31

目录

1、调试方法

2、实例

2.1    Debug模块

 2.2    tags标签

2.3    忽略错误


1、调试方法

具体方法应用场景
debug标签执⾏剧本的时候输出剧本的执⾏流程,⼀般配合register⼀起使⽤. 输出facts变量自定义变量
tags标签给⼀些模块加上标签,运⾏剧本的时候可以运⾏指定标签的内容,排除指定标签.
忽略错误运⾏剧本的时候忽略⼀些模块的错误,让剧本继续运⾏.

2、实例

2.1    Debug模块
debug
msg相当于是echo命令,配置着register一起用

实例1-调试-nfs服务端部署剧本

剧本文件及执行结果:

[root@ansible ~]# cat debug-nfs-server.yml 
---
- name: 调试nfs服务端
  hosts: all
  tasks:
    - name: 部署nfs服务端软件
      yum:
        name: nfs-utils
        state: installed 

    - name: 创建对应的目录,权限
      file:
        path: /nfsfile
        owner: nfsnobody
        group: nfsnobody
        state: directory
        register: file_jieguo

   
    - name: 修改配置文件
      lineinfile: 
        path: /etc/exports
        line: "/nfsfile 192.168.81.0/24(rw,sync,root_squash)"
        state: present
        backup: yes
    
    - name: 输出这个过程
      debug:
        msg: "{{ file_jieguo }}"


    - name: 启动rpc服务
      systemd:
        name: rpcbind
        enabled: yes
        state: started

    - name: 启动nfs服务
      systemd:
        name: nfs
        enabled: yes
        state: started 
[root@ansible ~]# ansible-playbook debug-nfs-server.yml 

PLAY [调试nfs服务端] *****************************************************************************************************************************************

TASK [Gathering Facts] **********************************************************************************************************************************
ok: [192.168.81.134]
ok: [192.168.81.136]
ok: [192.168.81.133]
ok: [192.168.81.135]
ok: [192.168.81.132]

TASK [部署nfs服务端软件] ***************************************************************************************************************************************
ok: [192.168.81.132]
ok: [192.168.81.136]
ok: [192.168.81.133]
ok: [192.168.81.134]
ok: [192.168.81.135]

TASK [创建对应的目录,权限] ***************************************************************************************************************************************
changed: [192.168.81.132]
changed: [192.168.81.135]
changed: [192.168.81.136]
changed: [192.168.81.133]
changed: [192.168.81.134]

TASK [修改配置文件] *******************************************************************************************************************************************
changed: [192.168.81.132]
changed: [192.168.81.135]
changed: [192.168.81.136]
changed: [192.168.81.134]
changed: [192.168.81.133]

TASK [输出这个过程] *******************************************************************************************************************************************
ok: [192.168.81.136] => {
    "msg": {
        "changed": true, 
        "diff": {
            "after": {
                "group": 65534, 
                "mode": "0777", 
                "owner": 65534, 
                "path": "/nfsfile", 
                "state": "directory"
            }, 
            "before": {
                "group": 0, 
                "mode": "0755", 
                "owner": 0, 
                "path": "/nfsfile", 
                "state": "absent"
            }
        }, 
        "failed": false, 
        "gid": 65534, 
        "group": "nfsnobody", 
        "mode": "0777", 
        "owner": "nfsnobody", 
        "path": "/nfsfile", 
        "secontext": "unconfined_u:object_r:default_t:s0", 
        "size": 6, 
        "state": "directory", 
        "uid": 65534
    }
}
ok: [192.168.81.132] => {
    "msg": {
        "changed": true, 
        "diff": {
            "after": {
                "group": 65534, 
                "mode": "0777", 
                "owner": 65534, 
                "path": "/nfsfile", 
                "state": "directory"
            }, 
            "before": {
                "group": 0, 
                "mode": "0755", 
                "owner": 0, 
                "path": "/nfsfile", 
                "state": "absent"
            }
        }, 
        "failed": false, 
        "gid": 65534, 
        "group": "nfsnobody", 
        "mode": "0777", 
        "owner": "nfsnobody", 
        "path": "/nfsfile", 
        "secontext": "unconfined_u:object_r:default_t:s0", 
        "size": 6, 
        "state": "directory", 
        "uid": 65534
    }
}
ok: [192.168.81.134] => {
    "msg": {
        "changed": true, 
        "diff": {
            "after": {
                "group": 65534, 
                "mode": "0777", 
                "owner": 65534, 
                "path": "/nfsfile", 
                "state": "directory"
            }, 
            "before": {
                "group": 0, 
                "mode": "0755", 
                "owner": 0, 
                "path": "/nfsfile", 
                "state": "absent"
            }
        }, 
        "failed": false, 
        "gid": 65534, 
        "group": "nfsnobody", 
        "mode": "0777", 
        "owner": "nfsnobody", 
        "path": "/nfsfile", 
        "secontext": "unconfined_u:object_r:default_t:s0", 
        "size": 6, 
        "state": "directory", 
        "uid": 65534
    }
}
ok: [192.168.81.133] => {
    "msg": {
        "changed": true, 
        "diff": {
            "after": {
                "group": 65534, 
                "mode": "0777", 
                "owner": 65534, 
                "path": "/nfsfile", 
                "state": "directory"
            }, 
            "before": {
                "group": 0, 
                "mode": "0755", 
                "owner": 0, 
                "path": "/nfsfile", 
                "state": "absent"
            }
        }, 
        "failed": false, 
        "gid": 65534, 
        "group": "nfsnobody", 
        "mode": "0777", 
        "owner": "nfsnobody", 
        "path": "/nfsfile", 
        "secontext": "unconfined_u:object_r:default_t:s0", 
        "size": 6, 
        "state": "directory", 
        "uid": 65534
    }
}
ok: [192.168.81.135] => {
    "msg": {
        "changed": true, 
        "diff": {
            "after": {
                "group": 65534, 
                "mode": "0777", 
                "owner": 65534, 
                "path": "/nfsfile", 
                "state": "directory"
            }, 
            "before": {
                "group": 0, 
                "mode": "0755", 
                "owner": 0, 
                "path": "/nfsfile", 
                "state": "absent"
            }
        }, 
        "failed": false, 
        "gid": 65534, 
        "group": "nfsnobody", 
        "mode": "0777", 
        "owner": "nfsnobody", 
        "path": "/nfsfile", 
        "secontext": "unconfined_u:object_r:default_t:s0", 
        "size": 6, 
        "state": "directory", 
        "uid": 65534
    }
}

TASK [启动rpc服务] ******************************************************************************************************************************************
changed: [192.168.81.134]
changed: [192.168.81.133]
changed: [192.168.81.132]
changed: [192.168.81.135]
changed: [192.168.81.136]

TASK [启动nfs服务] ******************************************************************************************************************************************
changed: [192.168.81.136]
changed: [192.168.81.133]
changed: [192.168.81.134]
changed: [192.168.81.132]
changed: [192.168.81.135]

PLAY RECAP **********************************************************************************************************************************************
192.168.81.132             : ok=7    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.81.133             : ok=7    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.81.134             : ok=7    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.81.135             : ok=7    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.81.136             : ok=7    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible ~]# 

 2.2    tags标签

Ansible中的tags标签用于为任务指定标记,并在运行时根据指定的标记只运行部分任务,从而避免对整个剧本进行执行。在编写包含多个任务的剧本时,有时候只需要在执行时运行其中一任务。这时,使用tag标签是非常有用的,它可以为每个任务指定一个标签,这样在执行时只需要运行指定标签的任务即可。

也可以这样理解

一个剧本里面可能包涵了多个任务,但是又不知道剧本中任务是不是都能执行,不确定,这个时候就可以用标签标记任务,然后运行剧本时指定标签运行不确定能不能执行的任务

执行剧本时,使用--tags选项指定要运行的标签。

运行指定的标签

ansible-play --tags 自定义的标签名 剧本文件名

运行剧本的时候排除指定的标签

ansible-play --skip-tags 要排除的标签名 剧本文件名

实例

2.3    忽略错误

当运行剧本时,剧本是按照任务的编写顺序执行,当某个任务运行出现错误时,则则这个任务下面的任务出现错误时,

用于运行剧本的时候,强制让某个任务(模块)运行即使出现错误,也不会中断我们整个剧本的执行。

实例

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

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

相关文章

基于非线性控制策略的电力电子电路——DC-DC电路的3种滑模控制器【MATLAB/simulink】

第一种,滞环滑模控制器Buck电路 在滑模控制系统中,采用滞环技术,直接将切换函数转换成开关控制信号,滞环技术被看做一种降低系统结构的切换频率的调制方法,业界也把基于滞环滑模技术实现的滑模控制称为直接滑模控制技…

【ESP32 手机配网教程】

【ESP32 手机配网教程】 1. 前言2. 先决条件2.1 环境配置2.2 所需零件3.3 硬件连接步骤 3. Web热点手动配网3.1. 准备工作3.2. 编译上传程序3.3. 进行手动配网 4. BLE无线配网4.1. 准备工作**4.2. 编译上传程序4.3. 使用手机APP进行无线配网 5. 总结 1. 前言 欢迎使用ESP32进行…

【C++】list的介绍及使用说明

目录 00.引言 01.list的介绍 模版类 独立节点存储 list的使用 1.构造函数 2.迭代器的使用 分类 运用 3.容量管理 empty(): size(): 4.元素访问 5.增删查改 00.引言 我们学习数据结构时,学过两个基本的数据结构:顺序表和链表。顺…

基于simulink的模拟锁相环和数字锁相环建模与对比仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 模拟锁相环(PLL)的基本原理 4.2 数字锁相环(DPLL)的基本原理 5.完整工程文件 1.课题概述 模拟锁相环和数字锁相环建模的simulink建模,对…

深度剖析哈希

目录 一. 哈希概念 1.1 哈希概念 1.2 哈希冲突 1.3 哈希函数 二. 闭散列 2.1 线性探测法 2.2 引进状态 2.3 闭散列的查找、插入、删除操作 2.4 闭散列插入时的扩容 2.4 仿函数 2.5 整体代码 三. 开散列 ​编辑 2.1 闭散列节点定义 2…

HBuilder真机调试检测不到荣耀Magic UI系列(包括手机和电脑)解决办法

HBuilder真机调试检测不到荣耀Magic UI系列(包括手机和电脑)解决办法解决方法: 1.在开发人员选项中开启USB调试 如何进入开发者选项? 设置->关于->版本号,点击版本号直至出现您已处于开发者模式 2.选择USB配置…

Swin Transformer 浅析

Swin Transformer 浅析 文章目录 Swin Transformer 浅析引言Swin Transformer 的网络结构W-MSA 窗口多头注意力机制SW-MSA 滑动窗口多头注意力机制Patch Merging 图块合并 引言 因为ViT无法实现CNN中的层次化构建以及局部信息,由此微软团队提出了Swin Transformer来…

【论文阅读】YOLO-World | 开集目标检测

Date:2024.02.22,Tencent AI Lab,华中科技大学Paper:https://arxiv.org/pdf/2401.17270.pdfGithub:https://github.com/AILab-CVC/YOLO-World 论文解决的问题: 通过视觉语言建模和大规模数据集上的预训练来…

【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入: INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…

展览展会媒体媒体邀约执行应该怎么做?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 展览展会邀请媒体跟其他活动邀请媒体流程大致相同,包括 制定媒体邀约计划,准备新闻稿,发送邀请函,确认媒体参会,现场媒体接待及…

页缓存(PageCache)和预读机制(readahead )

页缓存(PageCache)和预读机制(readahead ) 页缓存(PageCache)是操作系统(OS)对文件的缓存,用于加速对文件的读写。 page 是内存管理分配的基本单位, Page Cache 由多个 page 构成&…

【观察】容器化部署“再简化”,云原生体验“再升级”

自2013年云原生概念被提出以来,云原生技术和架构在过去十多年得到了迅速的发展,并对数字基础设施、应用架构和应用构建模式带来了深刻的变革。根据IDC预测,到2024年,新增的生产级云原生应用在新应用的占比将从2020年的10%增加到60…

YoloV9改进策略:下采样改进|自研下采样模块(独家改进)|疯狂涨点|附结构图

摘要 本文介绍我自研的下采样模块。本次改进的下采样模块是一种通用的改进方法,你可以用分类任务的主干网络中,也可以用在分割和超分的任务中。已经有粉丝用来改进ConvNext模型,取得了非常好的效果,配合一些其他的改进&#xff0…

MTK MFNR 学习笔记

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、MFNR 简介二、MFNR 开关与决策三、MFNR 相关的adb 命令四、MFNR log 分析五 参考文献 一、MFNR 简介 MFNR : Multiple Frame Noise ReductionMFLL …

lv_micropython for ESP32/S2/S3/C3

由于官方的lv_micropython编译ESP32S3/S2/C3会报错,因为这些芯片的esp-idf底层重写了接口,参照网友提供的方法修改lv_bindings/driver/esp32里的文件,解决编译错误。 问题列举:Issues lvgl/lv_binding_micropython GitHub 一…

Maven的dependencyManagement与dependencies区别

先说结论:Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。 在maven多模块项目的pom文件中,有的小伙伴会发现最外层的pom文件和里面的pom文件有个地方不一样 如下图 父pom 子pom 一般来说是在maven的最外父工程pom文件里&…

4.18学习总结

多线程补充 等待唤醒机制 现在有两条线程在运行,其中一条线程可以创造一个特殊的数据供另一条线程使用,但这个数据的创建也有要求:在同一时间只允许有一个这样的特殊数据,那么我们要怎样去完成呢?如果用普通的多线程…

云原生Kubernetes: K8S 1.29版本 部署Kuboard

目录 一、实验 1.环境 2.K8S 1.29版本 部署Kuboard (第一种方式) 3.K8S 1.29版本 部署Kuboard (第二种方式) 4.K8S 1.29版本 使用Kuboard 二、问题 1.docker如何在node节点间移动镜像 一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注ma…

Java学习-Module的概念和使用、IDEA的常用设置及常用快捷键

Module的概念和使用 【1】在Eclipse中我们有Workspace (工作空间)和Project (工程)的概念,在IDEA中只有Project (工程)和Module (模块)的概念。 这里的对应关系为: IDEA官网说明: An Eclipse workspace is similar to a project in IntelliJ IDEA An Eclipse pr…

二刷大数据(三)- Flink1.17

目录 Flink概念与SparkStreaming区别分层API 工作流程部署模式**Local Mode****Standalone Mode****YARN Mode****Kubernetes Mode****Application Mode** 运行架构stand alone 核心概念算子链任务槽 窗口窗口**窗口的目的与作用****时间窗口(Time Windows&#xff…