I am trying to see how to go about retrieving some aws public ssh keys from vault using terraform. Vault is returning a string instead of an array of strings, so I looks like it would have to treat the whole response as a json object. How would I use jsondecode to help me decode that string?
terrform code
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
# Configure the AWS Provider
provider "aws" {
region = "us-west-1"
}
provider "vault" {}
resource "aws_instance" "web" {
ami = "ami-1123456789p9"
instance_type = "t3.micro"
vpc_security_group_ids = ["sg-55552f1"]
subnet_id = "subnet-dee55a55"
key_name = aws_key_pair.tf-key.key_name
}
resource "aws_key_pair" "tf-key" {
key_name = "linuxkey"
public_key = data.vault_kv_secret_v2.linux_key.data_json
}
data "vault_kv_secret_v2" "linux_key" {
mount = "test/test/test/secret"
name = "chef/linux_users/user"
}
output "testing123" {
value = data.vault_kv_secret_v2.linux_key.data_json
sensitive = true
}
output response
{
"format_version": "1.1",
"terraform_version": "1.4.3-dev",
"planned_values": {
"outputs": {
"testing123": {
"sensitive": true,
"type": "string",
"value": "{\"groups\":[\"itadmins\"],\"shell\":\"/bin/bash\",\"ssh_keys\":
[\"ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX etc."}"
}
},