Some checks failed
Code Quality & Security Scan / TFLint (push) Successful in 18s
Code Quality & Security Scan / Terraform Destroy (push) Has been skipped
Code Quality & Security Scan / Tfsec Security Scan (push) Successful in 29s
Code Quality & Security Scan / Checkov Security Scan (push) Successful in 39s
Code Quality & Security Scan / Terraform Validate (push) Successful in 38s
Code Quality & Security Scan / SonarQube Scan (push) Successful in 42s
Code Quality & Security Scan / Terraform Plan (push) Failing after 53s
Code Quality & Security Scan / Terraform Apply (push) Has been skipped
95 lines
2.5 KiB
HCL
95 lines
2.5 KiB
HCL
# Get Traefik network
|
|
data "docker_network" "traefik_network" {
|
|
name = "traefik_network"
|
|
}
|
|
|
|
# Create volumes for Renovate
|
|
resource "docker_volume" "renovate_config" {
|
|
name = "renovate-config"
|
|
}
|
|
|
|
resource "docker_volume" "renovate_cache" {
|
|
name = "renovate-cache"
|
|
}
|
|
|
|
# Pull Renovate image
|
|
resource "docker_image" "renovate" {
|
|
name = var.renovate_image
|
|
keep_locally = true
|
|
}
|
|
|
|
# Create Renovate container
|
|
resource "docker_container" "renovate" {
|
|
image = docker_image.renovate.image_id
|
|
name = var.container_name
|
|
hostname = var.container_name
|
|
restart = var.restart_policy
|
|
|
|
# Resource limits
|
|
memory = var.memory_limit
|
|
memory_swap = var.memory_swap_limit
|
|
|
|
# Environment variables for Renovate
|
|
env = concat(
|
|
[
|
|
"RENOVATE_PLATFORM=${data.vault_generic_secret.renovate.data["renovate_platform"]}",
|
|
"RENOVATE_ENDPOINT=${data.vault_generic_secret.renovate.data["renovate_endpoint"]}",
|
|
"RENOVATE_TOKEN=${data.vault_generic_secret.renovate.data["renovate_token"]}",
|
|
"RENOVATE_GIT_AUTHOR=${data.vault_generic_secret.renovate.data["renovate_git_author"]}",
|
|
"RENOVATE_AUTODISCOVER=${var.renovate_autodiscover}",
|
|
"LOG_LEVEL=${var.log_level}"
|
|
],
|
|
var.github_com_token != "" ? ["GITHUB_COM_TOKEN=${var.github_com_token}"] : [],
|
|
var.extra_env_vars
|
|
)
|
|
|
|
# Network configuration
|
|
networks_advanced {
|
|
name = data.docker_network.traefik_network.name
|
|
}
|
|
|
|
# Volumes
|
|
volumes {
|
|
volume_name = docker_volume.renovate_config.name
|
|
container_path = "/usr/src/app/config"
|
|
}
|
|
|
|
volumes {
|
|
volume_name = docker_volume.renovate_cache.name
|
|
container_path = "/tmp/renovate"
|
|
}
|
|
|
|
# Upload config.js if enabled
|
|
dynamic "upload" {
|
|
for_each = var.upload_config_file ? [1] : []
|
|
content {
|
|
content = templatefile("${path.module}/files/config.js.tpl", {
|
|
platform = var.renovate_platform
|
|
endpoint = var.renovate_endpoint
|
|
git_author = var.renovate_git_author
|
|
username = var.renovate_username
|
|
autodiscover = var.renovate_autodiscover
|
|
onboarding_config = var.renovate_onboarding_config
|
|
})
|
|
file = "/usr/src/app/config.js"
|
|
}
|
|
}
|
|
|
|
lifecycle {
|
|
ignore_changes = [
|
|
command,
|
|
entrypoint
|
|
]
|
|
}
|
|
}
|
|
|
|
# DNS CNAME record for Renovate (optional, if web interface is needed)
|
|
resource "dns_cname_record" "renovate_cname" {
|
|
count = var.create_cname_record ? 1 : 0
|
|
|
|
zone = "${var.domain}."
|
|
ttl = 300
|
|
name = coalesce(var.dns_name, var.container_name)
|
|
cname = "hosting.${var.domain}."
|
|
}
|