terraform: providers list (#28818)

* terraform: move plugin index

* terraform: introduce update script for plugins

* terraform: update provider list

authored by zimbatm.tngl.sh and committed by GitHub 101ccc06 88bb678b

+428 -71
+1 -7
pkgs/applications/networking/cluster/terraform/default.nix
··· 71 71 }; 72 72 in withPlugins (_: []); 73 73 74 - plugins = { 75 - aws = import providers/aws.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 76 - azurerm = import providers/azurerm.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 77 - google = import providers/google.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 78 - kubernetes = import providers/kubernetes.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 79 - template = import providers/template.nix { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 80 - }; 74 + plugins = import ./providers { inherit stdenv lib buildGoPackage fetchFromGitHub; }; 81 75 in { 82 76 terraform_0_8_5 = generic { 83 77 version = "0.8.5";
-16
pkgs/applications/networking/cluster/terraform/providers/aws.nix
··· 1 - { stdenv, lib, buildGoPackage, fetchFromGitHub }: 2 - 3 - buildGoPackage rec { 4 - pname = "terraform-provider-aws"; 5 - name = "${pname}-${version}"; 6 - version = "0.1.4"; 7 - 8 - goPackagePath = "github.com/terraform-providers/terraform-provider-aws"; 9 - 10 - src = fetchFromGitHub { 11 - owner = "terraform-providers"; 12 - repo = pname; 13 - rev = "v${version}"; 14 - sha256 = "0hqyvp1bgyfqq2lkjq5m5qxybagnxl9zrqiqfnlrfigdp0y31iz8"; 15 - }; 16 - }
-16
pkgs/applications/networking/cluster/terraform/providers/azurerm.nix
··· 1 - { stdenv, lib, buildGoPackage, fetchFromGitHub }: 2 - 3 - buildGoPackage rec { 4 - pname = "terraform-provider-azurerm"; 5 - name = "${pname}-${version}"; 6 - version = "0.1.5"; 7 - 8 - goPackagePath = "github.com/terraform-providers/terraform-provider-azurerm"; 9 - 10 - src = fetchFromGitHub { 11 - owner = "terraform-providers"; 12 - repo = pname; 13 - rev = "v${version}"; 14 - sha256 = "02g8wnzwaii24nx5iin1yd4bx0rx22ly8aqhwa39mr5hsjj1qy4k"; 15 - }; 16 - }
+333
pkgs/applications/networking/cluster/terraform/providers/data.nix
··· 1 + { 2 + aws = 3 + { 4 + pname = "terraform-provider-aws"; 5 + version = "0.1.4"; 6 + src = { 7 + owner = "terraform-providers"; 8 + repo = "terraform-provider-aws"; 9 + rev = "v0.1.4"; 10 + sha256 = "0hqyvp1bgyfqq2lkjq5m5qxybagnxl9zrqiqfnlrfigdp0y31iz8"; 11 + }; 12 + }; 13 + azurerm = 14 + { 15 + pname = "terraform-provider-azurerm"; 16 + version = "0.1.6"; 17 + src = { 18 + owner = "terraform-providers"; 19 + repo = "terraform-provider-azurerm"; 20 + rev = "v0.1.6"; 21 + sha256 = "01hjr42gpkpwpz0chnkw8pf0yid0hqpdnfz65q5h2p8h627hg0c6"; 22 + }; 23 + }; 24 + bitbucket = 25 + { 26 + pname = "terraform-provider-bitbucket"; 27 + version = "0.1.0"; 28 + src = { 29 + owner = "terraform-providers"; 30 + repo = "terraform-provider-bitbucket"; 31 + rev = "v0.1.0"; 32 + sha256 = "0c5aiq0p425h7c600wg5h3601l40airwz6cs724lc72fycbb4s43"; 33 + }; 34 + }; 35 + chef = 36 + { 37 + pname = "terraform-provider-chef"; 38 + version = "0.1.0"; 39 + src = { 40 + owner = "terraform-providers"; 41 + repo = "terraform-provider-chef"; 42 + rev = "v0.1.0"; 43 + sha256 = "17fppyhxi0rd5v8khw2psdn2hdv5j79hxhinwkzrq5s4iccqk5dw"; 44 + }; 45 + }; 46 + circonus = 47 + { 48 + pname = "terraform-provider-circonus"; 49 + version = "0.1.0"; 50 + src = { 51 + owner = "terraform-providers"; 52 + repo = "terraform-provider-circonus"; 53 + rev = "v0.1.0"; 54 + sha256 = "0v05g91yg2zh4wczp8mi3hmvwb35z0y9044bwy67nm1l624xlj64"; 55 + }; 56 + }; 57 + cloudstack = 58 + { 59 + pname = "terraform-provider-cloudstack"; 60 + version = "0.1.1"; 61 + src = { 62 + owner = "terraform-providers"; 63 + repo = "terraform-provider-cloudstack"; 64 + rev = "v0.1.1"; 65 + sha256 = "09iqxpc5a6938qj1js2y9s4dcgk7hw69xga56ixpbbknms2yrhnb"; 66 + }; 67 + }; 68 + cobbler = 69 + { 70 + pname = "terraform-provider-cobbler"; 71 + version = "0.1.0"; 72 + src = { 73 + owner = "terraform-providers"; 74 + repo = "terraform-provider-cobbler"; 75 + rev = "v0.1.0"; 76 + sha256 = "1867aqlz1v7scybaia9yakaxw76lh6y2whhajv5pqy1ng58rcgiz"; 77 + }; 78 + }; 79 + consul = 80 + { 81 + pname = "terraform-provider-consul"; 82 + version = "0.1.0"; 83 + src = { 84 + owner = "terraform-providers"; 85 + repo = "terraform-provider-consul"; 86 + rev = "v0.1.0"; 87 + sha256 = "1d179m42iv2dy6wjzldllffwg6qxbg6gnvxrp6nzy75v7qp2aq94"; 88 + }; 89 + }; 90 + datadog = 91 + { 92 + pname = "terraform-provider-datadog"; 93 + version = "0.1.0"; 94 + src = { 95 + owner = "terraform-providers"; 96 + repo = "terraform-provider-datadog"; 97 + rev = "v0.1.0"; 98 + sha256 = "1k3p0zxffhabs1xb6aw9189vbmh3ax10q4xi1qgjfjvla22byqmk"; 99 + }; 100 + }; 101 + dme = 102 + { 103 + pname = "terraform-provider-dme"; 104 + version = "0.1.0"; 105 + src = { 106 + owner = "terraform-providers"; 107 + repo = "terraform-provider-dme"; 108 + rev = "v0.1.0"; 109 + sha256 = "1ipqw1sbx0i9rhxawsysrqxvf10z8ra2y86xwd4iz0f12x9drblv"; 110 + }; 111 + }; 112 + dnsimple = 113 + { 114 + pname = "terraform-provider-dnsimple"; 115 + version = "0.1.0"; 116 + src = { 117 + owner = "terraform-providers"; 118 + repo = "terraform-provider-dnsimple"; 119 + rev = "v0.1.0"; 120 + sha256 = "0gkd5i69ldm5zn34p3k68aqk798g6g0d60gw7yp316l7mskvrx7h"; 121 + }; 122 + }; 123 + dyn = 124 + { 125 + pname = "terraform-provider-dyn"; 126 + version = "0.1.0"; 127 + src = { 128 + owner = "terraform-providers"; 129 + repo = "terraform-provider-dyn"; 130 + rev = "v0.1.0"; 131 + sha256 = "1w727r2gz5hjmbzw9zir0n5nrr818adh4qj50n3vijqwbxciyq2p"; 132 + }; 133 + }; 134 + google = 135 + { 136 + pname = "terraform-provider-google"; 137 + version = "0.1.3"; 138 + src = { 139 + owner = "terraform-providers"; 140 + repo = "terraform-provider-google"; 141 + rev = "v0.1.3"; 142 + sha256 = "1aa1hz0yc4g746m6dl04hc70rcrzx0py8kpdch3kim475bspclnf"; 143 + }; 144 + }; 145 + http = 146 + { 147 + pname = "terraform-provider-http"; 148 + version = "0.1.0"; 149 + src = { 150 + owner = "terraform-providers"; 151 + repo = "terraform-provider-http"; 152 + rev = "v0.1.0"; 153 + sha256 = "1iy5fsl1j4wswbajnw0k6lagc2sz52idnswj1vmfc66x87ls0mah"; 154 + }; 155 + }; 156 + ignition = 157 + { 158 + pname = "terraform-provider-ignition"; 159 + version = "0.1.0"; 160 + src = { 161 + owner = "terraform-providers"; 162 + repo = "terraform-provider-ignition"; 163 + rev = "v0.1.0"; 164 + sha256 = "03jvngd3fjyqmdzg2847p0k2fjyqykgmdng5vss4rcsn0n3b9d39"; 165 + }; 166 + }; 167 + influxdb = 168 + { 169 + pname = "terraform-provider-influxdb"; 170 + version = "0.1.0"; 171 + src = { 172 + owner = "terraform-providers"; 173 + repo = "terraform-provider-influxdb"; 174 + rev = "v0.1.0"; 175 + sha256 = "0msc6maxsiwmsg8ppdfj1397c66llhaf15nc4hmr2h6dxqkb5wl5"; 176 + }; 177 + }; 178 + logentries = 179 + { 180 + pname = "terraform-provider-logentries"; 181 + version = "0.1.0"; 182 + src = { 183 + owner = "terraform-providers"; 184 + repo = "terraform-provider-logentries"; 185 + rev = "v0.1.0"; 186 + sha256 = "11fkb84gqcq59wk5kqn3h428jrc2gkl659zxmkdldad6jdll9ypa"; 187 + }; 188 + }; 189 + mailgun = 190 + { 191 + pname = "terraform-provider-mailgun"; 192 + version = "0.1.0"; 193 + src = { 194 + owner = "terraform-providers"; 195 + repo = "terraform-provider-mailgun"; 196 + rev = "v0.1.0"; 197 + sha256 = "1hjhjfxqbr43wa248c6hc91lx5b2gdw4vl92l2i6aqp17rbc0wfj"; 198 + }; 199 + }; 200 + nomad = 201 + { 202 + pname = "terraform-provider-nomad"; 203 + version = "0.1.0"; 204 + src = { 205 + owner = "terraform-providers"; 206 + repo = "terraform-provider-nomad"; 207 + rev = "v0.1.0"; 208 + sha256 = "03sb31l59hxpp6zmnizxdm21jipz4mrzz9czk6ahhx7c8q0n0na8"; 209 + }; 210 + }; 211 + oneandone = 212 + { 213 + pname = "terraform-provider-oneandone"; 214 + version = "0.1.0"; 215 + src = { 216 + owner = "terraform-providers"; 217 + repo = "terraform-provider-oneandone"; 218 + rev = "v0.1.0"; 219 + sha256 = "18bbpcprjib4d4skjdr76xjxi9091h5b3dls68y6bxkk6sh6av1i"; 220 + }; 221 + }; 222 + opsgenie = 223 + { 224 + pname = "terraform-provider-opsgenie"; 225 + version = "0.1.0"; 226 + src = { 227 + owner = "terraform-providers"; 228 + repo = "terraform-provider-opsgenie"; 229 + rev = "v0.1.0"; 230 + sha256 = "0zs0cl6jl4rijcs6vv5k8k5pyf0zs52dlgqcnb1gzslh8sg5pdkm"; 231 + }; 232 + }; 233 + ovh = 234 + { 235 + pname = "terraform-provider-ovh"; 236 + version = "0.1.0"; 237 + src = { 238 + owner = "terraform-providers"; 239 + repo = "terraform-provider-ovh"; 240 + rev = "v0.1.0"; 241 + sha256 = "052bnfw146h9nh3cw77clwwxbmw1gvaich2yw39v4b1ca8brm5dr"; 242 + }; 243 + }; 244 + pagerduty = 245 + { 246 + pname = "terraform-provider-pagerduty"; 247 + version = "0.1.2"; 248 + src = { 249 + owner = "terraform-providers"; 250 + repo = "terraform-provider-pagerduty"; 251 + rev = "v0.1.2"; 252 + sha256 = "1dqzi53bnk4qcjhlimr13352nzb1nsij7354zapz2sgnz21v89mm"; 253 + }; 254 + }; 255 + postgresql = 256 + { 257 + pname = "terraform-provider-postgresql"; 258 + version = "0.1.0"; 259 + src = { 260 + owner = "terraform-providers"; 261 + repo = "terraform-provider-postgresql"; 262 + rev = "v0.1.0"; 263 + sha256 = "0gg48b2zn18ynvhnabvyfvw5wif0m1a852798wahv8fbv5d1vh7j"; 264 + }; 265 + }; 266 + profitbricks = 267 + { 268 + pname = "terraform-provider-profitbricks"; 269 + version = "0.1.2"; 270 + src = { 271 + owner = "terraform-providers"; 272 + repo = "terraform-provider-profitbricks"; 273 + rev = "v0.1.2"; 274 + sha256 = "105l0rijqmp7kmd7wygnhnj02q7y1rz0r8pj2mjzncb5pr48m3qp"; 275 + }; 276 + }; 277 + scaleway = 278 + { 279 + pname = "terraform-provider-scaleway"; 280 + version = "0.1.1"; 281 + src = { 282 + owner = "terraform-providers"; 283 + repo = "terraform-provider-scaleway"; 284 + rev = "v0.1.1"; 285 + sha256 = "145wfcr5zjjk8vgx5xjf1hqh6h8jqxkhxbvv9x1w34i5bv809ch6"; 286 + }; 287 + }; 288 + tls = 289 + { 290 + pname = "terraform-provider-tls"; 291 + version = "0.1.0"; 292 + src = { 293 + owner = "terraform-providers"; 294 + repo = "terraform-provider-tls"; 295 + rev = "v0.1.0"; 296 + sha256 = "1n1k4dcqm8lp7mgj88xj8xc09mn769np4wg3cggnpcs6igbgdgg7"; 297 + }; 298 + }; 299 + triton = 300 + { 301 + pname = "terraform-provider-triton"; 302 + version = "0.1.2"; 303 + src = { 304 + owner = "terraform-providers"; 305 + repo = "terraform-provider-triton"; 306 + rev = "v0.1.2"; 307 + sha256 = "1jyrmc7932w7d8q96lmd0axf32psfic5d7hmwm1a25vzjzfn9nlw"; 308 + }; 309 + }; 310 + ultradns = 311 + { 312 + pname = "terraform-provider-ultradns"; 313 + version = "0.1.0"; 314 + src = { 315 + owner = "terraform-providers"; 316 + repo = "terraform-provider-ultradns"; 317 + rev = "v0.1.0"; 318 + sha256 = "0bq2y6bxdax7qnmq6vxh8pz9sqy1r3m05dv7q5dbv2xvba1b88hj"; 319 + }; 320 + }; 321 + # Broken with go/src/github.com/terraform-providers/terraform-provider-vsphere/vendor/github.com/hashicorp/terraform/config/testing.go:9: t.Helper undefined (type *testing.T has no field or method Helper) 322 + # vsphere = 323 + # { 324 + # pname = "terraform-provider-vsphere"; 325 + # version = "0.2.1"; 326 + # src = { 327 + # owner = "terraform-providers"; 328 + # repo = "terraform-provider-vsphere"; 329 + # rev = "v0.2.1"; 330 + # sha256 = "04vz34w28nx7j6wlikgjabrb2l5fxj9icfm8d34w2fffz63nk77l"; 331 + # }; 332 + # }; 333 + }
+12
pkgs/applications/networking/cluster/terraform/providers/default.nix
··· 1 + { stdenv, lib, buildGoPackage, fetchFromGitHub }: 2 + let 3 + list = import ./data.nix; 4 + toDrv = _: data: 5 + buildGoPackage rec { 6 + inherit (data) pname version; 7 + name = "${pname}-${version}"; 8 + goPackagePath = "github.com/${data.src.owner}/${data.src.repo}"; 9 + src = fetchFromGitHub data.src; 10 + }; 11 + in 12 + lib.mapAttrs toDrv list
-16
pkgs/applications/networking/cluster/terraform/providers/google.nix
··· 1 - { stdenv, lib, buildGoPackage, fetchFromGitHub }: 2 - 3 - buildGoPackage rec { 4 - pname = "terraform-provider-google"; 5 - name = "${pname}-${version}"; 6 - version = "0.1.3"; 7 - 8 - goPackagePath = "github.com/terraform-providers/terraform-provider-google"; 9 - 10 - src = fetchFromGitHub { 11 - owner = "terraform-providers"; 12 - repo = pname; 13 - rev = "v${version}"; 14 - sha256 = "1aa1hz0yc4g746m6dl04hc70rcrzx0py8kpdch3kim475bspclnf"; 15 - }; 16 - }
-16
pkgs/applications/networking/cluster/terraform/providers/kubernetes.nix
··· 1 - { stdenv, lib, buildGoPackage, fetchFromGitHub }: 2 - 3 - buildGoPackage rec { 4 - pname = "terraform-provider-kubernetes"; 5 - name = "${pname}-${version}"; 6 - version = "1.0.0"; 7 - 8 - goPackagePath = "github.com/terraform-providers/terraform-provider-kubernetes"; 9 - 10 - src = fetchFromGitHub { 11 - owner = "terraform-providers"; 12 - repo = pname; 13 - rev = "v${version}"; 14 - sha256 = "1kh7a83f98v6b4v3zj84ddhrg2hya4nmvrw0mjc26q12g4z2d5g6"; 15 - }; 16 - }
+82
pkgs/applications/networking/cluster/terraform/providers/update-all
··· 1 + #!/usr/bin/env nix-shell 2 + #! nix-shell -i bash -p bash coreutils curl jq nix 3 + # vim: ft=sh sw=2 et 4 + # 5 + # This scripts scans the github terraform-providers repo for new releases, 6 + # generates the corresponding nix code and finally generates an index of 7 + # all the providers. 8 + set -euo pipefail 9 + 10 + GET() { 11 + local url=$1 12 + echo "fetching $url" >&2 13 + curl -#fL "$url" 14 + } 15 + 16 + get_org_repos() { 17 + local org=$1 18 + GET "https://api.github.com/orgs/$org/repos" | jq -r '.[].name' 19 + } 20 + 21 + get_repo_tags() { 22 + local owner=$1 23 + local repo=$2 24 + GET "https://api.github.com/repos/$owner/$repo/git/refs/tags" | \ 25 + jq -r '.[].ref' | \ 26 + cut -d '/' -f 3- | \ 27 + sort --version-sort 28 + } 29 + 30 + prefetch_github() { 31 + local owner=$1 32 + local repo=$2 33 + local rev=$3 34 + nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz" 35 + } 36 + 37 + echo_entry() { 38 + local owner=$1 39 + local repo=$2 40 + local rev=$3 41 + local sha256=$4 42 + local version=${3:1} 43 + cat <<EOF 44 + { 45 + pname = "$repo"; 46 + version = "$version"; 47 + src = { 48 + owner = "$owner"; 49 + repo = "$repo"; 50 + rev = "$rev"; 51 + sha256 = "$sha256"; 52 + }; 53 + }; 54 + EOF 55 + } 56 + 57 + indent() { sed 's/^/ /'; } 58 + 59 + org=terraform-providers 60 + 61 + repos=$(get_org_repos "$org" | grep terraform-provider- | sort) 62 + 63 + 64 + # Get all the providers with index 65 + 66 + echo -n > data.nix 67 + 68 + echo "{" >> data.nix 69 + for repo in $repos; do 70 + echo "*** $repo ***" 71 + name=$(echo "$repo" | cut -d - -f 3-) 72 + last_tag=$(get_repo_tags "$org" "$repo" | tail -1) 73 + last_tag_sha256=$(prefetch_github "$org" "$repo" "$last_tag") 74 + 75 + { 76 + echo " $name =" 77 + echo_entry "$org" "$repo" "$last_tag" "$last_tag_sha256" | indent 78 + } >> data.nix 79 + done 80 + echo "}" >> data.nix 81 + 82 + echo Done.