问题标签 [infrastructure-as-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - 与使用 Azure .NET SDK 相比,Pulumi 有那么神奇吗?
我在这里对哪个 SE 站点提出这个问题感到困惑,所以如果它应该在其他地方,请帮助我。
我一直在研究基础设施即代码解决方案。
不太喜欢 Terraform。智能感知的缺乏使得难以理解比程序员已经习惯的要难。
我一直在考虑ARM模板。我喜欢模板在我们在门户中创建资源时可用,但它似乎不太可读并且之后更难维护。
然后我发现了 Pulumi,与 Terraform 相比,我更喜欢他们的想法。在我看来,它们的方法也像上述选项一样是声明性的,但我们可以使用体面的编程语言来完成工作。
for
循环是必须的。
酷,我喜欢!但既然我们喜欢使用 C#(或其他替代方案),那么为什么我们不使用 SDK 将我们的基础设施作为代码来管理呢?
Pulumi 将自己与云 SKD进行了比较,将他们的解决方案定位为更安全,主张如果我们自己使用云 SDK,那么我们的解决方案就不会那么可靠。
我想知道这在多大程度上是真的?
去年,我编写了一些使用 Azure 服务总线队列/主题的库。有几个可以并行运行的集成测试,我需要通过创建新的队列/主题来隔离它们,并且曾经Microsoft.Azure.ServiceBus.Management.ManagementClient
这样做过。
看起来我真的不需要学习任何东西。
现在进入正题。不放弃我认为很棒的 Pulumi 的创新:
与使用 Azure SDK 相比,Pulumi 真的会增加那么多好处吗?
你有什么经验?
azure - 如何使用 Pulumi 设置 Key Vault 访问策略?
我正在尝试使用 Pulumi 设置 Azure 基础架构。到目前为止,我已经使用pulumi preview
了命令,似乎大多数事情都已经到位。
我已经能够整理出大多数事情,但不能整理出与 Azure AD 相关的部分。
例如,下面的代码有效:
但是下面的代码不起作用。
错误
错误:获取经过身份验证的对象 ID 时出错:从 Azure CLI 解析 json 结果时出错:等待 Azure CLI 时出错:退出状态 2
什么json?...我怀疑服务主体没有足够的权限来设置这些东西。
使用 --debug 标志
部分debug: Serialize property[resource:fe-modules-kv-[azure:keyvault/keyVault:KeyVault].accessPolicies.id[0].objectId]: Recursing into Output
告诉我们问题不在于租户,但我还没有掌握足够的知识。
我对此进行了很多搜索,并确保我的服务主体具有必要的角色,能够通过为其分配角色User Account Administrator
和Company Administrator
. 下面的脚本就是这样做的,我在 Azure 门户中确认了这一点。
我还缺少什么?或者我在哪里可以获得更多信息?
谁在运行部署?
它是服务主体。根据 Pulumi.yml 文件
下面的调试代码展示了这一点。
谁在运行部署(第 2 部分)?
实际上,在几百行之后,我找到了以下内容。
azure-active-directory - 如何在 Pulumi 的 Azure AD 中获取组?
我正在尝试在 Azure AD 中建立一个组。
Pulumi.dev.yaml
包含服务主体凭据。
我按照说明创建服务主体并使用适当的权限对其进行配置。
错误消息涉及一些说明:
要使用服务主体对 Azure 进行身份验证,您可以使用单独的“使用服务主体进行身份验证”身份验证方法 - 可在此处找到相关说明:<- 无链接
谁能帮我找到这些说明,以便我可以整理出我可能错过的内容?
ansible - Ansible Playbook 在 VM 中创建无人值守的 Ubuntu 安装
我一直在尝试创建一个剧本来使用 VmWare 上的 iso 进行 Ubuntu 服务器 18.04.2 的无人值守安装。playbook 将实际创建实例,但会停止并等待用户输入以选择语言、键盘配置等。如何让 ansible/vmware 使用 preseed.cfg 文件设置这些选项,以便创建无人值守安装?谢谢!
amazon-ec2 - 无法通过 Terraform 异步启动 EC2 实例
我愿意通过 Terraform 启动两个实例。第一个将生成一些证书文件,推送到 S3 存储桶。第二个实例将从特定的 S3 存储桶中提取这些证书。这两个操作都将由用户数据处理。这里的问题是第二个实例的用户数据中的拉取命令(aws cli)不起作用。(当我从 shell 尝试时它正在工作)我认为问题是关于 terraform 同步启动两个实例,以便在第一个实例将证书推送到 S3 之前启动第二个实例。
我还尝试通过在我的代码中添加“depends_on”来解决这个问题,但它不起作用。我正在寻找一种异步启动实例的方法。就像第二个实例将在 30 秒后启动,然后启动第一个实例。这里我粘贴代码的相关部分。
amazon-web-services - Terraform - 使用在单独文件中创建的安全组 ID 来创建 EC2 实例
我已经使用这个模块在 AWS VPC 中创建了一个安全组。如何在单独的文件中引用由此创建的资源?我在同一个 repo 的单独目录中创建我们的堡垒实例。
我的堡垒配置如下所示,使用 Terraform EC2 模块,如果我硬编码 vpc 安全组 ID,它就可以工作,但我希望它能够直接从创建安全组时获取它,因为这可能会在未来发生变化..
terraform/aws/layers/bastion/main.tf
这就是我创建安全组的方式: terraform/aws/global/vpc/bastion_sg.tf
我是否需要将安全组 ID 输出到由 bastion_sg.tf 创建的 output.tf 中,然后才能在 bastion/main.tf 中引用它,如下所示?
然后以某种方式将 ID 传递给 vpc_security_group_id = ?
amazon-web-services - CloudFormation:将 BasePathMapping 替换为 ApiMapping
我在 Terraform 中使用了 CloudFormation 堆栈,因为当时不支持 WebSocket API 网关。
最近在尝试应用更改时,我遇到了这个错误:
REST API 和 HTTP API 在同一个域名上的混合只能通过 API Gateway 的 V2 DomainName 接口来实现。目前,WebSocket API 只能通过其他 WebSocket API 附加到域名。这也必须通过 API Gateway 的 V2 域名接口进行。
我发现使用资源AWS::ApiGatewayV2::ApiMapping
而不是AWS::ApiGateway::BasePathMapping
解决这个问题,所以我替换了这个:
有了这个:
不幸的是,我开始收到此错误:
此域名已存在 ApiMapping 键。
有没有合适的方法来解决这个问题?我在文档中找不到任何内容。
amazon-web-services - Terraform 配置未将其他文件的输出用于已创建的资源,而是尝试重新创建它并失败(安全组 ID)
在 terraform/aws/global/vpc/security_groups.tf 我有下面的代码来创建我的堡垒安全组,以及下面的 output.tf 文件。但是在 terraform/aws/layers/bastion/main.tf (代码也在下面)中,我引用了该安全组,因为我需要它的安全组 ID 来创建我的 EC2 实例,我遇到的问题是,而不是从已经由 /vpc/security_groups.tf 配置创建的现有安全组它尝试创建整个安全组并且运行显然失败,因为它已经存在。如何更改我的代码以获取现有 SG 的 ID?我不想在与我的实例相同的配置文件中创建我的 SG,我的一些安全组在不同资源之间共享。我正在使用 Terraform Cloud,VPC 有自己的工作区,
terraform/aws/global/vpc/security_groups.tf
terraform/aws/global/vpc/outputs.tf
terraform/aws/layers/bastion/main.tf
sql - 使用基础设施即代码时是否需要按顺序创建用户和数据库实例?
我在 Github 上的 Google Foundation Toolkit 上看到了这个部署管理器模板
我无法理解这条线的用途。 Github 回购
amazon-web-services - Get existing VPC for use within a Pulumi stack
I'm trying to use Pulumi within a somewhat restricted AWS environment.
This sandbox requires that I use a specific VPC, and there is no default VPC.
I have tried the examples showing how to reference an existing VPC, but they all fail with some variant of "invoking aws:ec2/getVpc:getVpc: no matching VPC found"
@pulumi/awsx, using code referenced from: https://github.com/pulumi/pulumi-awsx/issues/522:
@pulumi/aws, using code referenced from https://www.pulumi.com/docs/reference/pkg/aws/ec2/getvpc/:
Question: what is the correct and complete syntax for referencing an existing VPC within a Pulumi stack?
Note that I would rather not "adopt" this resource as it is shared and the user running the pulumi up
command does not have permission to delete VPC resources.