如何在 Ansible 中为每个剧本登录单独的文件

2023-12-13

我希望在 Ansible 中运行的每个 playbook 有单独的日志文件,而不是 log_path 中定义的单个日志文件。

据我所知,没有内置的方法可以做到这一点。所以我正在寻找聪明的“黑客”。

更具体地说,我希望在运行剧本后以 [剧本名称].[日期].log 格式生成日志文件

I found this线程在SO中,但它不能满足我的需求。如果我可以以某种方式动态传递剧本名称,而不仅仅是日期,那么别名将是一个解决方案。如果我只能从主日志文件中复制相关部分,而无需复制之前的所有历史记录,那么查找解决方案就可以了。此外,如果您有许多并行运行的剧本,我不知道这种方法的效果如何。

有什么线索/想法吗?我的想法是创建一个 shell 脚本,该脚本将在剧本中调用,以某种方式从主日志中“提取”相关条目并创建一个单独的条目。但我相信我把它弄得太复杂了。


请务必注释掉log_path选项中ansible.cfg.

创建包装器 shell 脚本:ansible-playbook-wrapper.sh

#!/bin/bash

export ANSIBLE_LOG_PATH=/var/log/ansible/playbook_$(echo $1 | cut -d . -f 1).log
ansible-playbook $@

别名 ansible-playbook 来运行包装器脚本:

alias ansible-playbook="/path/to/ansible-playbook-wrapper.sh"

创建一个日志目录并开放权限,以便所有用户(或者可能所有 ansible 用户)都可以写入它:

sudo mkdir /var/log/ansible
sudo chmod 777 /var/log/ansible

现在当你跑步时ansible-playbook dns_server.yml -u cobra -k您将看到以下内容:

[cobra@ansible ~]$ ls /var/log/ansible
playbook-dns_server.log
playbook-some_other_playbook.log
playbook-even_more_plays.log
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ansible 中为每个剧本登录单独的文件 的相关文章

  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 使用控制台记录器的控制台应用程序不会写入最终消息。轻松重现

    Windows 上使用 LoggerFactory 的 net 6 控制台应用程序 最终消息不会出现在控制台上 loggerFactory Dispose 没有帮助 Ilogger 没有 Dispose 方法 这是一个复制品 大约会出现 2
  • Logback 上下文选择器的实际使用

    Logback 的文档测井分离 http logback qos ch manual loggingSeparation html表明我可以使用上下文选择器 http logback qos ch manual contextSelecto
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • 在 Ansible 中使用模板模块附加文件

    所以我有一个 ansible 剧本 它使用 Jinja2 模板来创建日志文件 每次我运行剧本时 它都会从customers yml中提取客户信息 并将完整的模板输出到 stunnel conf 文件中 该模板工作正常 但我试图找到一种方法来
  • 记录类名、方法名和行号的性能影响

    我正在我的 java 应用程序中实现日志记录 以便我可以调试应用程序投入生产后可能出现的潜在问题 考虑到在这种情况下 人们不会奢侈地使用 IDE 开发工具 以调试模式运行事物或单步执行完整代码 因此在每条消息中记录类名 方法名和行号将非常有
  • 如何让 STDOUT 和 STDERR 都转到终端和日志文件?

    我有一个脚本 将由非技术用户交互式运行 该脚本将状态更新写入 STDOUT 以便用户可以确定脚本运行正常 我希望将Stdout和STDERR重定向到终端 以便用户可以看到脚本正在工作 并查看是否存在问题 我还希望将两个流都重定向到日志文件
  • log4j2 SMTP Appender:如何包含另一个级别的先前消息?

    我正在使用 log4j2 beta9 并且有以下配置 其中一部分
  • Ruby,通过 SSH 和 LOG 逐一运行 linux 命令

    我想用 Ruby 女巫 net ssh 编写代码 在远程 Linux 机器上一一运行命令并记录所有内容 在 Linux 机器上称为命令 stdout 和 stderr 所以我写函数 def rs ssh cmds cmds each do
  • 所有 Ansible playbook 属性

    我刚刚开始使用 Ansible 在阅读了教程 Ansible 团队将其命名为 docs 我想查看可在剧本中使用的所有属性的完整列表 有人能够提供这样的清单吗 我唯一能通过谷歌搜索的是这个老例子 https gist github com m
  • Python记录多个模块记录器在主程序之外不起作用

    我的目标是从多个模块进行日志记录 同时仅在一个位置 主程序中 配置记录器 如图所示这个答案 https stackoverflow com questions 15727420 using python logging in multipl
  • 关闭后如果日志文件为空,则删除日志文件

    我有一个库函数 可以启动通用后台进程并记录它 def LaunchAndLog cmd cmd args cmd split Split arguments into array logfile cmd args 0 log with op
  • 模板化字符串时出现模板错误:意外的字符 u - Ansible

    执行剧本以在远程主机中运行命令并使用 shell 传递输出时 出现以下错误 致命 master1 失败 gt MSG 模板化时出现模板错误 字符串 4 处出现意外的字符 u a 字符串 54aa7fda16833bff8358b6bd115
  • AWS CloudWatchLog 限制

    我正在尝试找到集中式解决方案来将我的应用程序日志记录从数据库 RDS 中移出 我本想使用 CloudWatchLog 但注意到 PutLogEvents 请求有限制 PutLogEvents 请求的最大速率为每秒 5 个请求 每个日志流 即
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela
  • HBase Shell 日志记录

    使用 HBase shell 时 我收到大量日志记录 包括 INFO 和 DEBUG 消息 虽然这对于学习 HBase 内部结构来说很有趣 但它非常冗长并且可能会掩盖输出 我尝试过以多种不同的方式更改日志记录级别 包括所描述的here ht
  • 无法获得与取消存档模块一起使用的“排除”选项

    我有一个 tar gzip 文件 我正在使用 ansible 取消归档模块将其提取到主机列表中 以下是configs tgz的部分内容列表 rw rw r ian ian 1295 2015 09 25 15 27 Makefile rw
  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • Java 自定义记录器:记录标准或/和最佳实践

    我正在开发一个框架 我希望 jar 尽可能轻量且独立 所以我写了一个日志类 import java util Date import java util Properties public class Logger private stat
  • 记录 http.ResponseWriter 内容

    Premise 我发现了类似的问题 但不适用于我的情况 因此请不要将其标记为重复 我在 Go 中有一个 HTTP 服务器 并且创建了一个中间件记录请求 响应时间 我也想记录响应 我用过httputil DumpRequest在一个名为的函数

随机推荐

  • ClassCastException 在 scala 中使用 ArgumentCapture for Double

    我使用时遇到问题ArgumentCapture for a Double在斯卡拉 我正在尝试捕捉一个Double对被嘲笑的特质的论证 当尝试捕获时 相同的语法可以正常工作Int 这是一个测试示例 import org scalatest F
  • 如何使用go模板通过FuncMap解析html文件

    我使用以下代码来解析 html 模板 效果很好 func test w http ResponseWriter req http Request data struct A int B int A 2 B 3 t template New
  • ubuntu 中不支持 Major.minor 版本 52.0

    我在用jdk1 8 0 25 当我使用以下命令检查 Java 版本时 java version 它输出以下内容 java version 1 7 0 65 OpenJDK Runtime Environment IcedTea 2 5 3
  • 如何自动将 MySQL 列转换为小写

    是否有一个属性可以添加到列中 以便将其值转换为小写 而不是通过 PHP 对每个值执行此操作 你也许可以通过trigger在插入或更新时触发 我自己 我宁愿创建一个view具有相关列的小写版本 视图的 SQL 可能类似于 SELECT ID
  • 使用列表理解进行素因数分解

    我想仅使用列表理解方法和 或找到给定数字的所有素因数 Haskell 中的 函数组合运算符 我特别想避免递归解决方案 例如 pfactors 120必须产生 2 2 2 3 5 output I tried pfactors n p p l
  • Bash for 循环设置一个变量、它的值并评估它?

    如何使用 for 循环来定义变量 and它的价值 and能够评价一下吗 我无法弄清楚评估部分 但使用 for 循环来定义变量and它的价值似乎有效 具体来说 for i in 1 4 do export my i var path i to
  • 如何使用 ngx-translateservice 翻译打字稿中的方法

    我尝试用这个问题中的所有这些例子来解决我的任务Angular ngx translate 在打字稿中的用法我不知道如何将 TranslateService 连接到我的方法 瑞典语翻译文件se json 无钥匙 NAME Namn 英文翻译文
  • Android自动备份错误

    我正在尝试实现 android 自动备份 Android 6 0 但它不起作用 我得到同样的错误 10 28 22 58 06 980 600 5578 I PFTBT Initiating full data transport back
  • 超时和会话超时问题

    我遇到超时问题 首先 即使 webconfig 中的时间设置为 120 分钟 服务器上每 20 分钟就会发生一次超时 其次 当超时发生时 它会转到登录页面 这是正确的 但重新登录时有时会转到默认页面 有时会转到之前所在的页面 我希望它每次都
  • 为什么缺少媒体类型 application/json 的 writer

    基本上我有一个安静的服务 帖子 它消耗 application json 并产生 application json 该服务的单个参数是一个带注释的 java 对象 我在用org jboss resteasy client ClientReq
  • Pandas 进行分组和求和,但在超过一定数量时创建新行

    我目前有一个数据集 我尝试根据列对行进行分组并对值为整数的列求和 然而 问题是一旦总和达到一定阈值我想创建一个新行 例如 在下面的数据框中 我尝试根据公司名称对行进行分组并总结权重 但是 我不希望权重超过 100 输入数据框 Company
  • 以 Azure Blob 存储块上传视频

    我正在接收分块的文件内容 正如我所读到的 建议使用 Azure blob 存储的最新 nuget 是Azure Storage Blobs 但我找不到任何示例或方法如何分块上传文件 支持吗 我收到的范围为Range标头 我正在用这个快速开始
  • C# XML - 使用 XML Writer 进行多命名空间声明

    我正在尝试使用 C 中的 System Xml Xmlwriter 创建具有多个命名空间的 XML 文档 但在编译时收到以下错误 在同一起始元素标记中 不能将前缀 从 重新定义为 http www acme com BOF 我的完整代码如下
  • Constexpr 指针值

    我试图声明一个初始化为某个常量整数值的 constexpr 指针 但 clang 挫败了我的所有尝试 尝试1 constexpr int x reinterpret cast
  • 如何在 UILabel 中检测并使超链接/提及/主题标签可点击?

    如何在 UILabel 中检测并使其链接 提及 主题标签可点击 或者 是否有任何我可以利用的开源库 我已经看过 Fancy UILabel 它不处理多行文本 TTAttributedLabel 不处理提及 标签 在当前的 iOS 中 没有办
  • 以编程方式抑制大容量存储设备的自动播放

    我需要抑制大容量存储设备的自动播放 这需要通过在后台运行的服务 守护程序以编程方式实现 我知道这可以通过打开一个窗口并处理窗口发送的 queryCancelAutoPlay 消息的应用程序来完成 这可以在没有 GUI 的情况下完成吗 我有需
  • 如何从 UWP 访问 Net Standard 2.0 类库中的内容

    我们有一个引用 UWP 类库的 UWP 应用 UWP 类库有一个 Common 文件夹 其中包含运行时所需的文件 这些文件被标记为 复制为内容 文件被复制到 UWP bin x64 Debug Appx
  • Knockoutjs:ScrollIntoViewTrigger

    我最近遇到了一个问题 虽然我为我解决了它 但我不确定是否没有更好的解决方案 所以我很感激任何评论 问题 我想创建一个 ScrollIntoView 绑定 由于将元素滚动到视图中需要 DOM 元素 因此我编写了一个自定义绑定 然后我想在我愿意
  • 机械化和 Google App Engine

    有人成功使用过吗机械化使用 Google App Engine 应用程序 是的 尽管您需要更改 mechanize py 文件或执行大多数人所做的操作 即下载已更改且已修复的版本 不确定这是否仍然有效 因为它是 2010 年的 以下是针对谷
  • 如何在 Ansible 中为每个剧本登录单独的文件

    我希望在 Ansible 中运行的每个 playbook 有单独的日志文件 而不是 log path 中定义的单个日志文件 据我所知 没有内置的方法可以做到这一点 所以我正在寻找聪明的 黑客 更具体地说 我希望在运行剧本后以 剧本名称 日期