i
Как правильно после деплоя инфраструктуры сохранить куда то tfstate для дальнейшего использования? Я собрал его как артефакт, а как сохранить его в репозиторий не понимаю
Size: a a a
i
A
N
data "external" "rancher_api_key" {
program = ["/bin/bash", "-xe", "${path.module}/scripts/get_token.sh.tpl"]
query = {
rancher_master_host = openstack_compute_instance_v2.rancher_master[0].access_ip_v4,
init_pass = local.init_pass,
new_pass = local.new_pass,
}
}
unction parse_input() {
eval "$(jq -r '@sh "export HOST=\(.rancher_master_host)"')"
eval "$(jq -r '@sh "export INIT_PASS=\(.init_pass)"')"
eval "$(jq -r '@sh "export NEW_PASS=\(.new_pass)"')"
# eval "$(jq -r '@sh "export HOST=\(.rancher_master_host) && export INIT_PASS=\(.init_pass) && export NEW_PASS=\(.new_pass)"')"
}
function return_token() {
...
jq -n --arg apikey $APIKEY '{"apikey":$apikey}'
}
parse_input && \
sleep 2 && \
return_token
Error: failed to execute "/bin/bash": + parse_input
++ jq -r '@sh "export HOST=\(.rancher_master_host)"'
+ eval 'export HOST='\''172.27.104.14'\'''
++ export HOST=172.27.104.14
++ HOST=172.27.104.14
++ jq -r '@sh "export INIT_PASS=\(.init_pass)"'
+ eval ''
++ jq -r '@sh "export NEW_PASS=\(.new_pass)"'
+ eval ''
+ sleep 2
+ return_token
...
HOST
парсит, а последующие нет ?N
A
N
IM
s
YA
YA
YA
s
KT
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> v2.0"
name = "my-${terraform.workspace}-vpc"
cidr = var.vpc_cidr
private_subnets = var.vpc_private_subnets # ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
public_subnets = var.vpc_public_subnets # ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
enable_nat_gateway = true
enable_vpn_gateway = true
...
}
module "database" {
source = "terraform-aws-modules/rds/aws"
version = "~> 2.0"
engine = "postgres"
# DB subnet group
subnet_ids = module.vpc.private_subnets
...
}
data "aws_eks_cluster" "cluster" {
name = module.my-cluster.cluster_id
}
data "aws_eks_cluster_auth" "cluster" {
name = module.my-cluster.cluster_id
}
provider "kubernetes" {
host = data.aws_eks_cluster.cluster.endpoint
cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
token = data.aws_eks_cluster_auth.cluster.token
load_config_file = false
}
module "my-cluster" {
source = "terraform-aws-modules/eks/aws"
cluster_name = "my-cluster-${terraform.workspace}"
cluster_version = "1.14"
subnets = module.vpc.private_subnets
vpc_id = module.vpc.vpc_id
worker_groups = [
{
instance_type = var.worker_instance_type
asg_max_size = var.max_workers
}
]
tags = {
Environment = terraform.workspace
}
}
PS
A
PS
A
PS
KT
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> v2.0"
name = "my-${terraform.workspace}-vpc"
cidr = var.vpc_cidr
private_subnets = var.vpc_private_subnets # ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
public_subnets = var.vpc_public_subnets # ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
enable_nat_gateway = true
enable_vpn_gateway = true
...
}
module "database" {
source = "terraform-aws-modules/rds/aws"
version = "~> 2.0"
engine = "postgres"
# DB subnet group
subnet_ids = module.vpc.private_subnets
...
}
data "aws_eks_cluster" "cluster" {
name = module.my-cluster.cluster_id
}
data "aws_eks_cluster_auth" "cluster" {
name = module.my-cluster.cluster_id
}
provider "kubernetes" {
host = data.aws_eks_cluster.cluster.endpoint
cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
token = data.aws_eks_cluster_auth.cluster.token
load_config_file = false
}
module "my-cluster" {
source = "terraform-aws-modules/eks/aws"
cluster_name = "my-cluster-${terraform.workspace}"
cluster_version = "1.14"
subnets = module.vpc.private_subnets
vpc_id = module.vpc.vpc_id
worker_groups = [
{
instance_type = var.worker_instance_type
asg_max_size = var.max_workers
}
]
tags = {
Environment = terraform.workspace
}
}
IV
Meta.Backend: backend *gcs.Backend does not support operations, so wrapping it in a local backend
.