如何在Ansible中使用Jenkins文件中的嵌套变量?

如何在Ansible中使用Jenkins文件中的嵌套变量?,ansible,jenkins-pipeline,Ansible,Jenkins Pipeline,在我的Jenkins文件中,我将环境名称指定为环境变量: environment { WORK_ENV = 'DEV' } postfix: DEV: temp TEST: test 在我的Ansible脚本中,我有一个变量: environment { WORK_ENV = 'DEV' } postfix: DEV: temp TEST: test 因此,根据WORK_ENV变量的值,后缀应该改变 我需要在Ansible中有类似的操作: {{ postf

在我的Jenkins文件中,我将环境名称指定为环境变量:

environment {
   WORK_ENV = 'DEV'
} 
postfix:
  DEV: temp
  TEST: test
在我的Ansible脚本中,我有一个变量:

environment {
   WORK_ENV = 'DEV'
} 
postfix:
  DEV: temp
  TEST: test
因此,根据WORK_ENV变量的值,后缀应该改变

我需要在Ansible中有类似的操作:

{{ postfix.{{ WORK_ENV }} }}
我知道这一行行不通,所以我正在寻找解决办法——有什么想法吗

编辑:

我试过查找:

{{ lookup('vars', 'postfix_' + work_env) }}
我的VAR是这样的(我更愿意使用前面的方法):

这是一种工作,但输出是错误的


如果您的var在jenkins env中确实可用,并且您正在从那里运行剧本,您可以尝试以下方法


如果这在您的场景中不起作用,您可以按照@Matt Schuchard在上述评论中的建议,将一个额外的var传递给您的剧本。

在我的案例中,它在我使用:

- name: Run SQL scripts
  win_shell: |
    cd "{{ package_unzip_dest }}"
    Write-Output "Running script {{ item }}.sql"
    sqlcmd -S {{ server }} -U {{ db_user }} -P {{ db_password }} -i {{ item }}.sql -d {{ data_base }}_{{ lookup('vars', 'postfix_' + work_env) | to_nice_yaml | regex_replace('- ', '') }}
  with_items: "{{ scripts }}"
  vars:
    postfix_DEV: temp
    postfix_UAT1: TEST

如果不使用to_nice_yaml,我的unicode输出出现问题。

您可以将其作为变量传递给
ansible playbook
执行。此处的“env”部分是什么?答案通过指向env查找文档的链接编辑。