在我的Jenkins文件中,我将环境名称指定为环境变量:
environment {
WORK_ENV = 'DEV'
}
在我的Ansible脚本中,我有变量:
postfix:
DEV: temp
TEST: test
因此,现在取决于WORK_ENV变量的值,后缀应该更改。
我需要在Ansible中具有与此操作相同的功能:
{{ postfix.{{ WORK_ENV }} }}
我知道这条线不起作用,所以我正在寻找解决方法-有任何想法吗?
编辑:
我尝试查找:
{{ lookup('vars', 'postfix_' + work_env) }}
我有这样的var(宁愿使用以前的方式):
postfix_DEV: "temp"
postfix_UAT1: "TEST"
这是可行的,但是输出是错误的...
答案 0 :(得分:0)
如果您的var确实在您的jenkins env中可用,并且您正在那里运行剧本,则可以尝试以下操作,它将lookup the value in your env vars
{{ postfix[lookup('env', 'WORK_ENV')] }}
如果这在您的情况下不起作用,您可以按照@Matt Schuchard在上面的评论中的建议,将额外的var传递给您的剧本。
答案 1 :(得分:0)
就我而言,当我使用它时,它可以工作:
- 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输出出现了问题。