工具用于生成关于期望状态与当前状态的漂亮输出

73次阅读
没有评论

问题描述

在使用”基础设施即代码”原则时遇到了一些困难。由于使用的技术范围和复杂性非常丰富,如 terraform、terraformer、terragrunt、pscore、bash、Azure CLI、Azure DevOps CLI、AzureAD 模块、msbuild、Java、各种 REST API 调用等,导致他逐渐失去了集中的视角。
因此,他开始编写脚本和代码来计算”期望状态与当前状态”,以便进行验证和概览,以确保一切都处于正确的状态。大多数情况下,这些信息就是他所需要的,他不需要”进入期望状态”,因为有时这实际上意味着需要手动干预(甚至是其他人的干预)。
这些脚本的输出很简单,它们将以下内容写入标准输出:

Name of thing         Desired state      Current state     Result
----------------------------------------------------------------------
THING A               This               That              NOT GOOD
THING B               This               This              GOOD
THING C               This               ?                 Timeout after 5 minutes...
Result: - 2 things needs attention

用户想知道是否有一些工具或标准针对这个特定的用例?
– 用户有一些脚本,可以称之为”差异计算器”,可以输出某个”thing”或”thing的子部分”是否处于期望状态以及当前状态是什么。
– 该工具可以生成漂亮的基于表格的用户界面输出。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

用户可以使用Pester工具来解决这个问题。Pester是一个PowerShell单元测试工具,可以保存Nunit XML结果,这些结果可以在流水线中发布。虽然它不是我所期望的”期望”/”当前”状态,但最终它可以提供一个漂亮的概览,显示所有需要观察状态的”things”。
以下是使用Pester的步骤:
1. 安装Pester。可以使用以下命令在PowerShell中安装Pester模块:

Install-Module -Name Pester -Force
  1. 编写Pester测试脚本。根据用户的需求,编写一个Pester测试脚本,用于检查”thing”或”thing的子部分”是否处于期望状态以及当前状态是什么。脚本可以输出Nunit XML结果。
  2. 运行Pester测试脚本。使用以下命令在PowerShell中运行Pester测试脚本:
Invoke-Pester -OutputFile "path\to\output.xml" -OutputFormat NUnitXml
  1. 分析Pester测试结果。使用适合的工具(如NUnit测试运行器)来分析Pester测试结果,并生成漂亮的表格形式的UI输出。

方案2

另一种解决方案是使用配置管理工具,如Ansible。Ansible可以帮助用户解决这类问题。用户可以使用Ansible的检查模式来查看它将执行的操作。
以下是使用Ansible的步骤:
1. 安装Ansible。可以按照Ansible官方文档中的说明安装Ansible。
2. 编写Ansible playbook。根据用户的需求,编写一个Ansible playbook,用于检查”thing”或”thing的子部分”是否处于期望状态以及当前状态是什么。在playbook中使用适当的模块和任务来执行检查操作。
3. 运行Ansible playbook。使用以下命令运行Ansible playbook,并将其设置为检查模式:

ansible-playbook playbook.yml --check
  1. 分析Ansible检查结果。根据Ansible的输出结果,分析”thing”或”thing的子部分”的期望状态和当前状态,并生成漂亮的表格形式的UI输出。

请注意,Ansible是一种常用的配置管理工具,它可以帮助用户自动化和管理基础设施。它具有广泛的社区支持和丰富的功能集,可以根据用户的需求进行定制和扩展。

以上是两种解决方案,用户可以根据自己的需求选择适合的工具或方法来生成关于期望状态与当前状态的漂亮输出。

正文完