Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increase AWS IOPs and GCP GPU count #6

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Increase AWS IOPs and GCP GPU count #6

wants to merge 3 commits into from

Conversation

alikhajeh1
Copy link
Member

@alikhajeh1 alikhajeh1 commented Mar 10, 2021

User description

Increase storage size and IOPs


Generated description

Below is a concise technical summary of the changes proposed in this PR:

Increase the storage size and IOPs for AWS instances by modifying the volume_size and iops parameters in the aws_instance resource configuration.

TopicDetails
AWS Storage Update Modify AWS instance storage parameters to enhance performance.
Modified files (1)
  • terraform-aws/main.tf
Latest Contributors(1)
EmailCommitDate
[email protected]Update-IOPSApril 15, 2021
This pull request is reviewed by Baz. Join @alikhajeh1 and the rest of your team on (Baz).

@alikhajeh1
Copy link
Member Author

alikhajeh1 commented Mar 10, 2021

Ran Plan for 1 project:

  1. dir: terraform-aws workspace: default

1. dir: terraform-aws workspace: default

Show Output
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

  # aws_instance.web_app will be created
+ resource "aws_instance" "web_app" {
      + ami                          = "ami-674cbc1e"
      + arn                          = (known after apply)
      + associate_public_ip_address  = (known after apply)
      + availability_zone            = (known after apply)
      + cpu_core_count               = (known after apply)
      + cpu_threads_per_core         = (known after apply)
      + get_password_data            = false
      + host_id                      = (known after apply)
      + id                           = (known after apply)
      + instance_state               = (known after apply)
      + instance_type                = "m5.4xlarge"
      + ipv6_address_count           = (known after apply)
      + ipv6_addresses               = (known after apply)
      + key_name                     = (known after apply)
      + outpost_arn                  = (known after apply)
      + password_data                = (known after apply)
      + placement_group              = (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              = (known after apply)
      + source_dest_check            = true
      + subnet_id                    = (known after apply)
      + tenancy                      = (known after apply)
      + vpc_security_group_ids       = (known after apply)

      + ebs_block_device {
          + delete_on_termination = true
          + device_name           = "my_data"
          + encrypted             = (known after apply)
          + iops                  = 800
          + kms_key_id            = (known after apply)
          + snapshot_id           = (known after apply)
          + throughput            = (known after apply)
          + volume_id             = (known after apply)
          + volume_size           = 1000
          + volume_type           = "io1"
        }

      + enclave_options {
          + enabled = (known after apply)
        }

      + ephemeral_block_device {
          + device_name  = (known after apply)
          + no_device    = (known after apply)
          + virtual_name = (known after apply)
        }

      + metadata_options {
          + http_endpoint               = (known after apply)
          + http_put_response_hop_limit = (known after apply)
          + http_tokens                 = (known after apply)
        }

      + network_interface {
          + delete_on_termination = (known after apply)
          + device_index          = (known after apply)
          + network_interface_id  = (known after apply)
        }

      + root_block_device {
          + delete_on_termination = true
          + device_name           = (known after apply)
          + encrypted             = (known after apply)
          + iops                  = (known after apply)
          + kms_key_id            = (known after apply)
          + throughput            = (known after apply)
          + volume_id             = (known after apply)
          + volume_size           = 50
          + volume_type           = (known after apply)
        }
    }

  # aws_lambda_function.hello_world will be created
+ resource "aws_lambda_function" "hello_world" {
      + arn                            = (known after apply)
      + function_name                  = "hello_world"
      + handler                        = "exports.test"
      + id                             = (known after apply)
      + invoke_arn                     = (known after apply)
      + last_modified                  = (known after apply)
      + memory_size                    = 1024
      + package_type                   = "Zip"
      + publish                        = false
      + qualified_arn                  = (known after apply)
      + reserved_concurrent_executions = -1
      + role                           = "arn:aws:lambda:us-east-1:account-id:resource-id"
      + runtime                        = "nodejs12.x"
      + signing_job_arn                = (known after apply)
      + signing_profile_version_arn    = (known after apply)
      + source_code_hash               = (known after apply)
      + source_code_size               = (known after apply)
      + timeout                        = 3
      + version                        = (known after apply)

      + tracing_config {
          + mode = (known after apply)
        }
    }

Plan: 2 to add, 0 to change, 0 to destroy.

##### Infracost estimate #####

Monthly cost will increase by $276

Previous monthly cost: $743
New monthly cost: $1019

Infracost output:

    Project: /home/atlantis/.atlantis/repos/infracost/atlantis-demo/6/default/terraform-aws/default.tfplan
    
    ~ aws_instance.web_app
      +$276 ($743 -> $1,019)

        ~ ebs_block_device[0]

            ~ Storage (provisioned IOPS SSD, io1)
              +$250 ($125 -> $375)

             ~ Provisioned IOPS
               +$26 ($52.00 -> $78.00)
   
    Monthly cost change for /home/atlantis/.atlantis/repos/infracost/atlantis-demo/6/default/terraform-aws/default.tfplan
    Amount:  +$276 ($743 -> $1019)
    
    ----------------------------------
    Key: ~ changed, + added, - removed
  • ▶️ To apply this plan, comment:
    • atlantis apply -d terraform-aws
  • 🚮 To delete this plan click here
  • 🔁 To plan this project again, comment:
    • atlantis plan -d terraform-aws

@infracost infracost locked as resolved and limited conversation to collaborators Mar 10, 2021
@alikhajeh1
Copy link
Member Author

I wasn’t expecting ebs_block_device[0] to cost that much, you think that’s ok? Maybe we can try gp3 as AWS says that’s cheaper/faster?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant