gpt4 book ai didi

unit-testing - 如何为 Ansible 功能创建单元测试用例?

转载 作者:行者123 更新时间:2023-12-04 13:36:53 27 4
gpt4 key购买 nike

我想为我的 ansible playbook 添加单元测试。我对此很陌生,尝试了一些东西,但不太了解。我该如何开始并正确编写测试用例?

下面是一个简单的例子:

  yum: 
name: httpd
state: present

最佳答案

Ansible 不是一种编程语言,而是一种工具,可以检查您描述的状态是否与您运行的节点的状态保持一致。所以你不能对你的任务进行单元测试。他们已经在某种程度上进行了自我测试。运行这些任务的底层 ansible 二进制文件在其开发过程中使用了单元测试。

您上面的示例要求 ansible 测试是否 httpd存在于目标机器上并将返回 ok如果是这种情况,changed如果它必须安装软件包才能满足要求,或者 error如果出现问题。

同时,并不是因为你不能对你的 ansible 代码进行单元测试,所以根本不可能进行测试。您可以使用 yammlint 执行基本的静态检查和 ansible-lint .要更进一步,您必须针对测试目标节点运行您的剧本/角色/集合。

有了 CI,这变得非常容易,它可以让您从头开始生成虚拟机或 docker 容器并运行您的脚本来测试没有触发任何错误,--check选项成功通过,遵守幂等性(即,使用相同的参数在第二次运行时不会发生任何变化),并且一切都按预期工作(例如,在上述情况下,端口 80 已打开并且您将获得默认的 Apache 网页)。

您可以自己编写此类测试(例如,在测试虚拟机中针对本地主机运行)。此 Mac Appstore CLI role by Geerlinguy正在通过 travis-ci 使用此类测试作为示例。

您还可以使用现有工具帮助您以更结构化的方式编写这些测试,例如 molecule .如果您有兴趣,这里有一些使用它的示例角色:

  • Redis role by Geerlinguy
  • nexus3-oss role by ThoTeam [1]

  • [1] 透明注意事项:我是此示例存储库的维护者

    关于unit-testing - 如何为 Ansible 功能创建单元测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61243490/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com