问题标签 [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.
ansible - ansible ...分子.yml - 如何引用在同一文件中定义的环境变量?
我试图重组分子文件以使用通用剧本来减少代码重复。
我可以让它与相对路径一起工作,但使用相对于 env var 引用其他剧本ANSIBLE_ROLES_PATH
会更直观。
下面注释掉的版本不起作用,但第三个变体很好。
有没有办法做到这一点?
docker - 为什么 Molecule 无法启动 docker 容器
我正在使用 Molecule 来测试我的 ansible 角色。在重新启动我的服务器之前工作正常。然而,之后,当我跑molecule create
它正在跳过创建过程:跳过,已创建实例。但是,什么都没有运行:
跑步时molecule converge
。我收到此错误:
关于如何解决这个问题的任何想法?
ansible - 使用 Ansible Molecule 测试剧本失败
我正在创建一个sudo角色,并想用 Molecule 测试如果规则不正确,该角色会失败。
我们如何定义我们期望剧本在 Molecule 上失败?
例如,如果我有以下配置:
该角色将失败,因为visudo
不会验证文件。
这就是我要测试的行为。
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
文件如下所示:
molecule - 重新使用现有的 ansible group_vars 和分子
我正在使用 Molecule 为我所有现有的 Ansible 角色添加测试。我现有的 Ansible 剧本使用如下变量级别:
在为我现有的角色设置 Molecule 时,我至少需要访问“全局变量”(我列表中的第一个),我设法通过添加链接来实现这一点,如下所示:
到目前为止一切顺利,对。但是,有几个角色需要设置不属于“全局”组变量的变量;即库存特定的。我发现:
- 这些链接只允许建立一个链接,因此链接到多个 group_vars 似乎不是一种选择。
- inventory.links.group_vars 和inventory.group_vars 是互斥的。
我的问题:如何重新使用现有的“全局变量”,但也可以 a) 使用现有的特定于库存的 group_vars,或者 b) 定义特定于库存的 group_vars?
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 主机密钥已更改,您已请求严格检查。主机密钥验证失败
python - 传递给我的自定义模块时 var 类型的 Ansible 错误
我正在寻找一个能够列出实际安装的 Linux 系统上的所有包并将它们注册到 var 的 ansible 角色和模块。然后升级所有这些并将第二个列表放在另一个变量中。
我的模块在这里制作两个字典(yum_packages1 和 yum_packages2)的差异,并在我的角色结束时返回它
当我试图将这两个字典传递到我的模块中并开始我的治疗时,我遇到了一个非常奇怪的错误。
致命:[centos7_]:失败!=> {"changed": false, "msg": "argument yum_packages2 是类型,我们无法转换为 dict: 无法转换为 dict"}
Ansible 角色任务
客户 ansible 模块
你知道我为什么会收到这个错误吗?
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?
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]'
ansible - 从准备收敛和验证步骤传递信息
我使用分子来端到端测试与 kubernetes 集群交互的 ansible 角色。
由于启动一个 kubernetes 集群(具有我的测试所需的附加功能)来为每个测试获得一个干净的环境非常耗时(最多 45 分钟),因此我预先配置了一些集群并创建了一个API 告诉我哪些集群可用于测试目的。
在我的分子测试中,我使用具有本地连接的委托驱动程序,因此测试正在我的本地机器或 CI 运行器上运行。
现在我需要触发 api,获取有关将运行测试的集群的信息,并将这些信息注入到每个分子步骤中。
首先,我想在准备步骤中获取连接信息并以某种方式使它们成为全局的(通过将它们定义为事实或 host_var),因此收敛、验证和清理步骤可以访问它们。经过研究并尝试建立概念验证后,我怀疑这是不可能的。每个分子步骤都是对 ansible-playbook 的新调用,因此信息无法传递。
我是否完全错过了分子提供的可能性?关于如何实现我的目标有什么建议吗?