问题标签 [molecule]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1826 浏览

ansible - ansible ...分子.yml - 如何引用在同一文件中定义的环境变量?

我试图重组分子文件以使用通用剧本来减少代码重复。

我可以让它与相对路径一起工作,但使用相对于 env var 引用其他剧本ANSIBLE_ROLES_PATH会更直观。

下面注释掉的版本不起作用,但第三个变体很好。

有没有办法做到这一点?

0 投票
2 回答
1926 浏览

docker - 为什么 Molecule 无法启动 docker 容器

我正在使用 Molecule 来测试我的 ansible 角色。在重新启动我的服务器之前工作正常。然而,之后,当我跑molecule create

它正在跳过创建过程:跳过,已创建实例。但是,什么都没有运行:

跑步时molecule converge。我收到此错误:

关于如何解决这个问题的任何想法?

0 投票
1 回答
708 浏览

ansible - 使用 Ansible Molecule 测试剧本失败

我正在创建一个sudo角色,并想用 Molecule 测试如果规则不正确,该角色会失败。

我们如何定义我们期望剧本在 Molecule 上失败?

例如,如果我有以下配置:

该角色将失败,因为visudo不会验证文件。

这就是我要测试的行为。

0 投票
2 回答
853 浏览

ansible - 为 Molecule 指定 Collection 依赖项

通知 Molecule 从 Ansible Galaxy 下载角色依赖项

但是,似乎没有任何关于如何通知 Molecule 下载 Collections 的文档。https://molecule.readthedocs.io/en/stable/configuration.html#ansible-galaxy没有列出集合选项,我在https://github.com/ansible/molecule上没有看到开放功能请求这个。

在这里询问是否这是 Molecule 已解决的问题,否则我想这将是 Molecule github repo 上的功能请求。我如何通知 Molecule 它需要为 ansible-galaxy 依赖项下载 Collection?

我的requirements.yml文件如下所示:

Ansible 在https://docs.ansible.com/ansible/devel/user_guide/collections_using.html#install-multiple-collections-with-a-requirements-file支持此格式。

0 投票
1 回答
2372 浏览

molecule - 重新使用现有的 ansible group_vars 和分子

我正在使用 Molecule 为我所有现有的 Ansible 角色添加测试。我现有的 Ansible 剧本使用如下变量级别:

在为我现有的角色设置 Molecule 时,我至少需要访问“全局变量”(我列表中的第一个),我设法通过添加链接来实现这一点,如下所示:

到目前为止一切顺利,对。但是,有几个角色需要设置不属于“全局”组变量的变量;即库存特定的。我发现:

  1. 这些链接只允许建立一个链接,因此链接到多个 group_vars 似乎不是一种选择。
  2. inventory.links.group_vars 和inventory.group_vars 是互斥的。

我的问题:如何重新使用现有的“全局变量”,但也可以 a) 使用现有的特定于库存的 group_vars,或者 b) 定义特定于库存的 group_vars?

0 投票
1 回答
899 浏览

ssh - 如何在没有分子登录的情况下通过 SSH 连接到分子实例

我正在使用分子和流浪者来部署 centos7 实例。由于某些原因,我需要使用 ssh 命令访问分子实例,instead of molecule login. 然后 ssh 信息将粘贴到我的一个 VS 代码扩展中。

分子.yml

上面的 IP 让我可以访问 vagrant 之外的 80 端口。

但是分子实例 IP 的 ssh 命令不起作用。

错误

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @
警告:远程主机标识已更改!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ 可能有人在做一些讨厌的事情!有人现在可能正在窃听您(中间​​人攻击)!主机密钥也可能刚刚更改。远程主机发送的 ECDSA 密钥的指纹为 SHA256:wVk4Da5pWWNHLiypvEKAJuwzG/2FLOMgwPkrO4oFBZQ。请联系您的系统管理员。在 /Users/abel/.ssh/known_hosts 添加正确的主机密钥以消除此消息。/Users/abel/.ssh/known_hosts:32 ECDSA 192.168.33.111 的 ECDSA 主机密钥已更改,您已请求严格检查。主机密钥验证失败

