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

fix: forest binary reorg #216

Merged
merged 18 commits into from
Sep 8, 2023
Merged

fix: forest binary reorg #216

merged 18 commits into from
Sep 8, 2023

Conversation

elmattic
Copy link
Contributor

@elmattic elmattic commented Aug 16, 2023

Summary of changes
Changes introduced in this pull request:

Note that some PR have been already merged.

Reference issue to close (if applicable)

Closes

Other information and links

@elmattic elmattic changed the title Elmattic/fix binary reorg fix: forest binary reorg Aug 16, 2023
@elmattic elmattic marked this pull request as ready for review August 16, 2023 12:35
@elmattic elmattic requested a review from a team as a code owner August 16, 2023 12:35
@elmattic elmattic requested review from hanabi1224 and jdjaustin and removed request for a team August 16, 2023 12:35
@elmattic
Copy link
Contributor Author

@LesnyRumcajs Can you check the TF part as well?

@samuelarogbonlo
Copy link
Contributor

@elmattic have you tested these changes making sure they are working as intended ?

Copy link
Member

@LesnyRumcajs LesnyRumcajs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Port changes can be a separate PR. We can expose 1234 and 2345 so they work with binaries before and after the default port change.
  2. That said, it won't give much as long as the commands are not backwards compatible, i.e., if there's no forest-tool db destroy in the current version, it will just fail miserably.

We need to either:

  • ensure both versions (current one and unreleased containing reorg changes) work fine - this requires having logic for handling this, either in Forest (e.g., forest-cli db clean would forward the call to forest-tool db destroy) or in here (check Forest version and use correct set of commands based on that. This may be an overkill.
  • Merge the changes from this PR only after a version has been released. This approach invalidates exposing both 1234 and 2345, as there would be only one "true" version.

Sync check changes would need to be in a separate PR and follow the same logic - either merge as soon as reorg is merged in Forest or have a compatibility layer.

terraform/modules/sync_check/service/sync_check.rb Outdated Show resolved Hide resolved
terraform/modules/sync_check/service/sync_check.rb Outdated Show resolved Hide resolved
@elmattic
Copy link
Contributor Author

@elmattic have you tested these changes making sure they are working as intended ?

How exactly ? Do we have some documentation for this ?

@samuelarogbonlo
Copy link
Contributor

@elmattic have you tested these changes making sure they are working as intended ?

How exactly ? Do we have some documentation for this ?

Yes, you're able to manually execute test samples for various services. The steps for each can be found within their respective folders in the Terraform directory.

@LesnyRumcajs
Copy link
Member

@elmattic have you tested these changes making sure they are working as intended ?

How exactly ? Do we have some documentation for this ?

Yes, you're able to manually execute test samples for various services. The steps for each can be found within their respective folders in the Terraform directory.

That's a bit misleading. The steps there are not intended for manual testing and should not be performed on branches. Otherwise, all the prod services will get terraformed. Would be great to have a more detailed instructions on testing for future reference.

@samuelarogbonlo
Copy link
Contributor

@elmattic have you tested these changes making sure they are working as intended ?

How exactly ? Do we have some documentation for this ?

Yes, you're able to manually execute test samples for various services. The steps for each can be found within their respective folders in the Terraform directory.

That's a bit misleading. The steps there are not intended for manual testing and should not be performed on branches. Otherwise, all the prod services will get terraformed. Would be great to have a more detailed instructions on testing for future reference.

True i missed that, i will write a more detailed documentation on that

@github-actions
Copy link

Forest: Lotus Mainnet Infrastructure Plan: success

Show Plan
module.lotus-mainnet.digitalocean_volume.forest_volume[0]: Refreshing state... [id=e6a5dbee-39b4-11ee-a225-0a58ac14d046]
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.lotus-mainnet.data.digitalocean_project.forest_project: Reading...
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Read complete after 1s [id=ssh_keys/4003270040538543685]
module.lotus-mainnet.digitalocean_droplet.forest: Refreshing state... [id=369908824]
module.lotus-mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=8ef85851-bfa2-42b0-a7f5-c51714846157]
module.lotus-mainnet.data.digitalocean_project.forest_project: Read complete after 2s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.lotus-mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.lotus-mainnet.digitalocean_volume_attachment.forest_volume[0]: Refreshing state... [id=369908824-e6a5dbee-39b4-11ee-a225-0a58ac14d046-20230814132656286700000001]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # module.lotus-mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
        id              = "8ef85851-bfa2-42b0-a7f5-c51714846157"
        name            = "lotus-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (4 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      - inbound_rule {
          - port_range                = "all" -> null
          - protocol                  = "udp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - protocol                       = "icmp" -> null
        }
      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - port_range                     = "123" -> null
          - protocol                       = "udp" -> null
        }
      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - port_range                     = "all" -> null
          - protocol                       = "udp" -> null
        }
      + outbound_rule {
          + destination_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + destination_droplet_ids        = []
          + destination_kubernetes_ids     = []
          + destination_load_balancer_uids = []
          + destination_tags               = []
          + protocol                       = "icmp"
        }

        # (4 unchanged blocks hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

Forest: Snapshot Service Infrastructure Plan: success

Show Plan
module.daily_snapshot.data.external.sources_tar: Reading...
module.daily_snapshot.data.local_file.init: Reading...
module.daily_snapshot.data.local_file.init: Read complete after 0s [id=481a21029075b2266ba2c261d923790412864085]
module.daily_snapshot.data.external.sources_tar: Read complete after 0s [id=-]
module.daily_snapshot.data.local_file.sources: Reading...
module.daily_snapshot.data.digitalocean_project.forest_project: Reading...
module.daily_snapshot.data.digitalocean_ssh_keys.keys: Reading...
module.daily_snapshot.data.local_file.sources: Read complete after 0s [id=9dc2d1b1e2e5f5e0586afd830106fbc7c71d27b4]
module.daily_snapshot.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.daily_snapshot.digitalocean_droplet.forest: Refreshing state... [id=370055782]
module.daily_snapshot.digitalocean_firewall.forest-firewall: Refreshing state... [id=1f595143-5e85-4f6b-87df-cc5c2eb98521]
module.daily_snapshot.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.daily_snapshot.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.daily_snapshot.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-15T12:00:49Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "370055782" -> (known after apply)
      ~ ipv4_address         = "164.92.248.252" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.5" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-snapshot"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "iac",
        ]
      ~ urn                  = "do:droplet:370055782" -> (known after apply)
      ~ user_data            = "a8d6c8d2c02775f202733d515195e9d4a1231e08" -> "18742216cf280600151cb85a0412dafee27e1311" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.daily_snapshot.digitalocean_firewall.forest-firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest-firewall" {
      ~ droplet_ids     = [
          - 370055782,
        ] -> (known after apply)
        id              = "1f595143-5e85-4f6b-87df-cc5c2eb98521"
        name            = "forest-snapshot"
        tags            = []
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (5 unchanged blocks hidden)
    }

  # module.daily_snapshot.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:370055782",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

Changes to Outputs:
  ~ ip = [
      - [
          - "164.92.248.252",
        ],
      + [
          + (known after apply),
        ],
    ]

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

Forest: Lotus Mainnet Infrastructure Plan: success

Show Plan
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.lotus-mainnet.digitalocean_volume.forest_volume[0]: Refreshing state... [id=e6a5dbee-39b4-11ee-a225-0a58ac14d046]
module.lotus-mainnet.data.digitalocean_project.forest_project: Reading...
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.lotus-mainnet.digitalocean_droplet.forest: Refreshing state... [id=369908824]
module.lotus-mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=8ef85851-bfa2-42b0-a7f5-c51714846157]
module.lotus-mainnet.digitalocean_volume_attachment.forest_volume[0]: Refreshing state... [id=369908824-e6a5dbee-39b4-11ee-a225-0a58ac14d046-20230814132656286700000001]
module.lotus-mainnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.lotus-mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # module.lotus-mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
        id              = "8ef85851-bfa2-42b0-a7f5-c51714846157"
        name            = "lotus-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (4 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "all" -> null
          - protocol                  = "udp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - protocol                       = "icmp" -> null
        }
      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - port_range                     = "123" -> null
          - protocol                       = "udp" -> null
        }
      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - port_range                     = "all" -> null
          - protocol                       = "udp" -> null
        }
      + outbound_rule {
          + destination_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + destination_droplet_ids        = []
          + destination_kubernetes_ids     = []
          + destination_load_balancer_uids = []
          + destination_tags               = []
          + protocol                       = "icmp"
        }

        # (5 unchanged blocks hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

