Oi, eu sou capaz de obter a saída desejada no meu playbook abaixo, onde estou usando 2 tarefas da seguinte maneira aws-create-rds
eaws-create-route53-record
---
# Playbook for creating aws rds instance and then creating route53 dns record.
- name: setup aws-rds-instances
hosts: localhost
roles:
- aws-create-rds
definição de tarefa para o aws-create-rds
é como abaixo.
---
- name: create an rds instance
rds:
command: create
aws_access_key: "{{ aws_create_rds.access_key }}"
aws_secret_key: "{{ aws_create_rds.secret_key }}"
db_name: "{{ aws_create_rds.db_name }}"
instance_name: "{{ aws_create_rds.name }}"
db_engine: "{{ aws_create_rds.db_engine }}"
size: "{{ aws_create_rds.db_size }}"
instance_type: "{{ aws_create_rds.instance_type }}"
username: "{{ aws_create_rds.username }}"
password: "{{ aws_create_rds.password }}"
subnet: "{{ aws_create_rds.subnet }}"
region: "{{ aws_create_rds.region }}"
zone: "{{ aws_create_rds.zone }}"
publicly_accessible: "{{ aws_create_rds.access }}"
backup_retention: "{{ aws_create_rds.retention }}"
vpc_security_groups: "{{ aws_create_rds.aws_sg_name }}"
port: "{{ aws_create_rds.port }}"
wait: yes
wait_timeout: 900
tags:
created_by: ansible
register: rds
- 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: "{{ rds.instance.endpoint }}"
record: "{{ aws_create_route53_record.record }}"
private_zone: "{{ aws_create_route53_record.private_zone }}"
ttl: 30
Agora, como existem 2 tarefas nesta tarefa, quero que elas se dividam em 2 funções diferentes. 1º como aws-create-rds
e 2º como aws-create-route53-record
eu gostaria de usá-los como funções independentes no ansible no futuro, mas não tenho certeza de como posso passar o endpoint
valor proveniente da aws-create-rds
tarefa e passá-lo para aws-create-route53-record
e usá-lo como value
no route53
registro dns. Eu verifiquei a documentação do módulo rds e não há valor de retorno para o endpoint nele. Também existem 2 casos de uso para isso, conforme abaixo.
1. route53 record value can be passed through group_vars OR
2. route53 record value can be passed from any previous ansible task executed.
Eu quero lidar com a condição na aws-create-route53-record
tarefa. Qualquer pista de como isso pode ser alcançado. Variável de ambiente ou qualquer coisa. Desde já, obrigado.
Para conseguir isso, escrevi 2 papéis/tarefas diferentes e os chamei em um manual. Abaixo estão as tarefas. O primeiro é chamado aws-create-rds
E a segunda tarefa é aws-create-route53-record.