0 投票
1 回答
164 浏览

python - 传递给我的自定义模块时 var 类型的 Ansible 错误

我正在寻找一个能够列出实际安装的 Linux 系统上的所有包并将它们注册到 var 的 ansible 角色和模块。然后升级所有这些并将第二个列表放在另一个变量中。

我的模块在这里制作两个字典(yum_packages1 和 yum_packages2)的差异,并在我的角色结束时返回它

当我试图将这两个字典传递到我的模块中并开始我的治疗时,我遇到了一个非常奇怪的错误。

致命:[centos7_]:失败!=> {"changed": false, "msg": "argument yum_packages2 是类型,我们无法转换为 dict: 无法转换为 dict"}

Ansible 角色任务

客户 ansible 模块

你知道我为什么会收到这个错误吗?

0 投票
1 回答
2962 浏览

docker - 用分子覆盖 defaults/main.yml 变量

我有一个问题,我的默认值通常存储在defaults/main.yml运行 ansible 脚本中,但我还没有找到覆盖它们的方法。我正在使用分子进行测试,并且我想要一种将变量传递给我的方法,molecule/default/molecule.yml以便molecule/default/playbook.yml我可以动态设置phpVersion.

  • 这是使用默认值静态设置变量的地方
  • 这是使用变量的地方
  • 所以要运行我的测试,我输入这个命令:

    $ MOLECULE_DISTRO=ubuntu1804-php70 molecule test --destroy=never

    • 这是我设置分子的地方
  • 这是我的测试手册

从你可以看到通过这样的molecule.yml东西playbook.yml来设置 phpVersion 是多么的棒:

并让 playbook.yml 设置一个像这样的变量:

问题是,如何使用分子动态设置 tasks/main.yml 中使用的变量,以便我的测试动态设置 phpVersion?

0 投票
1 回答
647 浏览

openstack - 如何在 Openstack 中使用分子

我在 docker 驱动程序中经常使用分子。在某些情况下,docker 不是测试 ansible 角色的正确工具,所以我想在 openstack 中启动一个 vm。

我创建了一个 ansible 角色,molecule role -r <rolename>并将分子.yml 中的驱动程序更改为“openstack”。这是我当前的molecule.yml的一个例子:

不幸的是,似乎缺少 create.yml 文件,这会启动机器:

如果我创建一个 create.yml 文件,错误消息表明它发现文件为空:

那么,如何让 openstack 驱动程序正常工作以及如何创建和准备虚拟机来运行我的检查呢?

我使用分子 2.22、ansible 2.9.4 和 python 3.7.6。

正如文档中所建议的,我已经安装了分子 openstack 插件:pip3 install 'molecule[openstack]'

0 投票
0 回答
62 浏览

ansible - 从准备收敛和验证步骤传递信息

我使用分子来端到端测试与 kubernetes 集群交互的 ansible 角色。

由于启动一个 kubernetes 集群(具有我的测试所需的附加功能)来为每个测试获得一个干净的环境非常耗时(最多 45 分钟),因此我预先配置了一些集群并创建了一个API 告诉我哪些集群可用于测试目的。

在我的分子测试中,我使用具有本地连接的委托驱动程序,因此测试正在我的本地机器或 CI 运行器上运行。

现在我需要触发 api,获取有关将运行测试的集群的信息,并将这些信息注入到每个分子步骤中。

首先,我想在准备步骤中获取连接信息并以某种方式使它们成为全局的(通过将它们定义为事实或 host_var),因此收敛、验证和清理步骤可以访问它们。经过研究并尝试建立概念验证后,我怀疑这是不可能的。每个分子步骤都是对 ansible-playbook 的新调用,因此信息无法传递。

我是否完全错过了分子提供的可能性?关于如何实现我的目标有什么建议吗?