Forest: Mainnet Infrastructure Plan: success

Show Plan
module.mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.mainnet.data.digitalocean_project.forest_project: Reading...
module.mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.mainnet.digitalocean_droplet.forest: Refreshing state... [id=369728221]
module.mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=8b4e224d-5b22-4595-b283-757c8c2b2060]
module.mainnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.mainnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-13T07:01:16Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "369728221" -> (known after apply)
      ~ ipv4_address         = "164.92.130.114" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.9" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-mainnet"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "mainnet",
        ]
      ~ urn                  = "do:droplet:369728221" -> (known after apply)
      ~ user_data            = "6e1fae3daee32f6b30d54f86aa9401d105f132b4" -> "34d590a5a5189c0913ce2eb933980c1025491f9a" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 369728221,
        ] -> (known after apply)
        id              = "8b4e224d-5b22-4595-b283-757c8c2b2060"
        name            = "forest-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (3 unchanged attributes hidden)

      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - protocol                       = "icmp" -> null
        }
      - outbound_rule {
          - destination_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - destination_droplet_ids        = [] -> null
          - destination_kubernetes_ids     = [] -> null
          - destination_load_balancer_uids = [] -> null
          - destination_tags               = [] -> null
          - port_range                     = "123" -> null
          - protocol                       = "udp" -> null
        }
      + outbound_rule {
          + destination_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + destination_droplet_ids        = []
          + destination_kubernetes_ids     = []
          + destination_load_balancer_uids = []
          + destination_tags               = []
          + protocol                       = "icmp"
        }

        # (5 unchanged blocks hidden)
    }

  # module.mainnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:369728221",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

Signed-off-by: samuelarogbonlo <sbayo971@gmail.com>
@github-actions
Copy link

Forest: Calibnet Infrastructure Plan: success

Show Plan
module.calibnet.data.digitalocean_project.forest_project: Reading...
module.calibnet.data.digitalocean_ssh_keys.keys: Reading...
module.calibnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.calibnet.digitalocean_droplet.forest: Refreshing state... [id=371217371]
module.calibnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=eda4a75d-696f-424c-be39-f18cf84b8069]
module.calibnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.calibnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.calibnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-22T21:03:05Z" -> (known after apply)
      ~ disk                 = 160 -> (known after apply)
      ~ id                   = "371217371" -> (known after apply)
      ~ ipv4_address         = "64.226.90.185" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.2" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 8192 -> (known after apply)
        name                 = "forest-calibnet"
      ~ price_hourly         = 0.07143 -> (known after apply)
      ~ price_monthly        = 48 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "calibnet",
        ]
      ~ urn                  = "do:droplet:371217371" -> (known after apply)
      ~ user_data            = "b0254a1c7ad13f08b63d817395419b12b1ddc255" -> "7453683429223282d9175501e4578932f9d1a444" # forces replacement
      ~ vcpus                = 4 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.calibnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 371217371,
        ] -> (known after apply)
        id              = "eda4a75d-696f-424c-be39-f18cf84b8069"
        name            = "forest-calibnet-fw"
        tags            = [
            "calibnet",
        ]
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (6 unchanged blocks hidden)
    }

  # module.calibnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:371217371",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

Forest: Snapshot Service Infrastructure Plan: success

