Ansible:v2.3中动态查找变量

时间:2018-12-10 23:42:08

标签: variables dynamic ansible lookup ansible-2.x

我有一组变量和一个如下任务。我的目的是根据用户选择的URL动态进行健康检查。

vars:
  current_hostname: "{{ ansible_hostname }}"
  hc_url1: "https://blah1.com/healthcheck"
  hc_url2: "https://blah2.com/healthcheck"

tasks:
- name: Notification Msg For Healthcheck
  shell: "echo 'Performing healthcheck at the URL {{ lookup('vars', component) }} on host {{ current_hostname }}'"

在Ansible 2.3中运行剧本

ansible-playbook ansible_playbook.yml -i inventory -k -v --extra-vars "component=hc_url1"

错误

fatal: [hostname]: FAILED! => {"failed": true, "msg": "lookup plugin (vars) not found"}

我知道这是因为在Ansible v2.5中引入了查找插件“ var”。在Ansible 2.3中有没有办法做到这一点?我想获取{{component}}的值,然后获取{{hc_url1}}

的值

PS-由于组织限制,不能升级到2.5

1 个答案:

答案 0 :(得分:0)

或者,也许您可​​以使用字典来做到这一点。

例如,

vars:
  current_hostname: "{{ ansible_hostname }}"
  urls:
    hc_url1: "https://blah1.com/healthcheck"
    hc_url2: "https://blah2.com/healthcheck"

tasks:
- name: Notification Msg For Healthcheck
  shell: "echo 'Performing healthcheck at the URL {{ urls[component] }} on host {{ current_hostname }}'"

这样,用户提供的component的值将被视为字典中的键。