如何在Ansible中使用Jenkins文件中的嵌套变量?
在我的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
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查找文档的链接编辑。