当前位置: 首页 > news >正文

Terraform实战(三)-在AWS上尝试Terraform的Vault Provider

使用自Terraform 0.8起添加的Vault Provider后,aws云基础设施尝试从Vault而不是tfvars或环境变量中读取AWS凭证。

1 什么是vault?

vault是一种由Hashicorp发布的用于管理机密信息的工具。

2 aws使用Terraform的Vault Provider

2.1 创建静态密钥

以开发模式启动Vault。

在开发模式下,机密会记录在内存中,并在停止时清除。

$ vault server -dev 

设置VAULT_ADDR环境变量以从客户端操作Vault。

$ export VAULT_ADDR=http://127.0.0.1:8200

在开发模式下,没有TLS,并且您在启动时以Unseal或root用户身份登录。
在实际环境中,访问保管库要求使用解锁密钥和用户身份验证进行解锁。
有关此区域的图像,我认为您应该体验官方的交互式教程。

静态写入AWS访问密钥/秘密访问密钥。

$ vault write secret/aws_test access_key=xxxxxxxxxxxxxx secret_key=xxxxxxxxxxxxxxxxxxxxSuccess! Data written to: secret/aws_test

如果您不想将其保留在shell历史记录中,请以JSON格式编写,并使用@指定文件

$ vault write secret/aws_test @data.json

2.2 创建一个TF文件

vault_generic_secret使用数据源。

我使用Terraform Module Registry中的ec2-instance模块启动了EC2。

data "vault_generic_secret" "aws_test" {path = "secret/aws_test"
}provider "aws" {access_key = "${data.vault_generic_secret.aws_test.data["access_key"]}"secret_key = "${data.vault_generic_secret.aws_test.data["secret_key"]}"region     = "ap-northeast-1"
}# fileter latest AMI
data "aws_ami" "amazon_linux" {most_recent = truefilter {name = "name"values = ["amzn-ami-hvm-*-x86_64-gp2",]}filter {name = "owner-alias"values = ["amazon",]}
}module "ec2-instance" {source = "terraform-aws-modules/ec2-instance/aws"name  = "aws_test_ec2"count = 1ami                    = "${data.aws_ami.amazon_linux.id}"instance_type          = "t2.micro"key_name               = "keyname"vpc_security_group_ids = ["sg-12345678"]
}

2.3  运行

  • terraform init
  • terraform plan
  • terraform apply
$terraform plan
Refreshing Terraform state in-memory prior to plan...
T he refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.data.vault_generic_secret.aws_test: Refreshing state...
data.aws_ami.amazon_linux: Refreshing state...
以下略..

如果未设置vault为unseal,则将输出以下错误 :

$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.Error refreshing state: 1 error(s) occurred:* provider.vault: failed to create limited child token: Error making API request.URL: POST http://127.0.0.1:8200/v1/auth/token/create
Code: 503. Errors:* Vault is sealed

很重要的一点,从vault读取的数据以明文形式记录在tfstate中。因此TFstate管理必须严格。

http://www.lryc.cn/news/296118.html

相关文章:

  • 【Nicn的刷题日常】之有序序列合并
  • PostgreSql与Postgis安装
  • 【Spring连载】使用Spring Data访问Redis(九)----Redis流 Streams
  • MySQL:从基础到实践(简单操作实例)
  • Flink流式数据倾斜
  • 零基础学编程系列,从入门到精通,中文编程开发语言工具下载,编程构件容器件之控制面板构件用法
  • 使用PowerBI 基于Adventure Works案例分析
  • 人工智能之估计量评估标准及区间估计
  • Ubuntu权限相关命令
  • RTE2023第九届实时互联网大会:揭秘未来互联网趋势,PPT分享引领行业新思考
  • Hadoop-生产调优
  • Elasticsearch基于分区的索引策略
  • ASP.NET Core MVC 控制查询数据表后在视图显示
  • C语言第二十弹---指针(四)
  • 常用排序算法(Java版本)
  • CPP项目:Boost搜索引擎
  • 【洛谷 P1616】疯狂的采药 题解(动态规划+完全背包)
  • L1-027 出租分数 20
  • 51单片机精进之路-1点亮led灯
  • 嵌入式学习Day14 C语言 --- 位运算
  • idea设置terminal为git
  • 《MySQL 简易速速上手小册》第3章:性能优化策略(2024 最新版)
  • 【golang】23、gorilla websocket 源码:examples、数据结构、流程
  • SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式 基础(持续更新~)
  • flask+pyinstaller实现mock接口,并打包到exe运行使用postman验证
  • 【Spring Boot】第一篇 创建简单的Spring Boot项目
  • SSL协议是什么?关于SSL和TLS的常见问题解答
  • 第十五个知识:JQuery
  • 用Matlab 2015a svmtrain函数训练的SVM model在2021b无法使用的解决方法
  • umount:/home/tuners/windows files:目标忙。