ansible playbook时:条件ec2标签已设置

时间:2015-12-15 02:09:28

标签: ansible ansible-playbook

民间,   我想运行一个简单的命令,假设设置一个主机名,如果在实例上设置了ec2标签。请考虑以下事项:

- name: Gather facts
  action: ec2_facts

- name: Get instance ec2 facts
  action: ec2_facts
  register: ec2_facts

- name: Get resource tags from ec2 facts
  sudo: false
  local_action: ec2_tag resource={{ec2_facts.ansible_facts.ansible_ec2_instance_id}} region={{ec2_facts.ansible_facts.ansible_ec2_placement_region}} state=list
  register: ec2_tags

- debug: msg="{{ ec2_tags.tags }}"

输出:

TASK: [foo | debug msg="{{ ec2_tags.tags }}"] *****************************
ok: [10.1.15.119] => {
"msg": "{'role': 'foo', 'Name': 'YAY', 'service': 'web', 'env': 'dev'}"
}

所以现在,我想做以下事情:

如果ec2_tags.tags.Name存在,请设置主机名。 我如何在剧本中使用?这似乎失败了:

- name: friendly hostname
  hostname: name={{ec2_tags.tags.Name}}
  when: {{ec2_tags.tags.Name}}

谢谢!

1 个答案:

答案 0 :(得分:3)

when: ec2_tags.tags.Name is defined应该这样做