问题标签 [hashicorp]

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.

0 投票
1 回答
466 浏览

hcl - 如何从 403 响应中找出需要添加的策略?

我向我的 Hashicorp Vault 实例发送 HTTP 请求并收到 403 HTTP 响应。如何对需要从请求路径添加的策略进行反向工程?

0 投票
1 回答
952 浏览

terraform - 在 Windows 中执行“terragrunt plan”时看到“文件名或扩展名太长”

从 Visual Studio 代码执行“terragrunt plan”会在 Windows 10 中出现以下错误:

运行命令:terraform init -backend-config=region=eu-west-2 -backend-config=bucket=bucket-name" -backend-config=dynamodb_table=lock-table -backend-config=encrypt=true -backend-config =key=ec2/terraform.tfstate

正在初始化后端...

成功配置后端“s3”!除非后端配置更改,否则 Terraform 将自动使用此后端。

正在初始化提供程序插件...

  • 正在查找匹配“~> 3.36.0”的 hashcorp/aws 版本...
  • 正在安装 hashcorp/aws v3.36.0...

错误:无法安装提供程序

安装 hashcorp/aws v3.36.0 时出错:mkdir .terraform/plugins/registry.terraform.io/hashicorp/aws/3.36.0/windows_amd64:文件名或扩展名太长。

[terragrunt] 2021/05/19 15:39:20 命中多个错误:退出状态 1

0 投票
1 回答
291 浏览

amazon-web-services - Terraform 模块依赖项不起作用(版本 0.12)

我正在尝试将一个输出值从一个 terraform 模块传递到另一个 terraform 模块,但面临以下问题

我的用例是这样的,在第一个模块中我正在创建一个 IAM 角色,在第二个模块中我需要使用上面创建的 IAM 角色(另外,在第二个模块中,如果没有在第一个模块中创建角色,它将在第二个模块中创建角色本身模块,请视其为要求)

output.tf 用于从第一个模块中提取 iam_role_name

我收到错误的模块 checkiamrole 的资源代码

错误计数参数无效

计数 = var.iam_role == "" ?1 : 0

“计数”值取决于在应用之前无法确定的资源属性,因此 Terraform 无法预测将创建多少个实例。要解决此问题,请使用 -target 参数首先仅应用计数所依赖的资源。

我的查询是如何实现模块依赖以及如何将一个输出值从依赖模块传递到所需模块

0 投票
0 回答
17 浏览

go - raft 将快照+日志分发到“新”服务器的条件是什么?

我的问题是关于将新服务器添加到集群时现有快照+日志raft consensus的分布情况。

有2个选项:

  1. 服务器有一个新名称。我知道在这种情况下,最后一个快照 + 新日志与该服务器共享以使其加快速度。
  2. 服务器与已知服务器同名。<- 我的问题是关于这个案例:

如果该服务器实际上具有(几乎)最新信息,是否有检查(在 raft 协议中或特别是在hashcorp raft 实现中)?还是领导者/集群只是假设它是同一台服务器并且数据持久化?

换句话说:如果我没有任何快照/日志的持久性并且使用相同的名称重新启动服务器,集群会检测到它并发送快照+日志以使其加快速度吗?或者我是否需要添加一个具有不同名称的服务器才能发生这种情况?

0 投票
1 回答
168 浏览

postgresql - Terraform 尝试加载旧的已失效提供程序

尝试使用 cyrilgdn/postgresql 提供程序,但 terraform 继续尝试加载 hashcorp/postgresql,这会导致 init 失败。目前使用 terraform 1.0.0,尽管问题也发生在 14.1 上 - 尚未从 12.x 升级,始终运行 14.1 或更新版本。

我已将代码简化为以下,此文件夹中没有其他内容,但仍然遇到问题

初始化报告:

terraform 提供商报告

如何阻止它尝试查找 hashcorp/postgresql ?

0 投票
1 回答
335 浏览

nomad - 无法通过浏览器访问在 Hashicorp Nomad 上运行的服务

我开始了两个 Nomad 工作,一个用于 PostgreSQL,另一个用于我 MacOS 上 Nomad dev 上的 pgAdmin。工作规格如下:

所有作业均已成功部署,并且其状态为正在运行。

从作业规范中可以看出,pgadmin 应该在 localhost:5050 中运行,但是每当我尝试在浏览器中访问此地址时,我都会收到“无法连接到服务器”错误。是否缺少任何配置?

0 投票
0 回答
438 浏览

packer - Hashicorp Packer:将变量/本地字符串值输出到文件的方法

