diff --git a/runatlantis.io/docs/custom-workflows.md b/runatlantis.io/docs/custom-workflows.md index b118816774..2e52c51029 100644 --- a/runatlantis.io/docs/custom-workflows.md +++ b/runatlantis.io/docs/custom-workflows.md @@ -144,7 +144,7 @@ workflows: ``` ### cdktf -Here are the requirements to enable [cdktf](https://www.terraform.io/cdktf) +Here are the requirements to enable [cdktf](https://developer.hashicorp.com/terraform/cdktf) - A custom image with `cdktf` installed - The autoplan file updated to trigger off of `**/cdk.tf.json` diff --git a/runatlantis.io/docs/faq.md b/runatlantis.io/docs/faq.md index 4465e09f86..2cea8e8c92 100644 --- a/runatlantis.io/docs/faq.md +++ b/runatlantis.io/docs/faq.md @@ -1,9 +1,9 @@ # FAQ -**Q: Does Atlantis affect Terraform [remote state](https://www.terraform.io/docs/state/remote.html)?** +**Q: Does Atlantis affect Terraform [remote state](https://developer.hashicorp.com/terraform/language/state/remote)?** A: No. Atlantis does not interfere with Terraform remote state in any way. Under the hood, Atlantis is simply executing `terraform plan` and `terraform apply`. -**Q: How does Atlantis locking interact with Terraform [locking](https://www.terraform.io/docs/state/locking.html)?** +**Q: How does Atlantis locking interact with Terraform [locking](https://developer.hashicorp.com/terraform/language/state/locking)?** A: Atlantis provides locking of pull requests that prevents concurrent modification of the same infrastructure (Terraform project) whereas Terraform locking only prevents two concurrent `terraform apply`'s from happening. diff --git a/runatlantis.io/docs/locking.md b/runatlantis.io/docs/locking.md index 526d4f644a..65836d3b70 100644 --- a/runatlantis.io/docs/locking.md +++ b/runatlantis.io/docs/locking.md @@ -59,7 +59,7 @@ to delete the lock. Once a plan is discarded, you'll need to run `plan` again prior to running `apply` when you go back to that pull request. ## Relationship to Terraform State Locking -Atlantis does not conflict with [Terraform State Locking](https://www.terraform.io/docs/state/locking.html). Under the hood, all +Atlantis does not conflict with [Terraform State Locking](https://developer.hashicorp.com/terraform/language/state/locking). Under the hood, all Atlantis is doing is running `terraform plan` and `apply` and so all of the locking built in to those commands by Terraform isn't affected. diff --git a/runatlantis.io/docs/provider-credentials.md b/runatlantis.io/docs/provider-credentials.md index 48f641a1cd..793c082e94 100644 --- a/runatlantis.io/docs/provider-credentials.md +++ b/runatlantis.io/docs/provider-credentials.md @@ -63,7 +63,7 @@ Atlantis runs `terraform` with the following variables: | `atlantis_repo_name=atlantis` | The name of the repo the pull request is in. | | `atlantis_pull_num=200` | The pull request number. | -If you want to use `assume_role` with Atlantis and you're also using the [S3 Backend](https://www.terraform.io/docs/backends/types/s3.html), +If you want to use `assume_role` with Atlantis and you're also using the [S3 Backend](https://developer.hashicorp.com/terraform/language/settings/backends/s3), make sure to add the `role_arn` option: ```bash diff --git a/runatlantis.io/docs/repo-level-atlantis-yaml.md b/runatlantis.io/docs/repo-level-atlantis-yaml.md index 482d5b8129..cec55c429f 100644 --- a/runatlantis.io/docs/repo-level-atlantis-yaml.md +++ b/runatlantis.io/docs/repo-level-atlantis-yaml.md @@ -277,7 +277,7 @@ workflow: myworkflow | name | string | none | maybe | Required if there is more than one project with the same `dir` and `workspace`. This project name can be used with the `-p` flag. | | branch | string | none | no | Regex matching projects by the base branch of pull request (the branch the pull request is getting merged into). Only projects that match the PR's branch will be considered. By default, all branches are matched. | | dir | string | none | **yes** | The directory of this project relative to the repo root. For example if the project was under `./project1` then use `project1`. Use `.` to indicate the repo root. | -| workspace | string | `"default"` | no | The [Terraform workspace](https://www.terraform.io/docs/state/workspaces.html) for this project. Atlantis will switch to this workplace when planning/applying and will create it if it doesn't exist. | +| workspace | string | `"default"` | no | The [Terraform workspace](https://developer.hashicorp.com/terraform/language/state/workspaces) for this project. Atlantis will switch to this workplace when planning/applying and will create it if it doesn't exist. | | execution_order_group | int | `0` | no | Index of execution order group. Projects will be sort by this field before planning/applying. | | delete_source_branch_on_merge | bool | `false` | no | Automatically deletes the source branch on merge. | | repo_locking | bool | `true` | no | Get a repository lock in this project when plan. | diff --git a/runatlantis.io/docs/requirements.md b/runatlantis.io/docs/requirements.md index 6c8ab993c7..e300e63fe7 100644 --- a/runatlantis.io/docs/requirements.md +++ b/runatlantis.io/docs/requirements.md @@ -59,7 +59,7 @@ With modules, if you want `project1` automatically planned when `module1` is mod you need to create an `atlantis.yaml` file. See [atlantis.yaml Use Cases](repo-level-atlantis-yaml.html#configuring-planning) for more details. ### Terraform Workspaces -*See [Terraform's docs](https://www.terraform.io/docs/state/workspaces.html) if you are unfamiliar with workspaces.* +*See [Terraform's docs](https://developer.hashicorp.com/terraform/language/state/workspaces) if you are unfamiliar with workspaces.* If you're using Terraform `>= 0.9.0`, Atlantis supports workspaces through an `atlantis.yaml` file that tells Atlantis the names of your workspaces diff --git a/runatlantis.io/docs/security.md b/runatlantis.io/docs/security.md index 489e313a9b..3c4bed54a1 100644 --- a/runatlantis.io/docs/security.md +++ b/runatlantis.io/docs/security.md @@ -7,7 +7,7 @@ Atlantis could be exploited by * An attacker submitting a pull request that contains a malicious Terraform file that uses a malicious provider or an [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) that Atlantis then runs `terraform plan` on (which it does automatically unless you've turned off automatic plans). -* Running `terraform apply` on a malicious Terraform file with [local-exec](https://www.terraform.io/docs/provisioners/local-exec.html) +* Running `terraform apply` on a malicious Terraform file with [local-exec](https://developer.hashicorp.com/terraform/language/resources/provisioners/local-exec) ```tf resource "null_resource" "null" { provisioner "local-exec" { @@ -64,7 +64,7 @@ To prevent this, you could: requiring a "thumbs-up" on the PR before allowing the `plan` to continue. Conftest could be of use here. ### `--var-file-allowlist` -The files on your Atlantis install may be accessible as [variable definition files](https://www.terraform.io/language/values/variables#variable-definitions-tfvars-files) +The files on your Atlantis install may be accessible as [variable definition files](https://developer.hashicorp.com/terraform/language/values/variables#variable-definitions-tfvars-files) from pull requests by adding `atlantis plan -- -var-file=/path/to/file` comments. To mitigate this security risk, Atlantis has limited such access only to the files allowlisted by the `--var-file-allowlist` flag. If this argument is not provided, it defaults to diff --git a/runatlantis.io/docs/server-configuration.md b/runatlantis.io/docs/server-configuration.md index 0104071dd5..8fdc5c7ea1 100644 --- a/runatlantis.io/docs/server-configuration.md +++ b/runatlantis.io/docs/server-configuration.md @@ -950,7 +950,7 @@ and set `--autoplan-modules` to `false`. # or ATLANTIS_VAR_FILE_ALLOWLIST='/path/to/tfvars/dir' ``` - Comma-separated list of additional directory paths where [variable definition files](https://www.terraform.io/language/values/variables#variable-definitions-tfvars-files) can be read from. + Comma-separated list of additional directory paths where [variable definition files](https://developer.hashicorp.com/terraform/language/values/variables#variable-definitions-tfvars-files) can be read from. The paths in this argument should be absolute paths. Relative paths and globbing are currently not supported. If this argument is not provided, it defaults to Atlantis' data directory, determined by the `--data-dir` argument. diff --git a/runatlantis.io/docs/terraform-cloud.md b/runatlantis.io/docs/terraform-cloud.md index a0fb5c13af..bab22a5db0 100644 --- a/runatlantis.io/docs/terraform-cloud.md +++ b/runatlantis.io/docs/terraform-cloud.md @@ -15,7 +15,7 @@ Read the docs below :point_down: depending on your use-case. ## Using Atlantis With Free Remote State Storage To use Atlantis with Free Remote State Storage, you need to: -1. Migrate your state to Terraform Cloud. See [Migrating State from Local Terraform](https://www.terraform.io/docs/cloud/migrate/index.html) +1. Migrate your state to Terraform Cloud. See [Migrating State from Local Terraform](https://developer.hashicorp.com/terraform/cloud-docs/migrate) 1. Update any projects that are referencing the state you migrated to use the new location 1. [Generate a Terraform Cloud/Enterprise Token](#generating-a-terraform-cloud-enterprise-token) 1. [Pass the token to Atlantis](#passing-the-token-to-atlantis) @@ -25,7 +25,7 @@ Cloud. ## Using Atlantis With Terraform Cloud Remote Operations or Terraform Enterprise Atlantis integrates with the full version of Terraform Cloud and Terraform Enterprise -via the [remote backend](https://www.terraform.io/docs/backends/types/remote.html). +via the [remote backend](https://developer.hashicorp.com/terraform/language/settings/backends/remote). Atlantis will run `terraform` commands as usual, however those commands will actually be executed *remotely* in Terraform Cloud or Terraform Enterprise. @@ -41,7 +41,7 @@ Using Atlantis with Terraform Cloud or Terraform Enterprise gives you access to ### Getting Started To use Atlantis with Terraform Cloud Remote Operations or Terraform Enterprise, you need to: -1. Migrate your state to Terraform Cloud/Enterprise. See [Migrating State from Local Terraform](https://www.terraform.io/docs/cloud/migrate/index.html) +1. Migrate your state to Terraform Cloud/Enterprise. See [Migrating State from Local Terraform](https://developer.hashicorp.com/terraform/cloud-docs/migrate) 1. Update any projects that are referencing the state you migrated to use the new location 1. [Generate a Terraform Cloud/Enterprise Token](#generating-a-terraform-cloud-enterprise-token) 1. [Pass the token to Atlantis](#passing-the-token-to-atlantis) diff --git a/runatlantis.io/docs/using-atlantis.md b/runatlantis.io/docs/using-atlantis.md index fe499623b1..4759919daf 100644 --- a/runatlantis.io/docs/using-atlantis.md +++ b/runatlantis.io/docs/using-atlantis.md @@ -42,7 +42,7 @@ atlantis plan -w staging * `-d directory` Which directory to run plan in relative to root of repo. Use `.` for root. * Ex. `atlantis plan -d child/dir` * `-p project` Which project to run plan for. Refers to the name of the project configured in the repo's [`atlantis.yaml` file](repo-level-atlantis-yaml.html). Cannot be used at same time as `-d` or `-w` because the project defines this already. -* `-w workspace` Switch to this [Terraform workspace](https://www.terraform.io/docs/state/workspaces.html) before planning. Defaults to `default`. If not using Terraform workspaces you can ignore this. +* `-w workspace` Switch to this [Terraform workspace](https://developer.hashicorp.com/terraform/language/state/workspaces) before planning. Defaults to `default`. If not using Terraform workspaces you can ignore this. * `--verbose` Append Atlantis log to comment. ::: warning NOTE @@ -90,7 +90,7 @@ atlantis apply -w staging ### Options * `-d directory` Apply the plan for this directory, relative to root of repo. Use `.` for root. * `-p project` Apply the plan for this project. Refers to the name of the project configured in the repo's [`atlantis.yaml` file](repo-level-atlantis-yaml.html). Cannot be used at same time as `-d` or `-w`. -* `-w workspace` Apply the plan for this [Terraform workspace](https://www.terraform.io/docs/state/workspaces.html). If not using Terraform workspaces you can ignore this. +* `-w workspace` Apply the plan for this [Terraform workspace](https://developer.hashicorp.com/terraform/language/state/workspaces). If not using Terraform workspaces you can ignore this. * `--auto-merge-disabled` Disable [automerge](automerging.html) for this apply command. * `--verbose` Append Atlantis log to comment. diff --git a/runatlantis.io/guide/testing-locally.md b/runatlantis.io/guide/testing-locally.md index 45c0346b23..ee254acdbf 100644 --- a/runatlantis.io/guide/testing-locally.md +++ b/runatlantis.io/guide/testing-locally.md @@ -12,7 +12,7 @@ Steps: ## Install Terraform `terraform` needs to be in the `$PATH` for Atlantis. -Download from [https://www.terraform.io/downloads.html](https://www.terraform.io/downloads.html) +Download from [https://developer.hashicorp.com/terraform/downloads](https://developer.hashicorp.com/terraform/downloads) ``` unzip path/to/terraform_*.zip -d /usr/local/bin ``` diff --git a/server/core/terraform/terraform_client.go b/server/core/terraform/terraform_client.go index d2abe26145..3260b2d6d4 100644 --- a/server/core/terraform/terraform_client.go +++ b/server/core/terraform/terraform_client.go @@ -122,7 +122,7 @@ func NewClientWithDefaultVersion( localPath, err := exec.LookPath("terraform") if err != nil && defaultVersionStr == "" { - return nil, fmt.Errorf("terraform not found in $PATH. Set --%s or download terraform from https://www.terraform.io/downloads.html", defaultVersionFlagName) + return nil, fmt.Errorf("terraform not found in $PATH. Set --%s or download terraform from https://developer.hashicorp.com/terraform/downloads", defaultVersionFlagName) } if err == nil { localVersion, err = getVersion(localPath) diff --git a/server/core/terraform/terraform_client_test.go b/server/core/terraform/terraform_client_test.go index 3466f3a83a..2ce495f37e 100644 --- a/server/core/terraform/terraform_client_test.go +++ b/server/core/terraform/terraform_client_test.go @@ -58,7 +58,7 @@ func TestNewClient_LocalTFOnly(t *testing.T) { fakeBinOut := `Terraform v0.11.10 Your version of Terraform is out of date! The latest version -is 0.11.13. You can update by downloading from www.terraform.io/downloads.html +is 0.11.13. You can update by downloading from developer.hashicorp.com/terraform/downloads ` tmp, binDir, cacheDir := mkSubDirs(t) projectCmdOutputHandler := jobmocks.NewMockProjectCommandOutputHandler() @@ -93,7 +93,7 @@ func TestNewClient_LocalTFMatchesFlag(t *testing.T) { fakeBinOut := `Terraform v0.11.10 Your version of Terraform is out of date! The latest version -is 0.11.13. You can update by downloading from www.terraform.io/downloads.html +is 0.11.13. You can update by downloading from developer.hashicorp.com/terraform/downloads ` logger := logging.NewNoopLogger(t) tmp, binDir, cacheDir := mkSubDirs(t) @@ -132,7 +132,7 @@ func TestNewClient_NoTF(t *testing.T) { defer tempSetEnv(t, "PATH", tmp)() _, err := terraform.NewClient(logger, binDir, cacheDir, "", "", "", cmd.DefaultTFVersionFlag, cmd.DefaultTFDownloadURL, nil, true, projectCmdOutputHandler) - ErrEquals(t, "terraform not found in $PATH. Set --default-tf-version or download terraform from https://www.terraform.io/downloads.html", err) + ErrEquals(t, "terraform not found in $PATH. Set --default-tf-version or download terraform from https://developer.hashicorp.com/terraform/downloads", err) } // Test that if the default-tf flag is set and that binary is in our PATH diff --git a/testdrive/testdrive.go b/testdrive/testdrive.go index 53a839e414..5c5a87f06b 100644 --- a/testdrive/testdrive.go +++ b/testdrive/testdrive.go @@ -78,7 +78,7 @@ In this pull request we will learn how to use Atlantis. $$$ atlantis apply $$$ - **NOTE:** Because this example isn't using [remote state storage](https://www.terraform.io/docs/state/remote.html) the state will be lost once the pull request is merged. To use Atlantis properly, you **must** be using remote state. + **NOTE:** Because this example isn't using [remote state storage](https://developer.hashicorp.com/terraform/language/state/remote) the state will be lost once the pull request is merged. To use Atlantis properly, you **must** be using remote state. 1. Finally, merge the pull request to unlock this directory.