Show Plan
module.daily_snapshot.data.local_file.init: Reading...
module.daily_snapshot.data.local_file.init: Read complete after 0s [id=481a21029075b2266ba2c261d923790412864085]
module.daily_snapshot.data.external.sources_tar: Reading...
module.daily_snapshot.data.digitalocean_project.forest_project: Reading...
module.daily_snapshot.data.digitalocean_ssh_keys.keys: Reading...
module.daily_snapshot.data.external.sources_tar: Read complete after 0s [id=-]
module.daily_snapshot.data.local_file.sources: Reading...
module.daily_snapshot.data.local_file.sources: Read complete after 0s [id=d57ebe0d71e6896dd82b6ca569af3947b67ff261]
module.daily_snapshot.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.daily_snapshot.digitalocean_droplet.forest: Refreshing state... [id=370950223]
module.daily_snapshot.digitalocean_firewall.forest-firewall: Refreshing state... [id=1f595143-5e85-4f6b-87df-cc5c2eb98521]
module.daily_snapshot.data.digitalocean_project.forest_project: Read complete after 2s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.daily_snapshot.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.daily_snapshot.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-21T08:27:17Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "370950223" -> (known after apply)
      ~ ipv4_address         = "164.90.175.218" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.5" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-snapshot"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "iac",
        ]
      ~ urn                  = "do:droplet:370950223" -> (known after apply)
      ~ user_data            = "4406c505fc384e95a468bd2bb73444059a502431" -> "7a9014ed66c365e6334e03cf3b9918a513bb95db" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.daily_snapshot.digitalocean_firewall.forest-firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest-firewall" {
      ~ droplet_ids     = [
          - 370950223,
        ] -> (known after apply)
        id              = "1f595143-5e85-4f6b-87df-cc5c2eb98521"
        name            = "forest-snapshot"
        tags            = []
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (5 unchanged blocks hidden)
    }

  # module.daily_snapshot.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:370950223",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

Changes to Outputs:
  ~ ip = [
      - [
          - "164.90.175.218",
        ],
      + [
          + (known after apply),
        ],
    ]

─────────────────────────────────────────────────────────────────────────────

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.

@samuelarogbonlo
Copy link
Contributor

@LesnyRumcajs can you dismiss your stale review here also ?

@github-actions
Copy link

github-actions bot commented Sep 1, 2023

Forest: Calibnet Infrastructure Plan: success

Show Plan
module.calibnet.data.digitalocean_project.forest_project: Reading...
module.calibnet.data.digitalocean_ssh_keys.keys: Reading...
module.calibnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.calibnet.digitalocean_droplet.forest: Refreshing state... [id=371461636]
module.calibnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=eda4a75d-696f-424c-be39-f18cf84b8069]
module.calibnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.calibnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.calibnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-24T07:17:33Z" -> (known after apply)
      ~ disk                 = 160 -> (known after apply)
      ~ id                   = "371461636" -> (known after apply)
      ~ ipv4_address         = "139.59.129.141" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.2" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 8192 -> (known after apply)
        name                 = "forest-calibnet"
      ~ price_hourly         = 0.07143 -> (known after apply)
      ~ price_monthly        = 48 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "calibnet",
        ]
      ~ urn                  = "do:droplet:371461636" -> (known after apply)
      ~ user_data            = "b8b1b4971a08722fbbb50cfa6d173b31ccd0913d" -> "702748e0fb12096c0bf6b348b5299a35d6606bed" # forces replacement
      ~ vcpus                = 4 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.calibnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 371461636,
        ] -> (known after apply)
        id              = "eda4a75d-696f-424c-be39-f18cf84b8069"
        name            = "forest-calibnet-fw"
        tags            = [
            "calibnet",
        ]
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (6 unchanged blocks hidden)
    }

  # module.calibnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:371461636",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

github-actions bot commented Sep 1, 2023

Forest: Mainnet Infrastructure Plan: success

Show Plan
module.mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.mainnet.data.digitalocean_project.forest_project: Reading...
module.mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.mainnet.digitalocean_droplet.forest: Refreshing state... [id=371311302]
module.mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=d6f6ba3a-d071-4c03-a90c-09d5e7da3c28]
module.mainnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.mainnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-23T09:47:13Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "371311302" -> (known after apply)
      ~ ipv4_address         = "161.35.67.194" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.9" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-mainnet"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "mainnet",
        ]
      ~ urn                  = "do:droplet:371311302" -> (known after apply)
      ~ user_data            = "11d658944533ab9240cdaeb115a1ae538ee2cad2" -> "ab4a504ab71edfe38e42c8e0d71bf3b827a1d84a" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 371311302,
        ] -> (known after apply)
        id              = "d6f6ba3a-d071-4c03-a90c-09d5e7da3c28"
        name            = "forest-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (6 unchanged blocks hidden)
    }

  # module.mainnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:371311302",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

