1

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

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

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

有没有办法做到这一点?

more molecule.yml
 // SNIP 
provisioner:
  name: ansible
  config_options:
    defaults:
      callback_whitelist: "profile_tasks, timer"
  env:
    ANSIBLE_ROLES_PATH: ../../../../../../roles
  playbooks:
#    destroy: "{{ lookup('env', 'ANSIBLE_ROLES_PATH') }}/molecule/destroy.yml"
#    destroy: "{{ANSIBLE_ROLES_PATH}}/molecule/destroy.yml"
    destroy: "../../../../../../roles/molecule/destroy.yml"
scenario:
  name: default
verifier:
  name: testinfra
  lint:
    name: flake8
4

1 回答 1

2

${YOU_ENV_VAR}如果未设置变量,您应该能够在 bash 中使用like 或使用默认值:${YOU_ENV_VAR:-defaultvalue}

more molecule.yml
 // SNIP 
provisioner:
  name: ansible
  config_options:
    defaults:
      callback_whitelist: "profile_tasks, timer"
  env:
    ANSIBLE_ROLES_PATH: ../../../../../../roles
  playbooks:
    destroy: ${MYPLAYBOOKS_PATH:-"${ANSIBLE_ROLES_PATH}/molecule/destroy.yml"}

scenario:
  name: default
verifier:
  name: testinfra
  lint:
    name: flake8

于 2020-10-29T14:13:08.763 回答