Ansible-在变量查找中使用字符串
我试图让我的剧本意识到他们的环境;那是生产或舞台 我的playbook首先成功地为其环境提取ec2_标记,并将其设置为变量“env”。在ec2供应任务中,我想在vpc和子网查找中使用'env'变量,因此它会根据其环境获取正确的变量。下面我尝试将'env'变量添加到查找中,但我得到的是一个完整的字符串,而不是从变量文件中提取它 是否需要在Ansible-在变量查找中使用字符串,ansible,ansible-playbook,Ansible,Ansible Playbook,我试图让我的剧本意识到他们的环境;那是生产或舞台 我的playbook首先成功地为其环境提取ec2_标记,并将其设置为变量“env”。在ec2供应任务中,我想在vpc和子网查找中使用'env'变量,因此它会根据其环境获取正确的变量。下面我尝试将'env'变量添加到查找中,但我得到的是一个完整的字符串,而不是从变量文件中提取它 是否需要在{{}中添加一些逻辑检查 - name: Provision instance ec2: key_name: "{{ aws_publ
{{}
中添加一些逻辑检查
- name: Provision instance
ec2:
key_name: "{{ aws_public_key }}"
instance_type: t2.medium
image: "{{ aws_ubuntu_ami }}"
wait: true
vpc_subnet_id: "{{ env + '_subnet_public1' }}"
group_id: "{{ env + '_app_group' }}"
assign_public_ip: yes
instance_tags:
Name: "{{ sys_name }}"
Environment: "{{ env }}"
region: "{{ aws_region }}"
volumes:
- device_name: /dev/sda1
volume_size: 300
delete_on_termination: true
register: ec2
如果要执行变量插值,则需要使用
hostvars[inventory\u hostname]['variable']
本手册将简要介绍这一点,但对于您的用例,您应该能够执行以下操作:
- name: Provision instance
ec2:
key_name: "{{ aws_public_key }}"
instance_type: t2.medium
image: "{{ aws_ubuntu_ami }}"
wait: true
vpc_subnet_id: hostvars[inventory_hostname][env + '_subnet_public1']
group_id: hostvars[inventory_hostname][env + '_app_group']
assign_public_ip: yes
instance_tags:
Name: "{{ sys_name }}"
Environment: "{{ env }}"
region: "{{ aws_region }}"
volumes:
- device_name: /dev/sda1
volume_size: 300
delete_on_termination: true
register: ec2
这仍然只是设置了一个类似“dev_subnet_public1”的字符串,而不是从我的主变量文件中提取“dev_subnet_public1”的真实子网ID。抱歉,误解了您的意思。我使用变量插值添加了一个答案。