Closed PhillypHenning closed 1 year ago
BitOps doc update to support change link https://github.com/bitovi/bitops/pull/395
can we do a list of targets?
No, and I doubt it would be overly hard to implement. Will take a look
+ '[' -n '' ']'
+ '[' -n 'aws_instance.server resource.resouce2' ']'
+ '[' plan == destroy ']'
+ '[' '' == true ']'
+ targets=($BITOPS_TF_TARGETS)
+ for target in "${targets[@]}"
+ SOURCE_TARGET='-target aws_instance.server'
+ echo 'Running Terraform Plan, Targetting: [aws_instance.server]'
Running Terraform Plan, Targetting: [aws_instance.server]
+ echo 'bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_plan.sh "" "-target aws_instance.server"'
bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_plan.sh "" "-target aws_instance.server"
+ echo 'Runnng Terraform Apply, Targetting: [aws_instance.server]'
Runnng Terraform Apply, Targetting: [aws_instance.server]
+ echo 'bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_apply.sh "" "-target aws_instance.server"'
bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_apply.sh "" "-target aws_instance.server"
+ for target in "${targets[@]}"
+ SOURCE_TARGET='-target resource.resouce2'
+ echo 'Running Terraform Plan, Targetting: [resource.resouce2]'
Running Terraform Plan, Targetting: [resource.resouce2]
+ echo 'bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_plan.sh "" "-target resource.resouce2"'
bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_plan.sh "" "-target resource.resouce2"
+ echo 'Runnng Terraform Apply, Targetting: [resource.resouce2]'
Runnng Terraform Apply, Targetting: [resource.resouce2]
+ echo 'bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_apply.sh "" "-target resource.resouce2"'
bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_apply.sh "" "-target resource.resouce2"
If using terraform plan we expect to see the terraform exit normally.
🟢
│ Error: Invalid count argument
│
│ on .terraform/modules/efs/main.tf line 135, in resource "aws_security_group" "this":
│ 135: count = var.create && var.create_security_group && length(var.mount_targets) > 0 ? 1 : 0
│
│ The "count" value depends on resource attributes that cannot be determined
│ until apply, so Terraform cannot predict how many instances will be
│ created. To work around this, use the -target argument to first apply only
│ the resources that the count depends on.
🟢
Above logs show an example of two resources being targetting prior to terraform apply
🟢
Running Terraform Plan, Targetting: [aws_instance.server]
+ bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_plan.sh '' '-target aws_instance.server'
Running terraform plan...
...
Note: You didn't use the -out option to save this plan, so Terraform can't
guarantee to take exactly these actions if you run "terraform apply" now.
+ '[' apply '!=' plan ']'
+ echo 'Runnng Terraform Apply, Targetting: [aws_instance.server]'
Runnng Terraform Apply, Targetting: [aws_instance.server]
+ bash /opt/bitops/scripts/installed_plugins/terraform/scripts/terraform_apply.sh '' '-target aws_instance.server'
Running terraform apply...
data.aws_ami.ubuntu: Reading...
data.aws_ami.ubuntu: Read complete after 0s [id=ami-0dae3a932d090b3de]
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_iam_instance_profile.ec2_profile will be created
+ resource "aws_iam_instance_profile" "ec2_profile" {
+ arn = (known after apply)
+ create_date = (known after apply)
+ id = (known after apply)
+ name = "github-action-deploy-nfs-testing"
+ path = "/"
+ role = "github-action-deploy-nfs-testing"
+ tags_all = {
+ "AWSResourceIdentifier" = "github-action-deploy-nfs-testing"
+ "GitHubAction" = "bitovi/github-actions-node-app-to-aws-vm"
+ "GitHubBranchName" = (known after apply)
+ "GitHubOrgName" = "github-actions-deploy-stackstorm-testing"
+ "GitHubRepoName" = "github-actions-deploy-stackstorm-testing"
+ "OperationsRepo" = "bitovi/github-actions-node-app-to-aws-vm/operations/deployment"
+ "OperationsRepoEnvironment" = "deployment"
+ "created_with" = "terraform"
}
+ unique_id = (known after apply)
}
# aws_iam_role.ec2_role will be created
+ resource "aws_iam_role" "ec2_role" {
+ arn = (known after apply)
+ assume_role_policy = jsonencode(
{
+ Statement = [
+ {
+ Action = "sts:AssumeRole"
+ Effect = "Allow"
+ Principal = {
+ Service = "ec2.amazonaws.com"
}
+ Sid = ""
},
]
+ Version = "2012-10-17"
}
)
+ create_date = (known after apply)
+ force_detach_policies = false
+ id = (known after apply)
+ managed_policy_arns = (known after apply)
+ max_session_duration = 3600
+ name = "github-action-deploy-nfs-testing"
+ name_prefix = (known after apply)
+ path = "/"
+ tags_all = {
+ "AWSResourceIdentifier" = "github-action-deploy-nfs-testing"
+ "GitHubAction" = "bitovi/github-actions-node-app-to-aws-vm"
+ "GitHubBranchName" = (known after apply)
+ "GitHubOrgName" = "github-actions-deploy-stackstorm-testing"
+ "GitHubRepoName" = "github-actions-deploy-stackstorm-testing"
+ "OperationsRepo" = "bitovi/github-actions-node-app-to-aws-vm/operations/deployment"
+ "OperationsRepoEnvironment" = "deployment"
+ "created_with" = "terraform"
}
+ unique_id = (known after apply)
+ inline_policy {
+ name = (known after apply)
+ policy = (known after apply)
}
}
# aws_instance.server will be created
+ resource "aws_instance" "server" {
+ ami = "ami-0dae3a932d090b3de"
+ arn = (known after apply)
+ associate_public_ip_address = true
+ availability_zone = (known after apply)
+ cpu_core_count = (known after apply)
+ cpu_threads_per_core = (known after apply)
+ disable_api_stop = (known after apply)
+ disable_api_termination = (known after apply)
+ ebs_optimized = (known after apply)
+ get_password_data = false
+ host_id = (known after apply)
+ host_resource_group_arn = (known after apply)
+ iam_instance_profile = "github-action-deploy-nfs-testing"
+ id = (known after apply)
+ instance_initiated_shutdown_behavior = (known after apply)
+ instance_state = (known after apply)
+ instance_type = "t2.small"
+ ipv6_address_count = (known after apply)
+ ipv6_addresses = (known after apply)
+ key_name = "github-action-deploy-nfs-testing"
+ monitoring = true
+ outpost_arn = (known after apply)
+ password_data = (known after apply)
+ placement_group = (known after apply)
+ placement_partition_number = (known after apply)
+ primary_network_interface_id = (known after apply)
+ private_dns = (known after apply)
+ private_ip = (known after apply)
+ public_dns = (known after apply)
+ public_ip = (known after apply)
+ secondary_private_ips = (known after apply)
+ security_groups = [
+ "github-action-deploy-nfs-testing",
]
+ source_dest_check = true
+ subnet_id = (known after apply)
+ tags = {
+ "Name" = "github-action-deploy-nfs-testing - Instance"
}
+ tags_all = {
+ "AWSResourceIdentifier" = "github-action-deploy-nfs-testing"
+ "GitHubAction" = "bitovi/github-actions-node-app-to-aws-vm"
+ "GitHubBranchName" = (known after apply)
+ "GitHubOrgName" = "github-actions-deploy-stackstorm-testing"
+ "GitHubRepoName" = "github-actions-deploy-stackstorm-testing"
+ "Name" = "github-action-deploy-nfs-testing - Instance"
+ "OperationsRepo" = "bitovi/github-actions-node-app-to-aws-vm/operations/deployment"
+ "OperationsRepoEnvironment" = "deployment"
+ "created_with" = "terraform"
}
+ tenancy = (known after apply)
+ user_data = (known after apply)
+ user_data_base64 = (known after apply)
+ user_data_replace_on_change = false
+ vpc_security_group_ids = (known after apply)
+ capacity_reservation_specification {
+ capacity_reservation_preference = (known after apply)
+ capacity_reservation_target {
+ capacity_reservation_id = (known after apply)
+ capacity_reservation_resource_group_arn = (known after apply)
}
}
+ ebs_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ snapshot_id = (known after apply)
+ tags = (known after apply)
+ throughput = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}
+ enclave_options {
+ enabled = (known after apply)
}
+ ephemeral_block_device {
+ device_name = (known after apply)
+ no_device = (known after apply)
+ virtual_name = (known after apply)
}
+ maintenance_options {
+ auto_recovery = (known after apply)
}
+ metadata_options {
+ http_endpoint = (known after apply)
+ http_put_response_hop_limit = (known after apply)
+ http_tokens = (known after apply)
+ instance_metadata_tags = (known after apply)
}
+ network_interface {
+ delete_on_termination = (known after apply)
+ device_index = (known after apply)
+ network_card_index = (known after apply)
+ network_interface_id = (known after apply)
}
+ private_dns_name_options {
+ enable_resource_name_dns_a_record = (known after apply)
+ enable_resource_name_dns_aaaa_record = (known after apply)
+ hostname_type = (known after apply)
}
+ root_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ tags = (known after apply)
+ throughput = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}
}
# aws_key_pair.aws_key will be created
+ resource "aws_key_pair" "aws_key" {
+ arn = (known after apply)
+ fingerprint = (known after apply)
+ id = (known after apply)
+ key_name = "github-action-deploy-nfs-testing"
+ key_name_prefix = (known after apply)
+ key_pair_id = (known after apply)
+ key_type = (known after apply)
+ public_key = (known after apply)
+ tags_all = {
+ "AWSResourceIdentifier" = "github-action-deploy-nfs-testing"
+ "GitHubAction" = "bitovi/github-actions-node-app-to-aws-vm"
+ "GitHubBranchName" = (known after apply)
+ "GitHubOrgName" = "github-actions-deploy-stackstorm-testing"
+ "GitHubRepoName" = "github-actions-deploy-stackstorm-testing"
+ "OperationsRepo" = "bitovi/github-actions-node-app-to-aws-vm/operations/deployment"
+ "OperationsRepoEnvironment" = "deployment"
+ "created_with" = "terraform"
}
}
# aws_security_group.ec2_security_group will be created
+ resource "aws_security_group" "ec2_security_group" {
+ arn = (known after apply)
+ description = "SG for github-action-deploy-nfs-testing"
+ egress = [
+ {
+ cidr_blocks = [
+ "0.0.0.0/0",
]
+ description = ""
+ from_port = 0
+ ipv6_cidr_blocks = []
+ prefix_list_ids = []
+ protocol = "-1"
+ security_groups = []
+ self = false
+ to_port = 0
},
]
+ id = (known after apply)
+ ingress = (known after apply)
+ name = "github-action-deploy-nfs-testing"
+ name_prefix = (known after apply)
+ owner_id = (known after apply)
+ revoke_rules_on_delete = false
+ tags = {
+ "Name" = "github-action-deploy-nfs-testing"
}
+ tags_all = {
+ "AWSResourceIdentifier" = "github-action-deploy-nfs-testing"
+ "GitHubAction" = "bitovi/github-actions-node-app-to-aws-vm"
+ "GitHubBranchName" = (known after apply)
+ "GitHubOrgName" = "github-actions-deploy-stackstorm-testing"
+ "GitHubRepoName" = "github-actions-deploy-stackstorm-testing"
+ "Name" = "github-action-deploy-nfs-testing"
+ "OperationsRepo" = "bitovi/github-actions-node-app-to-aws-vm/operations/deployment"
+ "OperationsRepoEnvironment" = "deployment"
+ "created_with" = "terraform"
}
+ vpc_id = (known after apply)
}
# tls_private_key.key will be created
+ resource "tls_private_key" "key" {
+ algorithm = "RSA"
+ ecdsa_curve = "P224"
+ id = (known after apply)
+ private_key_openssh = (sensitive value)
+ private_key_pem = (sensitive value)
+ private_key_pem_pkcs8 = (sensitive value)
+ public_key_fingerprint_md5 = (known after apply)
+ public_key_fingerprint_sha256 = (known after apply)
+ public_key_openssh = (known after apply)
+ public_key_pem = (known after apply)
+ rsa_bits = 4096
}
Plan: 6 to add, 0 to change, 0 to destroy.
Examples of use
bitops.config.yaml
Logs