我有一些 Packer 模板,它们生成配置文件的内容,然后我需要将其输出到配置文件。最终目标是将这些文件上传到远程机器,然后使用 shell 配置程序,但我似乎无法弄清楚这样做的正确方法。我当前的解决方案依赖于本地 shell 配置器来编写文件,然后我将它们上传到远程,然后运行远程配置器。

就像是,

虽然这可行,但文件生成看起来很尴尬,我想简化它并使其更健壮。

source除了“基本”ec2 源之外,我最初从为配置文件定义es(其中有很多)开始。但是,从日志来看,Packer 似乎为构建块内的每个源运行配置程序,因此这似乎不是一个好主意。

有更好的选择来实现这一点吗?

0 投票
1 回答
458 浏览

tags - Packer ec2-ami 部署上的标签格式

我正在尝试第一次使用 Hashicorp Packer 创建一个亚马逊 ec2 ami,但是在创建标签时遇到了这个失败,我已经尝试了一些格式的试错测试,但仍然不走运

我的代码ec2.pkr.hcl 如下所示:

然后我的代码variables.pkr.hcl 看起来像这样:

0 投票
0 回答
406 浏览

vault - Hashicorp 的 Vault 证书身份验证不起作用。如何配置服务器和客户端证书?

我正在尝试在 Kubernetes 集群中部署的 Vault 中启用 TLS 身份验证。我的目标是能够使用 cert 方法登录到保险库,如下所示:

我首先在此页面之后针对 minikube 集群部署了保管库。此页面创建 Vault 服务器的公钥、私钥和证书。有了这三个文件,我假设到服务器的任何连接都是安全的。我遵循的步骤如下:

创建独立的 TLS 保险库服务器

1. 创建环境变量

2. 为保管库服务器创建私钥

3. 创建和部署证书签名请求

  • 3.1) 创建文件csr.conf
  • 3.2) 使用中的配置创建证书签名请求csr.conf
  • 3.3) 将证书签名请求放入 Kubernetes 的 CertificateSigningRequest yaml

并将其应用到 Kubernetes

  • 3.4) 批准证书签名请求

4. 获取 Vault 服务器的证书

并将其放入文件中

5. 获取证书颁发机构的证书

 

在这个阶段,我有保险库服务器的私钥vault.key、它的证书vault.crt和 CA 证书vault.ca

 

6. 我可以将这些文件放入 Kubernetes 机密中,以供 Vault 服务器部署使用。

7. 最后使用 Helm 图表和以下自定义值部署 Vault 服务器

使用证书进行身份验证

kubectl exec进入吊舱vault-0,然后启动并打开保险库。

然后我尝试使用我创建的文件登录。我知道它们与服务器的文件相同。但是,由于它们是配对和签名的,我希望它们能够工作。此外,我确实进入了 Vault 的 UI 并添加了 vault.ca 作为要在 TLS Acess 中使用的证书。

但是,我收到此错误:

我对 TLS 的理解有限。谁能指出我正确的方向?

0 投票
0 回答
30 浏览

terraform - Vault 架构 - 多种环境

我目前正在考虑如何在多个环境中正确部署 Vault:开发、登台和生产。每个环境都有自己的集群。这里有多种选择:

  • 一个全局保管库(Vault Cloud)
  • 每个环境一个保管库(在集群中运行)
  • 每个环境一个全局保管库(Vault Cloud)和一个保管库(在集群中运行)

许多人建议每个环境有一个保管库。但是,特定于该环境的外部资源(S3、DB、...)呢?如果我们使用 terraform 销毁/重新创建集群,我们将丢失机密,而我们没有销毁外部资源,因此我不确定存储凭据的正确位置。以下是一些用例:

  • Stripe API 凭证(由多个 env 共享的秘密):如果由 staging 和 prod 共享,例如,我猜它应该在全局 Vault 中?也许它应该从全局“同步”到本地?
  • MySQL as a Service 用户凭据(外部机密):如果我们将凭据存储在环境保险库中,每次重建集群时都会丢失凭据,而 MySQL as a service 对集群来说是“外部的”。但也许这是我们应该期待的?
  • Redis 操作员 K8S(本地密钥):由于服务仅存在于环境集群中,我猜凭据应该坚持环境保险库
  • Dev S3 存储桶(外部机密):与 MySQL 数据库相同,如果我们将凭据存储在 Dev 集群中,那么每次使用 terraform 部署时都会丢失凭据。也许我们应该期待这个或存储在全球保险库中?

我没有找到关于这个主题的文档。你有什么建议?

谢谢