You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否基于自定义类别运行Ansible Molecule的部分场景?

Molecule场景级类别筛选实现方案

可以实现类似Ansible tags的场景筛选功能,Molecule本身没有内置--category参数,但通过给场景添加自定义标签+命令行筛选/脚本封装,就能满足你的需求,具体操作如下:

1. 给场景添加类别标签

在每个场景目录下的molecule.yml中,给scenario节点添加自定义tags字段,用来标记场景所属类别:

  • scenario-1的molecule.yml:
scenario:
  name: scenario-1
  tags:
    - long-running
  • scenario-3的molecule.yml:
scenario:
  name: scenario-3
  tags:
    - push
    - os-a

其他场景按同样方式配置对应的标签即可。

2. 命令行筛选场景

直接用jq工具筛选(无需脚本)

利用jq解析场景配置文件,提取符合标签的场景名称后传给Molecule:

筛选push类别场景

molecule test --scenario-name $(find molecule -name "molecule.yml" -exec jq -r '.scenario.tags[] as $tag | select($tag == "push") | .scenario.name' {} \; | sort -u)

该命令会自动匹配scenario-3和scenario-5并运行。

筛选os-a类别场景

molecule test --scenario-name $(find molecule -name "molecule.yml" -exec jq -r '.scenario.tags[] as $tag | select($tag == "os-a") | .scenario.name' {} \; | sort -u)

自动匹配scenario-2和scenario-3并运行。

筛选多个类别(或逻辑)

如果要同时匹配long-running和weekend类别(OR逻辑):

molecule test --scenario-name $(find molecule -name "molecule.yml" -exec jq -r '(.scenario.tags[] | select(. == "long-running" or . == "weekend")) as $tag | .scenario.name' {} \; | sort -u)

自动匹配scenario-1和scenario-4并运行。

封装脚本简化命令

为了避免每次输入长命令,可封装一个shell脚本molecule-category.sh:

#!/bin/bash
CATEGORIES=$1
IFS=':' read -ra CAT_ARRAY <<< "$CATEGORIES"

JQ_CONDITION=""
for i in "${!CAT_ARRAY[@]}"; do
  if [ $i -eq 0 ]; then
    JQ_CONDITION=". == \"${CAT_ARRAY[$i]}\""
  else
    JQ_CONDITION="$JQ_CONDITION or . == \"${CAT_ARRAY[$i]}\""
  fi
done

SCENARIOS=$(find molecule -name "molecule.yml" -exec jq -r '(.scenario.tags[] | select('"$JQ_CONDITION"')) as $tag | .scenario.name' {} \; | sort -u)
molecule test --scenario-name "$SCENARIOS"

给脚本添加执行权限:

chmod +x molecule-category.sh

之后就能用你期望的简洁命令调用:

  • 运行push类别:./molecule-category.sh push
  • 运行os-a类别:./molecule-category.sh os-a
  • 运行long-running或weekend:./molecule-category.sh long-running:weekend

3. 替代方案:环境变量控制

如果不想用外部工具,也可以在场景molecule.yml中通过env变量标记类别,再在playbook中加条件判断,但这种方式只能在provision阶段控制,不如直接筛选场景彻底,一般不推荐。

内容的提问来源于stack exchange,提问作者cdscap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 20:57:54