AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 904200
Accepted
Shailesh Sutar
Shailesh Sutar
Asked: 2018-03-24 03:28:57 +0800 CST2018-03-24 03:28:57 +0800 CST 2018-03-24 03:28:57 +0800 CST

ansible : 任务输出重定向到下一个任务作为输入

  • 772

嗨,我能够在下面的剧本中获得所需的输出,其中我正在使用以下 2 个任务,aws-create-rds并且aws-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

的任务定义aws-create-rds如下。

---

- 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

现在,由于此任务中有 2 个任务,我希望他们分成 2 个不同的角色。第一个aws-create-rds和第二个,因为aws-create-route53-record 我希望将来在 ansible 中将它们用作独立角色,但是我不确定如何传递endpoint来自aws-create-rds任务的值并将其传递给aws-create-route53-record并value在route53dns 记录中使用它。我检查了 rds 模块文档,其中没有端点的返回值。下面给出了 2 个用例。

 1. route53 record value can be passed through group_vars OR
 2. route53 record value can be passed from any previous ansible task executed.

我想处理aws-create-route53-record任务中的两个条件。任何线索如何实现这一点。环境变量或任何东西。提前致谢。

ansible
  • 1 1 个回答
  • 4414 Views

1 个回答

  • Voted
  1. Best Answer
    Shailesh Sutar
    2018-05-09T04:02:44+08:002018-05-09T04:02:44+08:00

    为了实现这一点,我编写了 2 个不同的角色/任务并在剧本中调用它们。下面是任务。首先称为 aws-create-rds

    - 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 }}"
        publicly_accessible: "{{ aws_create_rds.publicly_access }}"
        backup_retention: "{{ aws_create_rds.retention }}"
        vpc_security_groups: "{{ aws_create_rds.aws_sg_name }}"
        multi_zone: "{{ aws_create_rds.multi_zone }}"
        port: "{{ aws_create_rds.port }}"
        wait: yes
        wait_timeout: 900
        tags:
          created_by: ansible
      register: rds
    
    - name: Assigning rds endpoint value to variable.
      set_fact:
        endpoint_host: "{{ rds.instance.endpoint }}"
    

    第二个任务是 aws-create-route53-record。

    ---
    -
      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 }}"
    
    • 1

相关问题

  • 重复的 Ansible 任务

  • 无法形成站点中的文件的链接,该链接可用于使用 ansible 在远程服务器中启用的目录站点?

  • 如何执行 ansible 的特定角色?

  • Ansible 和 rbash

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve