Inconsistency of terraform code for jfrog artifactory provider for federated repos. #104
Closed
Description
We are using below version of providers.
terraform {
required_providers {
artifactory = {
source = "jfrog/artifactory"
version = "9.7.0"
}
project = {
source = "jfrog/project"
version = "1.3.3"
}
xray = {
source = "jfrog/xray"
version = "2.0.1"
}
random = {
source = "hashicorp/random"
version = "3.5.1"
}
}
}
We are running terraform code against 2 artifcatory server ha1 and ha2. We have federated repos in each side and they are in sync.
Whenever we apply the terraform code to provision projects, local, remote, virtual and federated repos.
Projects were not getting assigned to federated repos, so we have used local-exec artifactory api call to set project for repositories.
But ever we reapply the terraform code on same. Projects were getting removed for all the repos.
Please help us resolving this inconsistency of terraform code artifactory.
Here is the code for one of our federated repo.
resource "artifactory_federated_maven_repository" "maven-bu-prod-fed_ha1" {
depends_on = [artifactory_federated_maven_repository.maven-bu-np-fed_ha1]
count = var.maven_enable ? 1 : 0
key = "${var.business_unit}-maven-prod"
project_key = project.BU_project_HA2.key
xray_index = true
#cleanup_on_delete = true
member {
enabled = true
url = "${var.artifactory-ha1_url}artifactory/${var.business_unit}-maven-prod"
}
member {
enabled = true
url = "${var.artifactory-ha2_url}artifactory/${var.business_unit}-maven-prod"
}
checksum_policy_type = "client-checksums"
handle_releases = true
handle_snapshots = false
suppress_pom_consistency_checks = false
project_environments = ["PROD"]
provider = artifactory.ha1
provisioner "local-exec" {
command = <<-EOT
exec curl --location --request PUT '${var.artifactory-ha2_url}access/api/v1/projects/_/attach/repositories/${project.BU_project_HA2.key}-maven-prod/${project.BU_project_HA2.key}?force=true/false' --header 'Authorization: Bearer ${var.artifactory-ha2_token}'
EOT
}
provisioner "local-exec" {
command = <<-EOT
exec curl -u 'admin:${var.ha2_password}' -X POST ${var.artifactory-ha2_url}artifactory/api/repositories/${project.BU_project_HA2.key}-maven-prod -H 'Content-Type: application/json' -d '{"environments":["PROD"]}'
EOT
}
}
resource "null_resource" "destroy_prod_maven" {
triggers = {
artifactory-ha2_url = var.artifactory-ha2_url
projectKey = project.BU_project_HA2.key
ha2_password = var.ha2_password
}
provisioner "local-exec" {
when = destroy
command = <<-EOT
exec curl -u 'admin:${self.triggers.ha2_password}' -X DELETE ${self.triggers.artifactory-ha2_url}artifactory/api/repositories/${self.triggers.projectKey}-maven-prod
EOT
}
}