github-actions bot commented Sep 4, 2023

Forest: Mainnet Infrastructure Plan: success

Show Plan
module.mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.mainnet.data.digitalocean_project.forest_project: Reading...
module.mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.mainnet.digitalocean_droplet.forest: Refreshing state... [id=373118725]
module.mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=d6f6ba3a-d071-4c03-a90c-09d5e7da3c28]
module.mainnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.mainnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-09-04T07:49:10Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "373118725" -> (known after apply)
      ~ ipv4_address         = "161.35.70.163" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.9" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-mainnet"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "mainnet",
        ]
      ~ urn                  = "do:droplet:373118725" -> (known after apply)
      ~ user_data            = "7c733e6c46db5906e5073541a3845cb0df73c9ee" -> "69bd65b49924845654e69f86b96792ba7146f3ec" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 373118725,
        ] -> (known after apply)
        id              = "d6f6ba3a-d071-4c03-a90c-09d5e7da3c28"
        name            = "forest-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (6 unchanged blocks hidden)
    }

  # module.mainnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:373118725",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@samuelarogbonlo samuelarogbonlo marked this pull request as ready for review September 8, 2023 13:16
@github-actions
Copy link

github-actions bot commented Sep 8, 2023

Forest: Lotus Mainnet Infrastructure Plan: success

Show Plan
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.lotus-mainnet.data.digitalocean_project.forest_project: Reading...
module.lotus-mainnet.digitalocean_volume.forest_volume[0]: Refreshing state... [id=aa8f077e-418b-11ee-b561-0a58ac14d1dc]
module.lotus-mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.lotus-mainnet.digitalocean_droplet.forest: Refreshing state... [id=371461389]
module.lotus-mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=59869e43-ad73-48dc-8f93-2b5177b9f5f6]
module.lotus-mainnet.digitalocean_volume_attachment.forest_volume[0]: Refreshing state... [id=371461389-aa8f077e-418b-11ee-b561-0a58ac14d1dc-20230824071645946300000001]
module.lotus-mainnet.data.digitalocean_project.forest_project: Read complete after 1s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.lotus-mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.lotus-mainnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-08-24T07:15:12Z" -> (known after apply)
      ~ disk                 = 320 -> (known after apply)
      ~ id                   = "371461389" -> (known after apply)
      ~ ipv4_address         = "104.248.32.229" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.4" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "lotus-mainnet"
      ~ price_hourly         = 0.14286 -> (known after apply)
      ~ price_monthly        = 96 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "mainnet",
        ]
      ~ urn                  = "do:droplet:371461389" -> (known after apply)
      ~ user_data            = "0c5976b59f3deb9ab548103b7419b9d91750351a" -> "e7a603662fd83fbf2d68f62d6d06a598f89d3a43" # forces replacement
      ~ vcpus                = 8 -> (known after apply)
      ~ volume_ids           = [
          - "aa8f077e-418b-11ee-b561-0a58ac14d1dc",
        ] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.lotus-mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 371461389,
        ] -> (known after apply)
        id              = "59869e43-ad73-48dc-8f93-2b5177b9f5f6"
        name            = "lotus-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (3 unchanged attributes hidden)

        # (7 unchanged blocks hidden)
    }

  # module.lotus-mainnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:371461389",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

  # module.lotus-mainnet.digitalocean_volume_attachment.forest_volume[0] must be replaced
