64 lines
2.2 KiB
HCL
64 lines
2.2 KiB
HCL
locals {
|
|
system = var.system
|
|
arch = var.arch
|
|
release = var.release
|
|
latest = (var.release == "latest" ? true : false)
|
|
install_url = "https://raw.githubusercontent.com/rancher/rke2/master/install.sh"
|
|
path = abspath(var.path)
|
|
|
|
selected_assets = (can(data.github_release.selected[0].assets) ? { for a in data.github_release.selected[0].assets : a.name => a.browser_download_url } : {})
|
|
latest_assets = (can(data.github_release.latest.assets) ? { for a in data.github_release.latest.assets : a.name => a.browser_download_url } : {})
|
|
assets = (local.latest ? local.latest_assets : local.selected_assets)
|
|
files = {
|
|
"rke2-images.${local.system}-${local.arch}.tar.gz" = local.assets["rke2-images.${local.system}-${local.arch}.tar.gz"],
|
|
"rke2.${local.system}-${local.arch}.tar.gz" = local.assets["rke2.${local.system}-${local.arch}.tar.gz"],
|
|
"sha256sum-${local.arch}.txt" = local.assets["sha256sum-${local.arch}.txt"],
|
|
"install.sh" = local.install_url,
|
|
}
|
|
}
|
|
|
|
data "github_release" "selected" {
|
|
count = (local.latest ? 0 : 1)
|
|
repository = "rke2"
|
|
owner = "rancher"
|
|
retrieve_by = "tag"
|
|
release_tag = local.release
|
|
}
|
|
|
|
data "github_release" "latest" {
|
|
repository = "rke2"
|
|
owner = "rancher"
|
|
retrieve_by = "latest"
|
|
}
|
|
|
|
# create a directory to download the files to if path does not exist
|
|
resource "local_file" "download_dir" {
|
|
depends_on = [
|
|
data.github_release.latest,
|
|
data.github_release.selected,
|
|
]
|
|
filename = "${local.path}/README.md"
|
|
content = <<-EOT
|
|
# RKE2 Downloads
|
|
This directory is used to download the RKE2 installer and images.
|
|
EOT
|
|
directory_permission = "0755"
|
|
file_permission = "0644"
|
|
}
|
|
|
|
# requires curl to be installed in the environment running terraform
|
|
resource "terraform_data" "download" {
|
|
depends_on = [
|
|
data.github_release.selected,
|
|
data.github_release.latest,
|
|
local_file.download_dir,
|
|
]
|
|
for_each = local.files
|
|
triggers_replace = each.value
|
|
provisioner "local-exec" {
|
|
command = <<-EOT
|
|
curl --clobber -L -s -o ${"${local.path}/${each.key}"} ${each.value}
|
|
EOT
|
|
}
|
|
}
|