ansible - 使用 Ansible Molecule 测试剧本失败
问题描述
我正在创建一个sudo角色,并想用 Molecule 测试如果规则不正确,该角色会失败。
我们如何定义我们期望剧本在 Molecule 上失败?
例如,如果我有以下配置:
sudo__entries:
- name: super_alice
content: "alice ALL NOPASSWD"
该角色将失败,因为visudo
不会验证文件。
这就是我要测试的行为。
解决方案
您可以converge.yml
使用与此单元测试范例类似的方法修改以使用救援块测试故障场景:
try {
foo();
Assert.fail();
} catch(FooException e) {
// Caught expected exception from foo()
}
角色的示例失败场景sudo
将具有converge.yml
如下所示:
---
- name: Does not converge
hosts: all
tasks:
- block:
- name: "Include sudo"
include_role:
name: "sudo"
register: expected_failure
- name: "Check execution halted"
fail:
msg: "Execution should stop before this task"
register: should_not_run
rescue:
- assert:
that:
- expected_failure is defined
- should_not_run is not defined
您还可以用 a 来补充它,verify.yml
以断言故障场景没有使主机处于损坏状态。
推荐阅读
- flutter - 方法如何返回 2 个我稍后将在列中使用的小部件
- javascript - svg d3js .drag(...).origin 不是函数
- batch-file - 将参数作为文件的模式传递
- mysql - MySqlException:对于带有游标的存储过程,子查询返回多于 1 行
- json - Angular 发布请求失败,错误为 500
- vba - VBA 填充名称
- html - 如何使弹性项目的高度随内容扩展并阻止它溢出?
- wordpress - 如何将打开的图形元标记添加到 WordPress wp-login 页面?
- node.js - 具有 ASG 和 ELB (bitbucket) 的 AWS CD/CI 管道
- java - 来自 Keycloak 的 JWT 访问令牌的 Java 离线验证