您好我正在尝试设置如下任务。
- name: Create a route53 record for RDS instance.
route53:
state: present
aws_access_key: "{{ aws_create_route53_record.access_key }}"
aws_secret_key: "{{ aws_create_route53_record.secret_key }}"
zone: "{{ aws_create_route53_record.zone }}"
hosted_zone_id: "{{ aws_create_route53_record.id }}"
type: "{{ aws_create_route53_record.type }}"
value: "{{ aws_create_route53_record.value }}"
record: "{{ aws_create_route53_record.record }}"
private_zone: "{{ aws_create_route53_record.private_zone }}"
ttl: 30
现在我知道来自group_vars/all.yml
的传递变量我可以在aws_create_route53_record.value
中定义group_vars/all.yml
并使用它但是在某些情况下我有可能将此任务用作角色并且想要将aws_create_route53_record.value
运行时从先前任务传递到此任务并在创建route53记录时使用它。例如使用ansible任务创建rds实例,并使用rds endpoint
作为route53_record
的值
任何建议都会有所帮助。感谢
注意:我已经检查了rds module page
的返回值,我认为它会立即用来解决这个问题,但是没有提供端点返回。
答案 0 :(得分:0)
我能够通过在我的任务中使用变量来解决我的问题,并且最初为其分配group_vars变量的值,并设置一个条件,即如果在赋值group_vars变量之后,变量仍为空,则从上一个值获取值任务。下面是可以正常工作的代码片段。您需要将先前任务中的变量注册为endpoint_host
---
-
name: "Set facts of record value"
set_fact:
record_value: "{{ aws_create_route53_record.value }}"
-
name: "If record value not present, Look for endpoint-host variable"
set_fact:
record_value: "{{ endpoint_host }}"
when: "aws_create_route53_record.value == \"\""
-
name: "Create a route53 record for RDS instance."
route53:
aws_access_key: "{{ aws_create_route53_record.access_key }}"
aws_secret_key: "{{ aws_create_route53_record.secret_key }}"
hosted_zone_id: "{{ aws_create_route53_record.hosted_zone_id }}"
private_zone: "{{ aws_create_route53_record.private_zone }}"
record: "{{ aws_create_route53_record.record }}"
state: present
ttl: 30
type: "{{ aws_create_route53_record.type }}"
value: "{{ record_value }}"
zone: "{{ aws_create_route53_record.zone }}"
希望这有帮助。