-/+ resource "digitalocean_volume_attachment" "forest_volume" {
      ~ droplet_id = 371461389 # forces replacement -> (known after apply) # forces replacement
      ~ id         = "371461389-aa8f077e-418b-11ee-b561-0a58ac14d1dc-20230824071645946300000001" -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@github-actions
Copy link

github-actions bot commented Sep 8, 2023

Forest: Mainnet Infrastructure Plan: success

Show Plan
module.mainnet.data.digitalocean_ssh_keys.keys: Reading...
module.mainnet.data.digitalocean_project.forest_project: Reading...
module.mainnet.data.digitalocean_ssh_keys.keys: Read complete after 0s [id=ssh_keys/4003270040538543685]
module.mainnet.digitalocean_droplet.forest: Refreshing state... [id=373118725]
module.mainnet.digitalocean_firewall.forest_firewall: Refreshing state... [id=d6f6ba3a-d071-4c03-a90c-09d5e7da3c28]
module.mainnet.data.digitalocean_project.forest_project: Read complete after 2s [id=da5e6601-7fd9-4d02-951e-390f7feb3411]
module.mainnet.digitalocean_project_resources.connect_forest_project: Refreshing state... [id=da5e6601-7fd9-4d02-951e-390f7feb3411]

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  ~ update in-place
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # module.mainnet.digitalocean_droplet.forest must be replaced
-/+ resource "digitalocean_droplet" "forest" {
      ~ created_at           = "2023-09-04T07:49:10Z" -> (known after apply)
      ~ disk                 = 300 -> (known after apply)
      ~ id                   = "373118725" -> (known after apply)
      ~ ipv4_address         = "161.35.70.163" -> (known after apply)
      ~ ipv4_address_private = "10.135.0.9" -> (known after apply)
      + ipv6_address         = (known after apply)
      ~ locked               = false -> (known after apply)
      ~ memory               = 16384 -> (known after apply)
        name                 = "forest-mainnet"
      ~ price_hourly         = 0.19494 -> (known after apply)
      ~ price_monthly        = 131 -> (known after apply)
      ~ private_networking   = true -> (known after apply)
      ~ status               = "active" -> (known after apply)
        tags                 = [
            "mainnet",
        ]
      ~ urn                  = "do:droplet:373118725" -> (known after apply)
      ~ user_data            = "7c733e6c46db5906e5073541a3845cb0df73c9ee" -> "23506dd0ff37b3dccaf6763adabb9bac94fc24dc" # forces replacement
      ~ vcpus                = 2 -> (known after apply)
      ~ volume_ids           = [] -> (known after apply)
      ~ vpc_uuid             = "46a525ac-fd37-47ea-bb10-95c1db0055f7" -> (known after apply)
        # (9 unchanged attributes hidden)
    }

  # module.mainnet.digitalocean_firewall.forest_firewall will be updated in-place
  ~ resource "digitalocean_firewall" "forest_firewall" {
      ~ droplet_ids     = [
          - 373118725,
        ] -> (known after apply)
        id              = "d6f6ba3a-d071-4c03-a90c-09d5e7da3c28"
        name            = "forest-mainnet-fw"
        tags            = [
            "mainnet",
        ]
        # (3 unchanged attributes hidden)

      - inbound_rule {
          - port_range                = "1234" -> null
          - protocol                  = "tcp" -> null
          - source_addresses          = [
              - "0.0.0.0/0",
              - "::/0",
            ] -> null
          - source_droplet_ids        = [] -> null
          - source_kubernetes_ids     = [] -> null
          - source_load_balancer_uids = [] -> null
          - source_tags               = [] -> null
        }
      + inbound_rule {
          + port_range                = "2345"
          + protocol                  = "tcp"
          + source_addresses          = [
              + "0.0.0.0/0",
              + "::/0",
            ]
          + source_droplet_ids        = []
          + source_kubernetes_ids     = []
          + source_load_balancer_uids = []
          + source_tags               = []
        }

        # (6 unchanged blocks hidden)
    }

  # module.mainnet.digitalocean_project_resources.connect_forest_project will be updated in-place
  ~ resource "digitalocean_project_resources" "connect_forest_project" {
        id        = "da5e6601-7fd9-4d02-951e-390f7feb3411"
      ~ resources = [
          - "do:droplet:373118725",
        ] -> (known after apply)
        # (1 unchanged attribute hidden)
    }

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

─────────────────────────────────────────────────────────────────────────────

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.

@lemmih lemmih merged commit b9dc1f1 into main Sep 8, 2023
9 checks passed
@elmattic elmattic deleted the elmattic/fix-binary-reorg branch January 23, 2024 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants