gpt4 book ai didi

ansible - 如何在 Ansible 脚本中使用 CloudFormation 输出值

转载 作者:行者123 更新时间:2023-12-03 07:44:16 27 4
gpt4 key购买 nike

我正在尝试为学校项目设置一些自动化。其要点是:

  • 通过 CloudFormation 安装 EC2 实例。然后
    • 使用cfn-init
      • 安装非常基本的 Ansible 配置
      • 从 S3 下载 Ansible 剧本
      • 运行所述 playbook 以通过 CloudFormation 安装 Redshift 集群
      • 安装一些必要的软件包
      • 安装一些必要的Python模块
      • 下载一个 Python 脚本,该脚本将
      • 连接到 Redshift 数据库
      • 创建表格
      • 使用COPY命令将数据导入表中

一切都在执行脚本之前完成。手动执行此操作很方便,但这是因为我可以将创建的 Redshift 端点复制到数据库连接的脚本中。我遇到的问题是,我不知道如何从 CloudFormation 中提取该输出值,以便将其插入到脚本中以实现完全自动化(保存初始 EC2 部署)解决方案。

我发现 Ansible 至少有一种方法可以做到这一点(例如,cloudformation_facts),但我对如何实现它有点模糊。我看过一些例子,但并没有变得更清楚。如果没有上下文,我会迷失方向,到目前为止我所看到的只是独立的片段。

最佳答案

为了确保列出答案:

我找到了 aws cloudformation cli 命令的 describe-stacksdescribe-stack-resources 子命令。使用这些,我能够找到我需要的信息。特别是,我需要访问一个角色。这是我使用的命令:

aws cloudformation describe-stacks --stack-name=StackName --region=us-west-2 \ 
--query 'Stacks[0].Outputs[?OutputKey==`RedshiftClusterEndpointAddress`].OutputValue' \
--output text

我首先使用describe-stacks子命令来获取我的堆栈列表。相关堆栈是列表中的第一个(数组),因此我在 describe-stack-recources 子命令的查询顶部使用了 Stacks[0]。然后我使用了Outputs,因为我对 CloudFormation 输出列表中的值感兴趣。我知道 key 的名称 (RedshiftClusterEndpointAddress),因此我使用它作为参数。然后,我使用 OutputValue 返回 RedshiftClusterEndpointAddress 的值。

关于ansible - 如何在 Ansible 脚本中使用 CloudFormation 输出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com