From 9dcf135e6fc148c4de6acfc6612a4e39035decf3 Mon Sep 17 00:00:00 2001 From: jianli-97 Date: Fri, 28 Jun 2024 17:26:57 +0800 Subject: [PATCH] support loongarch64 for generalos --- cmd/command/setup_opts.go | 2 +- data/assets_vfsdata.go | 115 +++++++++- .../generalos/libvirt/master.tf.template | 190 ++++++++++++++++ .../generalos/libvirt/worker.tf.template | 151 +++++++++++++ .../generalos/openstack/master.tf.template | 212 ++++++++++++++++++ .../generalos/openstack/worker.tf.template | 211 +++++++++++++++++ .../nestos/libvirt/master.tf.template | 151 +++++++++++++ .../nestos/libvirt/worker.tf.template | 111 +++++++++ .../nestos/openstack/master.tf.template | 212 ++++++++++++++++++ .../nestos/openstack/worker.tf.template | 211 +++++++++++++++++ pkg/configmanager/asset/clusterasset.go | 3 + pkg/terraform/generate.go | 3 + 12 files changed, 1570 insertions(+), 2 deletions(-) create mode 100644 data/data/terraform/loongarch64/generalos/libvirt/master.tf.template create mode 100644 data/data/terraform/loongarch64/generalos/libvirt/worker.tf.template create mode 100644 data/data/terraform/loongarch64/generalos/openstack/master.tf.template create mode 100644 data/data/terraform/loongarch64/generalos/openstack/worker.tf.template create mode 100644 data/data/terraform/loongarch64/nestos/libvirt/master.tf.template create mode 100644 data/data/terraform/loongarch64/nestos/libvirt/worker.tf.template create mode 100644 data/data/terraform/loongarch64/nestos/openstack/master.tf.template create mode 100644 data/data/terraform/loongarch64/nestos/openstack/worker.tf.template diff --git a/cmd/command/setup_opts.go b/cmd/command/setup_opts.go index bc02050..ccfad8b 100644 --- a/cmd/command/setup_opts.go +++ b/cmd/command/setup_opts.go @@ -26,7 +26,7 @@ func SetupDeployCmdOpts(deployCmd *cobra.Command) { flags := deployCmd.Flags() flags.StringVarP(&opts.Opts.ClusterConfigFile, "file", "f", "", "Location of the cluster deploy config file") flags.StringVarP(&opts.Opts.ClusterID, "clusterID", "", "", "Unique identifier for the cluster") - flags.StringVar(&opts.Opts.Arch, "arch", "", "Architecture for Kubernetes cluster deployment (e.g., amd64 or arm64)") + flags.StringVar(&opts.Opts.Arch, "arch", "", "Architecture for Kubernetes cluster deployment (e.g., amd64, arm64 or loong64)") flags.StringVarP(&opts.Opts.Platform, "platform", "", "", "Infrastructure platform for deploying the cluster (supports 'libvirt' 'openstack' 'pxe' 'ipxe')") // libvirt diff --git a/data/assets_vfsdata.go b/data/assets_vfsdata.go index 1f0ea0b..a3ebb40 100644 --- a/data/assets_vfsdata.go +++ b/data/assets_vfsdata.go @@ -240,7 +240,7 @@ var Assets = func() http.FileSystem { }, "/terraform": &vfsgen۰DirInfo{ name: "terraform", - modTime: time.Date(2024, 6, 27, 6, 35, 43, 414649093, time.UTC), + modTime: time.Date(2024, 6, 27, 9, 39, 25, 757515623, time.UTC), }, "/terraform/aarch64": &vfsgen۰DirInfo{ name: "aarch64", @@ -326,6 +326,90 @@ var Assets = func() http.FileSystem { compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x58\x6f\x6b\xe4\x36\x13\x7f\xef\x4f\x31\x8f\x79\x5e\xdc\x1d\x8d\xcf\xd9\xcd\x25\x69\x21\x94\x34\x57\xda\x40\x7b\x84\xd0\x50\xe8\x51\x8c\x62\x8f\x37\x62\x65\x4b\xd5\x1f\x27\x77\xc1\xdf\xbd\xc8\x92\xbd\x6b\xaf\x9d\xdd\xec\x25\x50\x8e\x03\x79\x34\xf3\xfb\xcd\x8c\x34\x9a\xd9\x68\x94\x92\xe4\x5c\x16\xf0\x18\x00\x48\xfc\xc7\x50\x89\x59\x22\x24\xaf\x68\x86\x52\x35\x62\x00\x2e\xb0\x54\x9a\xa4\x4b\x38\xf3\x12\x00\xc5\x8d\x4c\x11\xce\x20\xec\x40\x0e\x5a\xbb\x83\xce\xe0\x7d\xb7\x0a\xbd\x5d\x85\x52\x51\x5e\x5a\xc3\x59\x14\x47\xb1\x93\xd7\x81\xfd\x5f\x07\x41\x0b\x01\xe1\xca\xb2\xe1\x34\x0a\x65\x52\x92\x02\x01\xac\xed\xe3\x63\x74\xc5\x88\xb6\xb4\xd1\x8d\x42\x69\x77\xea\xda\x82\x09\xa2\xd4\x3d\x97\x19\x6c\x2a\x5e\xf9\x2d\xa7\xa8\xb1\x24\xa5\x76\x98\x03\xc5\x3f\x9a\xad\x4f\x1d\x26\x31\xfa\x2e\x31\x92\x8d\x60\x9e\x1b\x7d\x77\x73\xfd\x9b\xd3\x93\xb8\xb0\xb1\xc1\x88\xde\x75\xb3\x65\xd5\xea\x20\xa8\x88\xa4\xe4\x96\x21\x84\x29\x33\x4a\xa3\x4c\x68\xe6\xc2\xd4\x5f\x04\x3a\x6b\xa5\x25\x2d\x17\x01\x40\x86\x39\x31\x4c\x7b\xc0\x0b\x67\x70\xf9\x71\x03\x8a\xda\x74\x95\x29\x26\x29\x37\xa5\x76\x70\x7d\xdb\x3f\xb9\x5c\xa2\x8c\x2e\xec\xfe\xb4\xf9\x1d\x57\xda\x26\x65\xe8\x10\xa3\x4a\xbf\x71\x5e\xbd\xed\x41\xaf\x90\x7f\xf5\xa6\x75\x3d\xe5\x9a\x30\x7b\xc0\x5e\x5c\xdd\x4c\x22\x4a\x52\xec\x81\x78\x7d\xfe\xfb\x24\x62\x46\xd5\x72\x0f\xc8\x8f\x54\x2d\x27\x31\xb9\xa2\x05\x59\xe0\x8e\x67\xdc\x5d\x9a\x5f\x98\xb5\x6e\xef\x61\x0f\x9a\x54\x84\x32\x72\x4b\x19\xd5\x5f\x92\xaf\xbc\x7c\x36\xf6\xf9\x1a\xc0\x5f\xbc\xc4\xe9\x0b\x61\x4b\x2f\x23\x9a\xec\x91\x94\x9f\x38\xd7\x17\xbc\xcc\xe9\x62\x33\x35\xda\x56\x2d\x4b\x4a\xd4\xcf\x75\xfd\xd2\xdb\x7e\x42\x7d\xcf\xe5\x72\xda\x73\x2a\xf6\xf0\xf9\xf2\x6a\xe8\x2b\x3e\xec\xef\xeb\xcf\x0f\x63\xbe\x4a\xf4\xef\xe7\xea\x99\x4b\x52\x5e\x08\xa3\x31\xc9\x19\xa9\xb8\x4c\xaa\x59\x08\xa1\x5b\x3b\xce\xa6\xac\xfd\xd3\x52\x11\x19\xf5\xeb\x3d\x00\xf0\xaf\xe3\xa6\x42\x5b\xd1\x9f\x1b\xcd\x88\x96\x19\x3e\xfc\x1d\x00\x54\xa9\x30\x6a\x14\x51\x98\xa1\xae\x24\x05\x8c\x82\x4b\x52\x0c\x75\x6d\x05\x8d\xea\xda\x8d\xa1\x32\x55\x89\x30\xb7\x8c\xa6\x4d\x2f\x91\x06\x27\x13\x74\xcb\x78\xba\x54\x9a\x4b\xb2\xc0\xa4\xe2\xcc\x14\x98\x54\xf3\x10\x42\xb7\x5e\xcf\xd2\x93\x19\xda\x31\x3b\x8a\x7e\xc5\x1d\x22\xd8\x72\x9a\x0a\xd3\x85\xe4\x46\xb8\xf3\x6c\xbf\x9c\xaf\xab\x03\x6b\xda\xc5\xff\x1f\x2d\xd5\xaa\x23\xd4\x07\xf7\xcd\x8d\x0c\x9b\xdb\xa5\x52\x49\x85\xf6\xad\xb3\xc5\x81\x9c\x4b\x58\x9e\x2a\x68\x35\xed\x49\x19\x86\xbe\x4d\xe7\x92\x17\x89\xe0\x52\x37\x04\xb3\x59\x23\xd4\xbc\x15\xad\x09\xa9\xb0\x5d\x5f\xf3\x94\xb3\xe6\x1c\x52\xe1\x1a\x73\x4a\x33\xb9\xe6\x62\x1c\x35\xff\xde\x37\x6d\xbb\x7e\x92\xed\xe0\x70\x84\xcd\x0b\x07\x6c\x34\x2d\xbe\x99\xee\x34\x1e\xa1\xf3\xc2\x97\x0f\xee\xe8\x68\x3e\x42\xd7\x4a\x5f\x9e\x6f\x36\x3f\xf9\x7e\xec\xf0\xe6\xaf\x16\xe1\xe1\x28\x61\x2b\x7d\x79\xbe\xe3\xf1\x94\x1e\xbf\x5e\x4e\x0f\xe3\xd9\xd1\xe9\x58\x8c\x9d\xfc\x55\x38\x3f\xc4\xe3\x9c\x1f\x5e\xeb\x24\xe7\x71\x1c\x8f\x71\xce\x67\x27\xc7\x27\xff\x15\x4e\x93\xed\xc4\xb9\xe5\xb1\xed\x9e\xe9\xe6\xb1\x6d\xbf\x86\xed\x13\x60\xbc\x93\x6d\xf6\xd1\x29\xcd\xa9\x96\xd1\x0c\x79\x49\xcf\x7e\x60\xe9\x07\xc1\x00\xc0\xb7\xf9\x7e\x0f\xd8\xad\x31\x61\x6a\xa4\x1d\xfb\x9a\x16\xa0\x9c\xe5\xe7\x27\x5b\x4f\xd4\xae\x23\x0b\x68\x41\x36\xe6\xc7\x96\x7e\x63\xa3\xfd\xf1\x65\x47\xc0\xf5\x8c\x68\x2c\x04\x23\x1a\x73\xca\xf0\x4d\xcf\xf1\x76\x60\xec\x39\xfe\x1d\x3c\x42\x1b\xd1\x4e\x91\x42\xfd\xd6\xde\xb1\xd2\x0d\x4e\xfe\x9a\x8d\xa5\x6b\x35\x9c\xb9\x9b\x48\x1f\x30\x4b\xa8\x48\xaa\xa3\x21\x0f\x15\x7d\x86\xff\x9d\x41\x58\x1a\xc6\x42\xf8\xf1\x69\xc5\x1f\xc0\xaa\x3d\x75\x05\xbd\x9b\xb4\x5c\x24\x39\xe3\x44\xd3\x72\x41\x45\x3b\xc4\xd9\x6f\xb1\xc3\x7c\x22\x38\x67\x6d\x5c\xeb\x43\xe7\xf6\x91\xb1\x63\x24\x4a\xf1\x94\x12\xed\x6b\x20\x5f\x17\x6d\x16\xc2\x84\x1f\x2d\x5e\x42\x05\x9c\xc1\xf6\x20\x23\x1f\x62\xf4\x2e\x22\x59\x26\x51\xa9\x8d\xca\xe8\x32\x9b\xf5\x10\x47\x2a\xb7\x73\x27\x7a\x17\xd1\xec\x59\xc3\x96\x1f\x0a\x89\xd6\x24\xbd\x73\x09\xe8\x89\x76\x4e\xc0\x0b\xb9\x0b\xe0\xe9\x69\xd6\x70\x6d\x9b\x65\x23\xb7\x1a\x0f\x9c\x1b\x2d\x8c\x5e\xff\x75\x53\xe6\xdc\x45\x54\x11\x66\xb0\xfb\xe3\x4c\x57\x11\x83\xd3\xdb\xe2\xbc\x3f\xdc\x28\x8e\xd6\x2a\xc8\x55\xd4\x37\x5f\x07\x57\x39\xff\x06\x00\x00\xff\xff\xf0\x12\x5c\x27\x6f\x12\x00\x00"), }, + "/terraform/loongarch64": &vfsgen۰DirInfo{ + name: "loongarch64", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 913598426, time.UTC), + }, + "/terraform/loongarch64/generalos": &vfsgen۰DirInfo{ + name: "generalos", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 861597726, time.UTC), + }, + "/terraform/loongarch64/generalos/libvirt": &vfsgen۰DirInfo{ + name: "libvirt", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 861597726, time.UTC), + }, + "/terraform/loongarch64/generalos/libvirt/master.tf.template": &vfsgen۰CompressedFileInfo{ + name: "master.tf.template", + modTime: time.Date(2024, 6, 28, 6, 20, 27, 113268138, time.UTC), + uncompressedSize: 4430, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x9c\x58\x7f\x6f\xdb\x36\x13\xfe\xdf\x9f\xe2\x5e\xe2\x05\xd2\x06\x33\x95\x76\x45\x87\x06\x55\xda\x2e\xed\xb6\x00\xeb\xda\xa5\xed\x3a\xa0\x08\x04\x46\x3a\xdb\x44\x28\x52\x25\x29\x29\x5e\xe6\xef\x3e\x90\xa2\x64\x49\x96\xd3\x34\x06\x12\x59\xd4\xdd\x73\xcf\x1d\xef\x07\x65\x8b\x5a\xb3\x85\xd2\x39\xdc\xcc\x00\x34\x7e\x2d\xb9\xc6\x2c\x29\xb4\xaa\x78\x86\xda\xf8\x65\x00\xc1\x2f\x2b\xae\x2d\xc4\xe1\x1e\xc0\xa8\x52\xa7\x08\x31\x90\x2c\x67\x69\xc5\x53\xa6\xa3\x20\x45\x82\x48\x85\xda\x70\x25\x9d\xcc\x11\xfd\x89\x3e\x6d\xd6\x37\x33\xf7\xb7\x99\xcd\x5a\x1b\x40\x5a\x3d\x0f\x5e\x6a\xee\x34\x6e\x6e\xe8\x7b\xc1\xac\xa3\x46\x3f\x9d\x9f\x6d\x36\xc4\xe9\x54\x4c\x73\x76\x29\x10\x48\x2a\x4a\x63\x51\x27\x3c\x6b\xd4\xec\xba\x40\x07\x1f\x83\xb1\x9a\xcb\xe5\x0c\x20\xc3\x05\x2b\x85\x0d\x68\xa7\x8d\xc2\xd9\xeb\x1d\x28\x2e\x8d\x65\x32\xc5\x24\x55\xa5\xb4\x77\x84\x7b\xcb\x1c\x1a\x3d\x75\x2a\xfb\x11\x57\xca\x58\xc9\x72\x1c\x83\x0a\x6e\xec\x83\x06\xf9\xe1\x00\x7a\x8b\xfc\x5b\x50\xdd\x6c\xf6\x60\xf3\xe2\x1e\xa8\x67\xef\xc7\x78\x5d\x20\x8b\xea\x49\x92\xf2\x4c\xdf\x31\x00\xdd\xee\x9c\x9e\xbd\x3e\xdf\xbf\x3d\x0e\x75\xc9\x2c\xd6\x6c\xfd\xbd\xc0\xbf\x36\x6a\xb7\xec\x57\x51\xde\x23\x04\xa7\xef\x3f\xed\x8d\xa9\x66\xf9\x3d\x10\xcf\x5f\xbd\xdd\x8b\x98\x71\x73\x75\x0f\xc8\xd7\xdc\x5c\xed\xc5\xac\x6b\x79\x0f\xc8\xcf\x9f\xff\xd8\x8b\x98\x0a\x55\x66\x5c\x72\x7b\x0f\xdc\x9f\x95\xb2\xa7\x4a\x2e\xf8\xb2\x81\xd7\x18\x7a\x43\x5b\xd7\x49\xa1\x94\x20\x40\x9a\x8b\xc3\x77\x79\xed\x76\xfb\xff\x37\x15\xd3\x74\x5b\xca\x9b\xb9\x97\x69\x19\xb8\xe6\xc2\xb5\xbb\x2d\x98\x5d\xb9\xdb\xa8\x6a\xda\x4c\xdb\x6a\x22\x9e\xb3\x25\x9a\x68\x07\x88\x4c\x33\xa9\x94\x28\x5d\x35\x92\xf6\x4b\xc7\x06\xa6\xf9\x04\x39\x47\x41\x29\x11\x42\xb2\xf5\x8a\xfa\x7f\x0e\x60\xd6\x6f\x89\xfd\x2c\x7e\xf7\xe1\xcc\x71\xdc\x7c\x93\xd2\x36\x53\x7c\x1f\x82\xee\x13\x83\x63\x35\xec\x52\x5b\xda\x5b\xa9\x40\x7f\xa7\xf9\x7c\xf1\x1a\x94\xcb\x0c\xaf\x2f\x36\x73\x6f\x67\x06\x70\xc9\x0c\x06\xeb\x09\xcf\x7a\x8e\x35\x6b\x34\x5c\x78\xb6\x75\x7e\x6b\x6b\x7f\x10\xf8\x3f\x43\x56\x03\x4a\xce\xf6\x80\x0e\x1c\xc2\xa3\xa3\xc7\x4f\x86\x97\xe9\x40\x75\x39\x1a\x6a\x8a\x8c\x92\x76\x1b\xb5\x6f\x06\xec\xae\xb1\xa2\xdc\x28\x32\x70\xff\x16\xcf\x4b\x83\x3a\xc9\x98\x65\x10\x83\xbb\x50\x8b\x79\x21\x98\xc5\x64\xc1\x05\xd2\xee\x31\x3d\xa4\x1a\x65\x86\x1a\xb3\x81\x35\xe7\xb5\x57\x27\x03\x45\x02\xa4\x53\x1d\x39\xba\xc7\xcf\x56\x1d\xe2\xee\xab\x03\x7a\x30\x14\x6e\x83\x37\xe0\xf0\x03\xdc\x40\x1b\x8a\x31\xfc\x64\x88\x60\xf3\x70\x7a\xb7\x24\xda\x5a\x69\xb7\x4d\xdd\xb7\x9b\xe9\x3d\xe8\x97\x9b\x44\x7f\x7a\xc8\x55\xb6\x95\x92\xcc\xaf\x65\x2a\x67\x5c\xee\xd3\xa4\x42\xa5\xcc\x77\x0e\x96\x65\x1a\x8d\x41\x03\x31\x7c\x19\x48\xb5\x03\xee\x62\xe6\xe0\x56\x69\x11\x0e\x33\x28\x5d\x37\x74\x15\x60\x75\x89\xfe\x78\xe2\x04\xa4\x19\x3d\xf7\xa6\x83\x08\x80\x37\x98\x28\x29\xd6\x23\x45\xad\x4a\x8b\xad\xae\xb3\xb7\xdd\xaa\x1d\x2a\x5e\x26\x8c\xc7\x29\x99\xf0\xa8\x85\x66\xa5\x55\xc6\x32\x7f\x10\xf3\x26\x27\x43\xdf\x44\x8a\x00\x59\xa2\x44\xcd\x84\x32\x93\x6d\xe5\x8e\x7d\xe5\x4e\x69\x30\x03\x58\x70\x9d\xd7\x4c\x63\xaf\x1f\x45\xa5\xd1\x91\x59\x31\x8d\x11\x66\x57\x8f\x23\xa1\x94\x5c\x32\x9d\xae\x9e\x3e\x89\xfe\x7c\xf3\xf6\x53\xf2\xe6\x97\xb3\xb9\xe1\x02\xa5\x9d\x17\x0b\xc1\xcc\x8a\x6a\x56\xbb\x4d\x94\x95\x66\x79\x08\xa1\xcb\xdd\x0e\x71\xdc\xff\xbf\x62\x5e\x46\x5e\x3a\xba\x53\x45\x27\x7f\xbd\x3a\xff\x40\x17\x59\x73\x16\xed\x55\xca\xad\x64\x2b\xa6\xcd\xbc\x15\x1e\x51\x75\xe7\xd9\xb4\x28\x03\x59\x9f\xb9\x31\x90\xb4\x34\x56\xe5\xed\xf3\xca\x09\xdc\x12\xf9\xa2\x1c\x47\x33\xc7\x5c\xe9\xf5\x5e\x0d\xcd\xf2\xb1\x46\x57\xd0\x3b\x3d\x7a\xd8\x38\x69\x77\x4b\x0f\x29\xcf\x76\x0c\xb3\x74\xc5\x25\xf6\xc7\x8a\x1f\xf5\x7e\xf5\xe3\xba\xf0\x83\xac\x9f\x89\xad\x58\x28\x81\xf6\xe8\xd0\xd3\xbf\xaa\x72\xe2\xb2\xf7\x3a\x17\x21\x4a\xd7\xc6\x9f\x21\x9e\x3f\x9f\xbf\x79\xf7\x31\xbc\x2d\x3c\x7f\xe1\x9e\x87\x77\x86\x98\x3c\xa2\x47\x04\x5e\x9c\xb4\x0f\xaf\x8d\x38\x36\x76\x2d\xd0\xac\x10\xed\x50\x6c\x06\x93\x9f\xeb\x5c\x48\x73\x7c\x6d\x44\x4c\x56\xd6\x16\xc7\x51\x54\xd7\x35\xad\x7f\xa4\x4a\x2f\xa3\x47\xcf\x9e\x3d\x8b\xfe\xfe\xf0\x7b\xf4\x51\x33\x69\xdc\xa0\x26\x27\x1d\x8e\xb7\xa6\x4a\x5b\x94\x16\x54\xce\xed\xfc\x3a\x17\xf3\x0c\x53\xc1\x34\xb3\xde\xec\x1a\x0d\x01\x17\x33\x69\x9b\x9b\x68\xa4\xdd\x65\x56\xce\x6c\xba\x8a\x89\x54\x19\x3e\x78\xf8\xef\xcb\xc3\x9e\x99\x20\x9a\xaa\x62\x7d\x32\xf0\xc1\x2f\xb3\xa2\x10\xeb\x2e\xe9\x0c\x18\x14\x98\xda\x3e\x52\x34\x80\x8a\x76\xb1\x9a\xb5\x16\xe2\x64\x76\x3b\xc5\xa8\xe9\x1b\x51\x86\x15\x4f\xd1\x44\x7e\x56\xbf\x6c\xee\xe2\x83\x34\xd3\x2a\x3f\xb8\x88\x2c\xd3\x4b\xb4\xd1\xcb\xcb\xd2\xec\xba\xc2\xac\xd5\xfc\xb2\xb4\xe8\x9b\x48\x4c\xc6\x42\x41\xac\x62\xa2\xc4\xb9\x5a\x74\x3e\x1d\x98\xd4\xf0\x83\x29\x87\x3a\xc4\x6f\x7a\xd5\x2c\x6f\x73\xa4\x51\x68\xf2\xab\x69\xe8\xdc\x5c\x85\xfc\xbb\xe5\xd4\xe3\x4b\x64\xaa\x30\x00\x1c\xc9\x51\xb6\x03\xd4\xb5\x9c\x2e\xd1\xba\x96\x63\x08\x4f\x23\x8c\xc3\x84\x4b\x8b\x7a\xc1\x52\x0c\x9c\xda\xf5\xee\x34\x3a\x9a\xa4\xb4\xbb\x36\xc7\x0d\xd8\x0e\xea\xef\xea\xd3\xfd\x09\x39\xa5\xc7\x8b\xe1\x80\xff\x9f\x1b\xc1\xa5\x10\x04\x5e\x34\xf3\x74\x9f\xe4\x05\x1c\x83\x13\x6c\xc2\xc2\xb8\x4d\x16\x4a\x27\x02\x99\xc1\xd1\x84\x5c\x6a\x56\xac\x78\xda\xce\xc8\x7e\xcb\x88\x81\x54\x32\x25\xe1\x47\x07\x63\x51\x26\xed\xab\x40\xa0\x4d\x5a\x94\x54\x49\xa3\x04\x4e\x83\x14\x76\x1d\x5a\xbc\xcf\xd7\xa4\x50\x7e\x68\x92\x23\xd2\xfe\xfc\x10\xea\x9b\xb8\x39\xdb\xcc\x47\x9f\x96\xbd\xc0\x37\xf5\x40\xbb\x29\x4a\x0f\xe9\xce\xe6\xd1\x23\xda\x85\x73\xb6\xf9\x2f\x00\x00\xff\xff\x8c\x6e\x1c\xfb\x4e\x11\x00\x00"), + }, + "/terraform/loongarch64/generalos/libvirt/worker.tf.template": &vfsgen۰CompressedFileInfo{ + name: "worker.tf.template", + modTime: time.Date(2024, 6, 28, 6, 22, 9, 411715151, time.UTC), + uncompressedSize: 3748, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x9c\x57\x7f\x6f\xdb\x36\x13\xfe\x5f\x9f\xe2\x5e\xe2\x05\xd2\x06\x33\x95\x76\x45\x87\x06\x55\xda\x2e\xed\xb0\x00\xeb\xda\xf5\xc7\x3a\xa0\x08\x04\x46\x3a\xdb\x44\x28\x52\x25\x29\xc9\x9e\xe7\xef\x3e\x50\xa2\x64\x49\x91\xdd\xcc\x06\x0c\x5b\xe4\xdd\x73\x77\x8f\x9e\xe3\x49\x16\xb5\x66\x73\xa5\x33\xd8\x04\x00\x1a\xbf\x15\x5c\x63\x1a\xe7\x5a\x95\x3c\x45\x6d\xea\x65\x00\xc1\x6f\x4a\xae\x2d\x44\xfe\x1a\xc0\xa8\x42\x27\x08\x11\x90\x34\x63\x49\xc9\x13\xa6\x43\x6f\x45\xbc\x49\x89\xda\x70\x25\x9d\xcd\x19\xfd\x89\x3e\x6d\xd6\xb7\x81\xfb\x6e\x83\xa0\x8d\x01\xa4\xf5\xab\xc1\x0b\xcd\x9d\xc7\x66\x43\xdf\x0b\x66\x5d\x6a\xf4\xf3\x87\xab\xed\x96\x38\x9f\x92\x69\xce\x6e\x04\x02\x49\x44\x61\x2c\xea\x98\xa7\x8d\x9b\x5d\xe7\xe8\xe0\x23\x30\x56\x73\xb9\x08\x00\x52\x9c\xb3\x42\x58\x8f\x76\xd9\x38\x5c\xbd\xbe\x03\xc5\xa5\xb1\x4c\x26\x18\x27\xaa\x90\xf6\x9e\x70\x5f\x94\xbe\x45\x4d\x2f\x9d\xcb\x7e\xc4\xa5\x32\x56\xb2\x0c\xc7\xa0\x82\x1b\xfb\xa0\x41\x7e\x38\x80\xde\x21\xff\xea\x5d\xb7\xdb\x3d\xd8\x3c\x3f\x02\xf5\xea\xfd\x5e\xbc\x24\x2f\x8e\x00\xbc\x7c\xff\x79\x2f\xa2\x66\xd9\x11\x88\x1f\x5e\xbd\xdd\x8b\x98\x72\x73\x7b\x04\xe4\x6b\x6e\x6e\xf7\x62\x56\x95\x3c\x02\xf2\xcb\x97\xdf\xf7\x33\x29\x54\x91\x72\xc9\xed\x11\xb8\x3f\x2b\x65\x2f\x95\x9c\xf3\x45\x03\xaf\xd1\x77\x5a\xdb\x25\x71\xa9\x44\xe1\x14\x45\xda\x3f\x2e\x86\x53\x4a\x1d\x82\xfc\x7f\x53\x32\x4d\x77\xed\xb1\x9d\x79\xbb\x00\x20\x57\x4a\xec\xb3\x72\x7b\xce\x66\xd7\xd8\xfd\x16\x7c\xf7\xf1\x2a\x63\x0b\xf4\x4a\x3f\x90\xd4\xee\x0e\xd5\xdd\x04\xbd\x4f\x04\x2e\xe6\xb0\xdb\x76\xa9\xf7\xed\x7c\x7a\x77\xda\xe8\x6b\xed\x43\xb9\x4c\x71\x75\xbd\x9d\xd5\xb1\x02\x80\x1b\x66\xd0\x67\x10\xd7\x68\xf7\xa3\x61\x22\xe2\x24\x21\xfc\xef\x71\x7e\x83\xe4\x5c\x16\x83\xc4\xe0\x14\x1e\x9d\x3d\x7e\x32\xfc\x99\xa6\xad\x53\x8a\x57\x36\x19\x49\x67\xc7\xe1\x77\xc9\xbb\x2f\x6b\x94\x1b\x35\x24\xe1\x60\xf5\x85\x41\x1d\xa7\xcc\x32\x88\xc0\xfd\x50\x8b\x59\x2e\x98\xc5\x78\xce\x05\xd2\x6e\x9b\x9e\x52\x8d\x32\x45\x8d\xe9\x20\x9e\xab\xbb\x76\x27\x03\x47\x02\xa4\x73\x1d\x95\xba\xa7\xd2\xd6\x1d\xa2\xee\xaf\x03\x7a\x30\x34\x6e\xe9\x1b\xe4\xf0\x03\x6c\xa0\x25\x63\x0c\x3f\x49\x12\x6c\x1f\x4e\xdf\xaf\x54\x65\x8c\x4b\x02\x64\x81\x12\x35\x13\xca\x4c\x6b\xfd\x9e\x52\xbf\x4f\x2e\x01\xc0\x9c\xeb\xac\x62\x1a\x7b\x72\x0d\x0b\xa3\x43\xb3\x64\x1a\x43\x4c\x6f\x1f\x87\x42\x29\xb9\x60\x3a\x59\x3e\x7d\x12\xfe\xf1\xe6\xed\xe7\xf8\xcd\x2f\x57\x33\xc3\x05\x4a\x3b\xcb\xe7\x82\x99\x25\xd5\xac\x72\x37\x54\x96\x9a\x65\x7e\x8c\x3b\x02\x3b\xc4\xb2\x99\xe0\xed\x14\x0f\xbf\x61\x56\x84\xb5\x75\x78\x2f\x61\xc5\x7f\xbe\xfa\xf0\x91\xce\xd3\x66\xcc\xf7\x6e\xd7\xc1\x64\x4b\xa6\xcd\xac\x35\x1e\xa5\xea\x1e\x15\x92\xbc\xf0\xc9\x66\x2a\xad\xd1\x92\xc2\x58\x95\xb5\xfb\xa5\x33\x38\xc0\x7c\x5e\x8c\xd9\xcc\x30\x53\x7a\xbd\xd7\x43\xb3\x6c\xec\xd1\xa9\xaa\xf3\x98\xee\x5f\xda\x5d\xd2\x53\xca\xd3\x3b\x81\x59\xb2\xe4\x12\xfb\xa7\xce\x66\x43\xdf\x36\xab\x9f\xd6\x79\x7d\xba\x02\xb0\xc2\x2a\x63\x99\xde\x45\xb3\xba\xc0\xde\x1c\xe9\xf9\xdf\x96\x19\x09\x02\x80\x55\x26\x3c\x4b\x2b\x53\x0f\x94\xe7\xcf\x67\x6f\xde\x7d\xf2\x0f\x62\xcf\x5f\xb8\x7d\xff\x38\x16\x91\x47\xf4\x8c\xc0\x8b\x8b\x76\x73\x65\xc4\xb9\xb1\x6b\x81\x66\x89\x68\x87\x66\x01\x4c\x7e\x56\x99\x90\xe6\x7c\x65\x44\x44\x96\xd6\xe6\xe7\x61\x58\x55\x15\xad\x7e\xa4\x4a\x2f\xc2\x47\xcf\x9e\x3d\x0b\xff\xfa\xf8\x5b\xf8\x49\x33\x69\xdc\xf4\x20\x17\x1d\x4e\x1d\x4d\x15\x36\x2f\x2c\xa8\x8c\xdb\xd9\x2a\x13\xb3\x14\x13\xc1\x34\xb3\x75\xd8\x35\x1a\x02\x8e\x33\x69\x9b\x8b\x70\xe4\xdd\x29\x2b\x63\x36\x59\x46\x44\xaa\x14\x1f\x3c\xfc\xe7\xe5\x69\x2f\x8c\x37\x4d\x54\xbe\xbe\x18\xd4\x50\x2f\xb3\x3c\x17\xeb\x4e\x74\x06\x0c\x0a\x4c\x6c\x1f\x29\x1c\x40\x85\x77\xb1\x9a\xb5\x16\xe2\x22\x38\x9c\x62\xd8\x9c\x1b\x61\x8a\x25\x4f\xd0\x84\xf5\xc8\x78\xd9\x5c\x45\x27\x49\xaa\x55\x76\x72\x1d\x5a\xa6\x17\x68\xc3\x97\x37\x85\xb9\x5b\x0a\xb3\x56\xf3\x9b\xc2\x62\x7d\x88\x44\x64\x6c\xe4\xcd\x4a\x26\x0a\x9c\xa9\x79\x57\xd3\x89\x49\x0c\x3f\x99\x2a\xa8\x43\xfc\x6e\x55\xcd\xf2\x4e\x23\x8d\x43\xa3\xaf\xad\x33\x72\xf5\x78\xfd\xf9\x31\xcc\xd3\x5e\x97\x34\x6b\xb4\x6e\x91\xa9\xc6\x00\x70\x49\x8e\xd4\x0e\x50\x55\x72\xba\x45\xab\x4a\x8e\x21\xea\x34\x24\xda\x4a\xe9\xdb\x98\x4b\x8b\x7a\xce\x12\xf4\x39\xb5\xeb\x87\x1e\x92\x24\xfa\xf7\x96\x6e\x50\xfc\xa7\x23\x1a\x80\xa5\xa9\x46\x63\xd0\x4c\xfa\xf1\x7c\x38\x60\xfe\x17\x01\x91\x85\x10\x04\x5e\xc0\xd7\x43\x96\xd7\x70\x0e\xce\xb0\x61\x84\x71\x1b\xcf\x95\x8e\x05\x32\x83\x3b\xae\xea\xea\x17\x9a\xe5\x4b\x9e\xb4\xaf\x6c\xfd\xd3\x22\x02\x52\xca\x84\xf8\x57\x39\x63\x51\xc6\xf5\x76\x04\xc4\xa7\x4d\x5a\x94\x44\x49\xa3\x04\x4e\x83\xe4\x76\xed\x4f\xf7\x5a\xaa\x71\xae\xea\x77\x42\x72\x46\xda\x97\x3a\xdf\xda\x84\xe7\xe5\x93\x66\x34\xd6\x8a\xec\x89\xa1\x69\x05\xda\x0d\x50\x7a\x4a\xef\xdc\x37\x7a\x46\x3b\x3a\x83\xed\xbf\x01\x00\x00\xff\xff\xd3\x86\xc8\x9b\xa4\x0e\x00\x00"), + }, + "/terraform/loongarch64/generalos/openstack": &vfsgen۰DirInfo{ + name: "openstack", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 862597739, time.UTC), + }, + "/terraform/loongarch64/generalos/openstack/master.tf.template": &vfsgen۰CompressedFileInfo{ + name: "master.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 862597739, time.UTC), + uncompressedSize: 4738, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x58\x5f\x6f\xdb\x36\x10\x7f\xd7\xa7\xb8\x09\x7b\x68\x8b\x45\x55\xec\x34\xc9\x06\x04\x43\x96\x0e\x5b\x80\xb5\x08\x82\xe5\x65\xc5\x20\x30\xd2\xc9\x21\x4c\x89\x1c\xff\xa8\x69\x03\x7d\xf7\x81\x22\x25\x5b\xb2\x14\x3b\x6e\x02\x14\x45\x01\xea\x78\xf7\xfb\xdd\x1d\x79\xbc\x73\x34\x4a\x49\x72\x2e\x0b\x78\x08\x00\x24\xfe\x67\xa8\xc4\x2c\x11\x92\x57\x34\x43\xa9\x1a\x31\x00\x17\x58\x2a\x4d\xd2\x25\x9c\x79\x09\x80\xe2\x46\xa6\x08\x67\x10\x76\x20\x07\xad\xdd\x41\x67\xf0\xb6\x5b\x85\xde\xae\x42\xa9\x28\x2f\xad\xe1\x2c\x8a\xa3\xd8\xc9\xeb\xc0\xfe\xaf\x83\xa0\x85\x80\x70\x65\xd9\x70\x1a\x85\x32\x29\x49\x81\x00\xd6\xf6\xe1\x21\xba\x62\x44\x5b\xda\xe8\x46\xa1\xb4\x3b\x75\x6d\xc1\x04\x51\xea\x33\x97\x19\x6c\x2a\x5e\xf9\x2d\xa7\xa8\xb1\x24\xa5\x76\x98\x03\xc5\xbf\x9b\xad\x8f\x1d\x26\x31\xfa\x2e\x31\x92\x8d\x60\x9e\x1b\x7d\x77\x73\xfd\x97\xd3\x93\xb8\xb0\xb1\xc1\x88\xde\x75\xb3\x65\xd5\xea\x20\xa8\x88\xa4\xe4\x96\x21\x84\x29\x33\x4a\xa3\x4c\x68\xe6\xc2\xd4\x5f\x04\x3a\x6b\xa5\x25\x2d\x17\x01\x40\x86\x39\x31\x4c\x7b\xc0\x0b\x67\x70\xf9\x7e\x03\x8a\xda\x74\x95\x29\x26\x29\x37\xa5\xde\x11\xee\x03\xb1\x68\xd1\x85\x35\x99\x46\xbc\xe3\x4a\xdb\x3c\x0d\x41\x19\x55\xfa\x95\x43\x7e\xdd\x83\x5e\x21\xff\xe9\x4d\xeb\x7a\xca\x5b\x61\xf6\x80\xbd\xb8\xba\x99\x44\x94\xa4\xd8\x03\xf1\xfa\xfc\xc3\x24\x62\x46\xd5\x72\x0f\xc8\xf7\x54\x2d\x27\x31\xb9\xa2\x05\x59\xe0\x8e\xe7\xd4\xdd\xa3\x3f\x98\xb5\x6e\xaf\x66\x0f\x9a\x54\x84\x32\x72\x4b\x19\xd5\x5f\x92\xaf\xbc\x7c\x32\xf6\xf9\x1a\xc0\x3f\xbc\xc4\xe9\x0b\x61\xab\x31\x23\x9a\xec\x91\x94\xdf\x38\xd7\x17\xbc\xcc\xe9\x62\x33\x35\xda\x16\x32\x4b\x4a\xd4\x4f\x75\xfd\xd2\xdb\x7e\x44\xfd\x99\xcb\xe5\xb4\xe7\x54\xec\xe1\xf3\xe5\xd5\xd0\x57\xbc\xdf\xdf\xd7\xdf\xef\xc7\x7c\x95\xe8\x9f\xd4\xd5\xcb\x97\xa4\xbc\x10\x46\x63\x92\x33\x52\x71\x99\x54\xb3\x10\x42\xb7\x76\x9c\x4d\xa5\xfb\xd7\xa6\x22\x32\xea\x3f\x01\x01\x80\x7f\x30\x37\x15\xda\x8a\xfe\xd4\x68\x46\xb4\xcc\xf0\xfe\xdf\x00\xa0\x4a\x85\x51\xa3\x88\xc2\x0c\x75\x25\x29\x60\x14\x5c\x92\x62\xa8\x6b\x2b\x68\x54\xd7\x6e\x0c\x95\xa9\x4a\x84\xb9\x65\x34\x6d\xda\x8b\x34\x38\x99\xa0\x5b\xc6\xd3\xa5\xd2\x5c\x92\x05\x26\x15\x67\xa6\xc0\xa4\x9a\x87\x10\xba\xf5\x7a\x96\x1e\xcd\xd0\x8e\xd9\x51\xf4\x2b\xee\x10\xc1\x96\xd3\x54\x98\x2e\x24\x37\xc2\x9d\x67\xfb\xe5\x7c\x5d\x1d\x58\xd3\x41\x7e\x7c\xb0\x54\xab\x26\x51\x1f\x14\xcd\x8d\x0c\x9b\xdb\xa5\x52\x49\x85\xf6\xdd\xb4\xc5\x81\x9c\x4b\x58\x9e\x2a\x68\x35\xed\x49\x19\x86\xbe\x73\xe7\x92\x17\x89\xe0\x52\x37\x04\xb3\x59\x23\xd4\xbc\x15\xad\x09\xa9\xb0\x83\x80\xe6\x29\x67\xcd\x39\xa4\xc2\xf5\xea\x94\x66\x72\xcd\xc5\x38\x6a\xfe\xbd\x6d\x3a\x79\xfd\x28\xdb\xc1\xe1\x08\x9b\x17\x0e\xd8\x68\x5a\x7c\x33\xdd\x69\x3c\x42\xe7\x85\xcf\x1f\xdc\xd1\xd1\x7c\x84\xae\x95\x3e\x3f\xdf\x6c\x7e\xf2\xf3\xd8\xe1\xcd\x5f\x2c\xc2\xc3\x51\xc2\x56\xfa\xfc\x7c\xc7\xe3\x29\x3d\x7e\xb9\x9c\x1e\xc6\xb3\xa3\xd3\xb1\x18\x3b\xf9\x8b\x70\xbe\x8b\xc7\x39\xdf\xbd\xd4\x49\xce\xe3\x38\x1e\xe3\x9c\xcf\x4e\x8e\x4f\xbe\x17\x4e\x93\xed\xc4\xb9\xe5\xb1\xed\x9e\xe9\xe6\xb1\x6d\xbf\x86\xed\x13\x60\xbc\x93\x6d\xf6\xd1\x29\xcd\xa9\x96\xd1\x0c\x79\x49\xcf\x7e\x60\xe9\x07\xc1\x00\xc0\xb7\xf9\x7e\x0f\xd8\xad\x31\x61\x6a\xa4\x1d\xfb\x9a\x16\xa0\x9c\xe5\xa7\x47\x5b\x4f\xd4\xae\x23\x0b\x68\x41\x36\xe6\xc7\x96\x7e\x63\xa3\xfd\x3d\x66\x47\xc0\xf5\x8c\x68\x2c\x04\x23\x1a\x73\xca\xf0\x55\xcf\xf1\x76\x60\xec\x39\xfe\x13\x3c\x40\x1b\xd1\x4e\x91\x42\xfd\xda\xde\xb1\xd2\x0d\x4e\xfe\x9a\x8d\xa5\x6b\x35\x9c\xb9\x9b\x48\xef\x31\x4b\xa8\x48\xaa\xa3\x21\x0f\x15\x7d\x86\x1f\xce\x20\x2c\x0d\x63\x21\xfc\xfa\xb8\xe2\x2f\x60\xd5\x1e\xbb\x82\xde\x4d\x5a\x2e\x92\x9c\x71\xa2\x69\xb9\xa0\xa2\x1d\xe2\xec\xb7\xd8\x61\x3e\x11\x9c\xb3\x36\xae\xf5\xa1\x73\xfb\xc8\xd8\x31\x12\xa5\x78\x4a\x89\xf6\x35\x90\xaf\x8b\x36\x0b\x61\xc2\x8f\x16\x2f\xa1\x02\xce\x60\x7b\x90\x91\x0f\x31\x7a\x13\x91\x2c\x93\xa8\xd4\x46\x65\x74\x99\xcd\x7a\x88\x23\x95\xdb\xb9\x13\xbd\x89\x68\xf6\xa4\x61\xcb\x0f\x85\x44\x6b\x92\xde\xb9\x04\xf4\x44\x3b\x27\xe0\x99\xdc\x05\xf0\xf4\x34\x6b\xb8\xb6\xcd\xb2\x91\x5b\x8d\x07\xce\x8d\x16\x46\xaf\xff\xba\x29\x73\xee\x22\xaa\x08\x33\xd8\xfd\xbd\xa6\xab\x88\xc1\xe9\x6d\x71\xde\x1f\x6e\x14\x47\x6b\x15\xe4\x2a\xea\x9b\xaf\x83\xab\x9c\xff\x03\x00\x00\xff\xff\x81\x9a\x0c\xab\x82\x12\x00\x00"), + }, + "/terraform/loongarch64/generalos/openstack/worker.tf.template": &vfsgen۰CompressedFileInfo{ + name: "worker.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 862597739, time.UTC), + uncompressedSize: 4719, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x58\x6f\x6b\xe4\x36\x13\x7f\xef\x4f\x31\x8f\x79\x5e\xdc\x1d\x8d\xcf\xd9\xcd\x25\x69\x21\x94\x34\x57\xda\x40\x7b\x84\xd0\x50\xe8\x51\x8c\x62\x8f\x37\x62\x65\x4b\xd5\x1f\x27\x77\xc1\xdf\xbd\xc8\x92\xbd\x6b\xaf\x9d\xdd\xec\x25\x50\x8e\x03\x79\x34\xf3\xfb\xcd\x8c\x34\x9a\xd9\x68\x94\x92\xe4\x5c\x16\xf0\x18\x00\x48\xfc\xc7\x50\x89\x59\x22\x24\xaf\x68\x86\x52\x35\x62\x00\x2e\xb0\x54\x9a\xa4\x4b\x38\xf3\x12\x00\xc5\x8d\x4c\x11\xce\x20\xec\x40\x0e\x5a\xbb\x83\xce\xe0\x7d\xb7\x0a\xbd\x5d\x85\x52\x51\x5e\x5a\xc3\x59\x14\x47\xb1\x93\xd7\x81\xfd\x5f\x07\x41\x0b\x01\xe1\xca\xb2\xe1\x34\x0a\x65\x52\x92\x02\x01\xac\xed\xe3\x63\x74\xc5\x88\xb6\xb4\xd1\x8d\x42\x69\x77\xea\xda\x82\x09\xa2\xd4\x3d\x97\x19\x6c\x2a\x5e\xf9\x2d\xa7\xa8\xb1\x24\xa5\x76\x98\x03\xc5\x3f\x9a\xad\x4f\x1d\x26\x31\xfa\x2e\x31\x92\x8d\x60\x9e\x1b\x7d\x77\x73\xfd\x9b\xd3\x93\xb8\xb0\xb1\xc1\x88\xde\x75\xb3\x65\xd5\xea\x20\xa8\x88\xa4\xe4\x96\x21\x84\x29\x33\x4a\xa3\x4c\x68\xe6\xc2\xd4\x5f\x04\x3a\x6b\xa5\x25\x2d\x17\x01\x40\x86\x39\x31\x4c\x7b\xc0\x0b\x67\x70\xf9\x71\x03\x8a\xda\x74\x95\x29\x26\x29\x37\xa5\x76\x70\x7d\xdb\x3f\xb9\x5c\xa2\x8c\x2e\xec\xfe\xb4\xf9\x1d\x57\xda\x26\x65\xe8\x10\xa3\x4a\xbf\x71\x5e\xbd\xed\x41\xaf\x90\x7f\xf5\xa6\x75\x3d\xe5\x9a\x30\x7b\xc0\x5e\x5c\xdd\x4c\x22\x4a\x52\xec\x81\x78\x7d\xfe\xfb\x24\x62\x46\xd5\x72\x0f\xc8\x8f\x54\x2d\x27\x31\xb9\xa2\x05\x59\xe0\x8e\x67\xdc\x5d\x9a\x5f\x98\xb5\x6e\xef\x61\x0f\x9a\x54\x84\x32\x72\x4b\x19\xd5\x5f\x92\xaf\xbc\x7c\x36\xf6\xf9\x1a\xc0\x5f\xbc\xc4\xe9\x0b\x61\x4b\x2f\x23\x9a\xec\x91\x94\x9f\x38\xd7\x17\xbc\xcc\xe9\x62\x33\x35\xda\x56\x2d\x4b\x4a\xd4\xcf\x75\xfd\xd2\xdb\x7e\x42\x7d\xcf\xe5\x72\xda\x73\x2a\xf6\xf0\xf9\xf2\x6a\xe8\x2b\x3e\xec\xef\xeb\xcf\x0f\x63\xbe\x4a\xf4\xef\xe7\xea\x99\x4b\x52\x5e\x08\xa3\x31\xc9\x19\xa9\xb8\x4c\xaa\x59\x08\xa1\x5b\x3b\xce\xa6\xac\xfd\xd3\x52\x11\x19\xf5\xeb\x3d\x00\xf0\xaf\xe3\xa6\x42\x5b\xd1\x9f\x1b\xcd\x88\x96\x19\x3e\xfc\x1d\x00\x54\xa9\x30\x6a\x14\x51\x98\xa1\xae\x24\x05\x8c\x82\x4b\x52\x0c\x75\x6d\x05\x8d\xea\xda\x8d\xa1\x32\x55\x89\x30\xb7\x8c\xa6\x4d\x2f\x91\x06\x27\x13\x74\xcb\x78\xba\x54\x9a\x4b\xb2\xc0\xa4\xe2\xcc\x14\x98\x54\xf3\x10\x42\xb7\x5e\xcf\xd2\x93\x19\xda\x31\x3b\x8a\x7e\xc5\x1d\x22\xd8\x72\x9a\x0a\xd3\x85\xe4\x46\xb8\xf3\x6c\xbf\x9c\xaf\xab\x03\x6b\xda\xc5\xff\x1f\x2d\xd5\xaa\x23\xd4\x07\xf7\xcd\x8d\x0c\x9b\xdb\xa5\x52\x49\x85\xf6\xad\xb3\xc5\x81\x9c\x4b\x58\x9e\x2a\x68\x35\xed\x49\x19\x86\xbe\x4d\xe7\x92\x17\x89\xe0\x52\x37\x04\xb3\x59\x23\xd4\xbc\x15\xad\x09\xa9\xb0\x5d\x5f\xf3\x94\xb3\xe6\x1c\x52\xe1\x1a\x73\x4a\x33\xb9\xe6\x62\x1c\x35\xff\xde\x37\x6d\xbb\x7e\x92\xed\xe0\x70\x84\xcd\x0b\x07\x6c\x34\x2d\xbe\x99\xee\x34\x1e\xa1\xf3\xc2\x97\x0f\xee\xe8\x68\x3e\x42\xd7\x4a\x5f\x9e\x6f\x36\x3f\xf9\x7e\xec\xf0\xe6\xaf\x16\xe1\xe1\x28\x61\x2b\x7d\x79\xbe\xe3\xf1\x94\x1e\xbf\x5e\x4e\x0f\xe3\xd9\xd1\xe9\x58\x8c\x9d\xfc\x55\x38\x3f\xc4\xe3\x9c\x1f\x5e\xeb\x24\xe7\x71\x1c\x8f\x71\xce\x67\x27\xc7\x27\xff\x15\x4e\x93\xed\xc4\xb9\xe5\xb1\xed\x9e\xe9\xe6\xb1\x6d\xbf\x86\xed\x13\x60\xbc\x93\x6d\xf6\xd1\x29\xcd\xa9\x96\xd1\x0c\x79\x49\xcf\x7e\x60\xe9\x07\xc1\x00\xc0\xb7\xf9\x7e\x0f\xd8\xad\x31\x61\x6a\xa4\x1d\xfb\x9a\x16\xa0\x9c\xe5\xe7\x27\x5b\x4f\xd4\xae\x23\x0b\x68\x41\x36\xe6\xc7\x96\x7e\x63\xa3\xfd\xf1\x65\x47\xc0\xf5\x8c\x68\x2c\x04\x23\x1a\x73\xca\xf0\x4d\xcf\xf1\x76\x60\xec\x39\xfe\x1d\x3c\x42\x1b\xd1\x4e\x91\x42\xfd\xd6\xde\xb1\xd2\x0d\x4e\xfe\x9a\x8d\xa5\x6b\x35\x9c\xb9\x9b\x48\x1f\x30\x4b\xa8\x48\xaa\xa3\x21\x0f\x15\x7d\x86\xff\x9d\x41\x58\x1a\xc6\x42\xf8\xf1\x69\xc5\x1f\xc0\xaa\x3d\x75\x05\xbd\x9b\xb4\x5c\x24\x39\xe3\x44\xd3\x72\x41\x45\x3b\xc4\xd9\x6f\xb1\xc3\x7c\x22\x38\x67\x6d\x5c\xeb\x43\xe7\xf6\x91\xb1\x63\x24\x4a\xf1\x94\x12\xed\x6b\x20\x5f\x17\x6d\x16\xc2\x84\x1f\x2d\x5e\x42\x05\x9c\xc1\xf6\x20\x23\x1f\x62\xf4\x2e\x22\x59\x26\x51\xa9\x8d\xca\xe8\x32\x9b\xf5\x10\x47\x2a\xb7\x73\x27\x7a\x17\xd1\xec\x59\xc3\x96\x1f\x0a\x89\xd6\x24\xbd\x73\x09\xe8\x89\x76\x4e\xc0\x0b\xb9\x0b\xe0\xe9\x69\xd6\x70\x6d\x9b\x65\x23\xb7\x1a\x0f\x9c\x1b\x2d\x8c\x5e\xff\x75\x53\xe6\xdc\x45\x54\x11\x66\xb0\xfb\xe3\x4c\x57\x11\x83\xd3\xdb\xe2\xbc\x3f\xdc\x28\x8e\xd6\x2a\xc8\x55\xd4\x37\x5f\x07\x57\x39\xff\x06\x00\x00\xff\xff\xf0\x12\x5c\x27\x6f\x12\x00\x00"), + }, + "/terraform/loongarch64/nestos": &vfsgen۰DirInfo{ + name: "nestos", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 920598520, time.UTC), + }, + "/terraform/loongarch64/nestos/libvirt": &vfsgen۰DirInfo{ + name: "libvirt", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 917598480, time.UTC), + }, + "/terraform/loongarch64/nestos/libvirt/master.tf.template": &vfsgen۰CompressedFileInfo{ + name: "master.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 915598453, time.UTC), + uncompressedSize: 3229, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x9c\x56\xdf\x6f\xe3\x36\x0c\x7e\xf7\x5f\xc1\x09\x7b\xb8\x2b\x56\xb7\x1b\x0e\x1b\x30\x20\x18\xb6\x14\xd8\xf2\x70\x58\xd1\xed\x9e\x0e\x85\xa1\xda\x8c\x43\xc4\x96\x3c\x49\x76\x97\x05\xfe\xdf\x07\xc9\x92\x7f\x24\x76\x2f\x97\x02\x8d\x6d\x99\xfc\xf8\x89\xe4\x47\xd9\xa0\x52\x7c\x2b\x55\x09\xc7\x08\x40\xe1\x3f\x35\x29\xcc\x92\x4a\xc9\x86\x32\x54\xda\x2d\x03\x14\xf4\xd2\x90\x32\xb0\xf2\xcf\x00\x5a\xd6\x2a\x45\x58\x01\xcb\x4a\x9e\x36\x94\x72\x75\xe7\xad\x98\x37\x69\x50\x69\x92\xc2\xda\xdc\xc7\x3f\xc5\x3f\x76\xeb\x6d\x64\xff\xdb\x28\x0a\x31\x80\x05\x3f\x07\x5e\x2b\xb2\x1e\xc7\x63\xfc\x58\x70\x63\xa9\xc5\x9f\x9e\x36\x6d\xcb\xac\x4f\xc3\x15\xf1\x97\x02\x81\xa5\x45\xad\x0d\xaa\x84\xb2\xce\xcd\x1c\x2a\xb4\xf0\x2b\xd0\x46\x91\xc8\x23\x80\x0c\xb7\xbc\x2e\x8c\x47\x5b\x77\x0e\x9b\x87\x33\x28\x12\xda\x70\x91\x62\x92\xca\x5a\x98\x0b\xe1\x3e\x72\x8b\x16\xaf\xad\xcb\x32\xe2\x4e\x6a\x23\x78\x89\xa7\xa0\x05\x69\xf3\xae\x43\x7e\x3f\x81\x1e\x90\xff\xf0\xae\x6d\xbb\x80\x4d\xd5\x15\xa8\x9b\xc7\x53\xbc\x3e\x91\x55\xf3\x21\x49\x29\x53\x17\x26\xa0\xaf\xce\x7a\xf3\xf0\xb4\x5c\x1e\x8b\x9a\x73\x83\xaf\xfc\xf0\xb5\xc0\xbf\x77\x6e\x6f\xd4\xab\xaa\xaf\x48\xc1\xfa\xf1\xd3\x62\x4e\x15\x2f\xaf\x40\x7c\xfa\xf5\xe3\x22\x62\x46\x7a\x7f\x05\xe4\x03\xe9\xfd\x72\xe5\x73\x71\x05\xe4\x6f\x52\x9a\xb5\x14\x5b\xca\x3b\x60\x85\x5e\xc3\x41\x7f\x49\x25\x65\xc1\x80\x75\x17\x8b\x6f\xfb\xcf\x56\xe5\xdb\x63\xc3\x55\x3c\x48\xae\xbd\x75\x36\x81\x81\x1d\x02\xa4\xec\x63\xc5\xcd\xce\x3e\xde\x35\xdd\x38\x08\x23\xe1\x8e\x4a\x9e\xa3\xbe\x3b\x03\x62\xf3\x4c\x1a\x59\xd4\x56\x35\x2c\xdc\xf4\x6c\x60\x9e\x8f\xb7\xb3\x14\xa4\x2c\x7c\x4a\x86\x5d\xc5\xee\xc7\x02\x44\xe3\xd1\x35\xee\xb6\x3f\xff\xda\x58\x8e\xed\x17\x29\x0d\x15\x75\xf3\x02\xfa\xbf\x15\x58\x56\xd3\x69\x32\xd0\x1e\xac\x3c\xfd\xb3\x21\xf1\xd9\x79\xc4\x24\x32\xfc\xf7\xb9\xbd\x75\x71\x22\x80\x17\xae\xd1\x47\x4f\x28\x1b\x6d\xac\x5b\x8b\xfd\x85\xb2\x61\xf3\x43\xac\xe5\x24\xd0\x7f\x53\x56\x13\x4a\x36\xf6\x84\x0e\xdc\xc0\xf7\xf7\x3f\x7c\x98\x5e\xe6\x13\x45\xb9\x20\x43\x52\x30\x60\xc3\xed\x38\x5d\x5f\xc8\xd3\xc5\x09\xea\xd1\x47\x1b\x7f\x63\xc7\xa9\x14\x06\x85\xd5\x84\xc1\xb2\x2a\xb8\xc1\x2d\x15\xf8\x6e\x12\x89\x72\x31\x09\xf2\x1d\x1c\x21\x44\x3f\xe5\x3d\xcb\x0a\xda\xf7\xf3\x59\x11\x68\x5e\xa5\xda\x33\x60\xfd\xdd\x71\xd2\x1c\xb3\x6d\x2d\xd0\x9d\xa6\xa5\xcc\x06\x2b\xc1\xdd\x5a\x26\x4b\x4e\x62\xc9\x33\x2e\x64\xca\x9d\x42\x79\x96\x29\xd4\x1a\x35\xac\xe0\xf3\xc4\x2a\x0c\xfc\xe7\xc8\xc2\xed\xd2\xca\x1f\xee\x28\xec\xbc\xb1\x9d\x66\x54\x8d\xee\xb8\xb6\x06\x42\x9f\xbc\x77\xa1\xbd\x09\x80\x0b\x98\x48\x51\x1c\x4e\x1c\x95\xac\x0d\x06\x5f\x1b\x6f\xe8\xb7\x33\x2a\xce\xc6\x1f\x17\x73\x36\xfe\x55\x80\xe6\xb5\x91\xda\x70\xf7\x61\xe2\x42\xce\xa6\xbe\xcb\x94\xcb\xbc\x36\x52\xcf\x6a\xf7\x42\xf1\x5e\xd4\x03\x16\xbd\xaa\xfd\x86\x5d\xe9\x56\xc0\xac\xe5\x6d\xc5\xb5\x36\x3b\x25\xeb\x7c\xc7\xa2\xee\x53\xa8\xb1\xa6\x6f\xf0\xa8\xea\x53\xec\x12\x4b\xa9\x0e\x8b\x1e\x8a\x97\x67\x6c\xa4\x42\xa9\x7b\x61\x8e\x44\x12\x96\xe2\xfe\xe6\x26\xa6\xec\x2c\x22\x4f\x77\x24\x70\x3c\xc2\xdc\xb1\xe2\x56\xff\x3e\x54\x6e\x68\x8e\xab\x11\xcc\x7c\x1b\x84\x63\x6a\xe4\xbf\x6f\x4a\xe6\xba\x8a\xf4\xde\x67\xea\x8d\x11\x67\xad\x66\x99\xb9\x2e\xf0\x82\x4a\x48\x18\x54\x5b\x9e\xa2\x07\x0c\xeb\xfd\xb9\x71\xa2\xc5\xb8\xbf\x76\x03\x02\x06\xa9\x7f\x55\xb1\xc7\x1a\x9b\xf3\xa3\x6a\x3a\x22\xbe\xb1\x22\xae\x8b\x82\xc1\x2f\x9d\x22\x97\x2c\x9f\xe1\x67\xb0\x86\x2e\xc6\x2b\x27\x93\x6c\xa5\x4a\x0a\xe4\x1a\x4f\x34\x96\x2b\x5e\xed\x28\x0d\x2a\x1b\x27\x7c\x05\xac\x11\x29\xf3\x9f\xf1\xda\xa0\x48\xc2\xa1\xed\x69\xb3\x80\x92\x4a\xa1\x65\x81\xf3\x20\x95\x39\x74\x20\x86\xab\x1c\xed\x7c\x75\xb2\x63\xf7\x2c\x7c\xd0\xcb\xda\x54\xb5\x01\x66\x95\xda\x89\xac\xe1\x45\x8d\xa3\xc4\x77\x4a\x8c\x3b\x1d\xc6\x37\xf1\x59\xe5\xe2\xfb\xb8\xcf\x65\xd4\xfe\x1f\x00\x00\xff\xff\x8e\xbd\x3a\xb4\x9d\x0c\x00\x00"), + }, + "/terraform/loongarch64/nestos/libvirt/worker.tf.template": &vfsgen۰CompressedFileInfo{ + name: "worker.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 918598493, time.UTC), + uncompressedSize: 2528, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\x9c\x56\x51\x8f\xe3\x34\x10\x7e\xcf\xaf\x18\x2c\x1e\xee\x56\xac\x59\xd0\x09\x24\xa4\x0a\xc1\xde\x03\xfb\x70\x62\x75\x70\xe2\xe1\x74\x8a\xbc\xc9\x34\x1d\x35\xb1\xcd\xd8\xce\xb1\x54\xf9\xef\xc8\x89\xd3\x26\xdb\xb4\xf4\x5a\xa9\x6a\xea\xcc\x7c\xf3\xf9\xf3\x37\xb6\x3d\x32\xab\xb5\xe1\x06\x76\x19\x00\xe3\xdf\x81\x18\xcb\xdc\xb2\x69\xa9\x44\x76\xfd\x30\x40\x4d\x4f\x2d\xb1\x87\x55\xfa\x0f\xe0\x4c\xe0\x02\x61\x05\xa2\x6c\x54\xd1\x52\xa1\xf8\xdb\x14\x25\x52\x48\x8b\xec\xc8\xe8\x18\x73\x27\x7f\x94\x3f\x0c\xe3\x5d\x16\xbf\x5d\x96\x8d\x35\x40\x8c\x79\x3d\x78\x60\x8a\x19\xbb\x9d\x7c\xac\x95\x8f\xd4\xe4\x87\xf7\x0f\x5d\x27\x62\x4e\xab\x98\xd4\x53\x8d\x20\x8a\x3a\x38\x8f\x9c\x53\x39\xa4\xf9\x67\x8b\x11\x7e\x05\xce\x33\xe9\x2a\x03\x28\x71\xad\x42\xed\x13\xda\xfd\x90\xf0\xf0\xf6\x08\x8a\xb4\xf3\x4a\x17\x98\x17\x26\xe8\xc4\x62\x9e\xfb\x97\xe1\x2d\xb2\xbc\x8f\xef\x4f\xa7\x6f\x8c\xf3\x5a\x35\xf8\x92\x50\x4d\xce\xbf\x1a\x58\xbd\x9e\x41\x1f\x90\x7f\x4b\xa9\x5d\x77\x02\x9b\xec\x15\xa8\x0f\x8f\x27\xf1\x0a\x1b\xae\x00\xbc\x7f\xfc\x70\x12\x91\x55\x73\x05\xe2\xfb\x5f\xde\x9d\x44\x2c\xc9\x6d\xaf\x80\x7c\x4b\x6e\x7b\x5a\xc7\x4a\x5f\x01\xf9\xab\x31\xfe\xde\xe8\x35\x55\x03\x30\x63\xb2\xff\x68\xdd\xbc\x35\x75\x88\x2b\x2f\xc6\x87\x58\x23\xae\x68\x5f\x42\x7c\xbd\x6b\x15\xcb\x83\x67\xbb\xdb\x14\x97\x01\x58\x63\xea\x53\x51\xf1\x5d\x8c\x39\x74\xdb\xb4\x2f\x7e\xff\xe3\xa1\x51\x15\x26\x47\x9e\x21\x75\x50\xb2\xb7\x38\x4c\x3e\x2b\x88\x35\xe7\x2d\x70\xa0\x3e\x8d\x4b\xf4\x8e\xec\xfe\xb1\xcf\x91\xa4\x4b\xfc\xe7\x53\x77\xdb\xd7\xca\x00\x9e\x94\xc3\xc4\x20\xef\xd1\x2e\x93\x61\xa1\xe2\xa2\x20\xf4\xef\x4b\x7e\x33\x72\x91\xc5\x8c\x18\xdc\xc0\x77\x77\xdf\xbf\x99\xff\x2c\xcb\x46\x95\x26\x4f\x46\x0b\x10\x87\xc7\xa9\x78\xff\xa3\xd9\xc5\x52\xed\xd1\x27\xd3\x3f\x3b\xeb\xc2\x68\x8f\x3a\x7a\xd3\x63\x63\x6b\xe5\x71\x4d\x35\xbe\x9a\xd5\xa2\x4a\xcf\xca\x7c\x03\x3b\x18\xeb\xbf\x64\xbe\xc8\x0b\xba\xd7\xcb\xba\x94\xa6\x51\x14\x55\xd1\xe8\xbc\x71\xcb\x86\xba\xd0\x4f\x97\x10\x89\xe8\x36\xa4\x13\xa7\x31\x65\x6f\xa1\x18\x79\x6b\x95\x73\x7e\xc3\x26\x54\x1b\x91\x0d\x47\x4a\x1b\x43\xcf\xf0\xb0\xe1\x25\x76\x83\x8d\xe1\xe7\x93\x19\xac\x9a\x23\x36\x86\xd1\xb8\xbd\x3f\xfa\xbd\x63\x6e\x19\xb9\x7f\xb8\x91\x54\x1e\x55\x54\xc5\x86\x34\x4e\x1d\xbe\xdb\xc9\x77\xc3\xe8\x9f\xcf\xb6\xef\x64\x00\x15\xbc\x71\x5e\xb1\xdf\x87\x79\x0e\x38\xd9\xb3\x26\xf9\xdb\xb6\x11\x59\xdc\xb5\xc8\x6d\x93\x52\xa9\xe7\xa8\x9c\xf0\x1b\xc6\x64\x8c\x5a\x64\xd6\x45\x0c\x8d\xfe\xb3\xe1\x6d\x4e\xda\x23\xaf\x55\x81\x09\x70\x1c\x3f\xb7\x9d\x69\x4c\xc7\xfe\xde\x6a\x5f\xb4\xce\x00\xaa\x2c\x19\x9d\x43\xb7\x98\x47\x76\x6e\xd1\xaf\x56\x20\x74\xa8\x6b\x01\x3f\xc3\xc7\x73\x91\x9f\xe0\x27\x88\x81\x7d\x8d\xcf\x8a\x7c\xbe\x36\x9c\xd7\xa8\x1c\x1e\x74\xed\x67\x5f\xb1\xb2\x1b\x2a\xc6\x1b\xcf\x54\xeb\x15\x88\x56\x17\x22\xdd\x84\x9c\x47\x9d\xf7\xaf\x57\x20\x12\x6d\x31\xa2\x14\x46\x3b\x53\xe3\x32\x88\xf5\xcf\x03\x88\x57\x5c\xa1\xcf\xad\xe9\xaf\x54\xe2\x4e\x8c\x77\x22\x13\xbc\x0d\x1e\x04\xd9\xf6\xcd\xd0\x5f\xad\xaa\x03\x4e\x56\x72\x68\x42\x39\xb4\xa0\xbc\x91\x47\x8b\x26\xef\xe4\x5e\xcb\xac\xfb\x2f\x00\x00\xff\xff\x56\x79\xfb\xa1\xe0\x09\x00\x00"), + }, + "/terraform/loongarch64/nestos/openstack": &vfsgen۰DirInfo{ + name: "openstack", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 923598561, time.UTC), + }, + "/terraform/loongarch64/nestos/openstack/master.tf.template": &vfsgen۰CompressedFileInfo{ + name: "master.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 921598534, time.UTC), + uncompressedSize: 4738, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x58\x5f\x6f\xdb\x36\x10\x7f\xd7\xa7\xb8\x09\x7b\x68\x8b\x45\x55\xec\x34\xc9\x06\x04\x43\x96\x0e\x5b\x80\xb5\x08\x82\xe5\x65\xc5\x20\x30\xd2\xc9\x21\x4c\x89\x1c\xff\xa8\x69\x03\x7d\xf7\x81\x22\x25\x5b\xb2\x14\x3b\x6e\x02\x14\x45\x01\xea\x78\xf7\xfb\xdd\x1d\x79\xbc\x73\x34\x4a\x49\x72\x2e\x0b\x78\x08\x00\x24\xfe\x67\xa8\xc4\x2c\x11\x92\x57\x34\x43\xa9\x1a\x31\x00\x17\x58\x2a\x4d\xd2\x25\x9c\x79\x09\x80\xe2\x46\xa6\x08\x67\x10\x76\x20\x07\xad\xdd\x41\x67\xf0\xb6\x5b\x85\xde\xae\x42\xa9\x28\x2f\xad\xe1\x2c\x8a\xa3\xd8\xc9\xeb\xc0\xfe\xaf\x83\xa0\x85\x80\x70\x65\xd9\x70\x1a\x85\x32\x29\x49\x81\x00\xd6\xf6\xe1\x21\xba\x62\x44\x5b\xda\xe8\x46\xa1\xb4\x3b\x75\x6d\xc1\x04\x51\xea\x33\x97\x19\x6c\x2a\x5e\xf9\x2d\xa7\xa8\xb1\x24\xa5\x76\x98\x03\xc5\xbf\x9b\xad\x8f\x1d\x26\x31\xfa\x2e\x31\x92\x8d\x60\x9e\x1b\x7d\x77\x73\xfd\x97\xd3\x93\xb8\xb0\xb1\xc1\x88\xde\x75\xb3\x65\xd5\xea\x20\xa8\x88\xa4\xe4\x96\x21\x84\x29\x33\x4a\xa3\x4c\x68\xe6\xc2\xd4\x5f\x04\x3a\x6b\xa5\x25\x2d\x17\x01\x40\x86\x39\x31\x4c\x7b\xc0\x0b\x67\x70\xf9\x7e\x03\x8a\xda\x74\x95\x29\x26\x29\x37\xa5\xde\x11\xee\x03\xb1\x68\xd1\x85\x35\x99\x46\xbc\xe3\x4a\xdb\x3c\x0d\x41\x19\x55\xfa\x95\x43\x7e\xdd\x83\x5e\x21\xff\xe9\x4d\xeb\x7a\xca\x5b\x61\xf6\x80\xbd\xb8\xba\x99\x44\x94\xa4\xd8\x03\xf1\xfa\xfc\xc3\x24\x62\x46\xd5\x72\x0f\xc8\xf7\x54\x2d\x27\x31\xb9\xa2\x05\x59\xe0\x8e\xe7\xd4\xdd\xa3\x3f\x98\xb5\x6e\xaf\x66\x0f\x9a\x54\x84\x32\x72\x4b\x19\xd5\x5f\x92\xaf\xbc\x7c\x32\xf6\xf9\x1a\xc0\x3f\xbc\xc4\xe9\x0b\x61\xab\x31\x23\x9a\xec\x91\x94\xdf\x38\xd7\x17\xbc\xcc\xe9\x62\x33\x35\xda\x16\x32\x4b\x4a\xd4\x4f\x75\xfd\xd2\xdb\x7e\x44\xfd\x99\xcb\xe5\xb4\xe7\x54\xec\xe1\xf3\xe5\xd5\xd0\x57\xbc\xdf\xdf\xd7\xdf\xef\xc7\x7c\x95\xe8\x9f\xd4\xd5\xcb\x97\xa4\xbc\x10\x46\x63\x92\x33\x52\x71\x99\x54\xb3\x10\x42\xb7\x76\x9c\x4d\xa5\xfb\xd7\xa6\x22\x32\xea\x3f\x01\x01\x80\x7f\x30\x37\x15\xda\x8a\xfe\xd4\x68\x46\xb4\xcc\xf0\xfe\xdf\x00\xa0\x4a\x85\x51\xa3\x88\xc2\x0c\x75\x25\x29\x60\x14\x5c\x92\x62\xa8\x6b\x2b\x68\x54\xd7\x6e\x0c\x95\xa9\x4a\x84\xb9\x65\x34\x6d\xda\x8b\x34\x38\x99\xa0\x5b\xc6\xd3\xa5\xd2\x5c\x92\x05\x26\x15\x67\xa6\xc0\xa4\x9a\x87\x10\xba\xf5\x7a\x96\x1e\xcd\xd0\x8e\xd9\x51\xf4\x2b\xee\x10\xc1\x96\xd3\x54\x98\x2e\x24\x37\xc2\x9d\x67\xfb\xe5\x7c\x5d\x1d\x58\xd3\x41\x7e\x7c\xb0\x54\xab\x26\x51\x1f\x14\xcd\x8d\x0c\x9b\xdb\xa5\x52\x49\x85\xf6\xdd\xb4\xc5\x81\x9c\x4b\x58\x9e\x2a\x68\x35\xed\x49\x19\x86\xbe\x73\xe7\x92\x17\x89\xe0\x52\x37\x04\xb3\x59\x23\xd4\xbc\x15\xad\x09\xa9\xb0\x83\x80\xe6\x29\x67\xcd\x39\xa4\xc2\xf5\xea\x94\x66\x72\xcd\xc5\x38\x6a\xfe\xbd\x6d\x3a\x79\xfd\x28\xdb\xc1\xe1\x08\x9b\x17\x0e\xd8\x68\x5a\x7c\x33\xdd\x69\x3c\x42\xe7\x85\xcf\x1f\xdc\xd1\xd1\x7c\x84\xae\x95\x3e\x3f\xdf\x6c\x7e\xf2\xf3\xd8\xe1\xcd\x5f\x2c\xc2\xc3\x51\xc2\x56\xfa\xfc\x7c\xc7\xe3\x29\x3d\x7e\xb9\x9c\x1e\xc6\xb3\xa3\xd3\xb1\x18\x3b\xf9\x8b\x70\xbe\x8b\xc7\x39\xdf\xbd\xd4\x49\xce\xe3\x38\x1e\xe3\x9c\xcf\x4e\x8e\x4f\xbe\x17\x4e\x93\xed\xc4\xb9\xe5\xb1\xed\x9e\xe9\xe6\xb1\x6d\xbf\x86\xed\x13\x60\xbc\x93\x6d\xf6\xd1\x29\xcd\xa9\x96\xd1\x0c\x79\x49\xcf\x7e\x60\xe9\x07\xc1\x00\xc0\xb7\xf9\x7e\x0f\xd8\xad\x31\x61\x6a\xa4\x1d\xfb\x9a\x16\xa0\x9c\xe5\xa7\x47\x5b\x4f\xd4\xae\x23\x0b\x68\x41\x36\xe6\xc7\x96\x7e\x63\xa3\xfd\x3d\x66\x47\xc0\xf5\x8c\x68\x2c\x04\x23\x1a\x73\xca\xf0\x55\xcf\xf1\x76\x60\xec\x39\xfe\x13\x3c\x40\x1b\xd1\x4e\x91\x42\xfd\xda\xde\xb1\xd2\x0d\x4e\xfe\x9a\x8d\xa5\x6b\x35\x9c\xb9\x9b\x48\xef\x31\x4b\xa8\x48\xaa\xa3\x21\x0f\x15\x7d\x86\x1f\xce\x20\x2c\x0d\x63\x21\xfc\xfa\xb8\xe2\x2f\x60\xd5\x1e\xbb\x82\xde\x4d\x5a\x2e\x92\x9c\x71\xa2\x69\xb9\xa0\xa2\x1d\xe2\xec\xb7\xd8\x61\x3e\x11\x9c\xb3\x36\xae\xf5\xa1\x73\xfb\xc8\xd8\x31\x12\xa5\x78\x4a\x89\xf6\x35\x90\xaf\x8b\x36\x0b\x61\xc2\x8f\x16\x2f\xa1\x02\xce\x60\x7b\x90\x91\x0f\x31\x7a\x13\x91\x2c\x93\xa8\xd4\x46\x65\x74\x99\xcd\x7a\x88\x23\x95\xdb\xb9\x13\xbd\x89\x68\xf6\xa4\x61\xcb\x0f\x85\x44\x6b\x92\xde\xb9\x04\xf4\x44\x3b\x27\xe0\x99\xdc\x05\xf0\xf4\x34\x6b\xb8\xb6\xcd\xb2\x91\x5b\x8d\x07\xce\x8d\x16\x46\xaf\xff\xba\x29\x73\xee\x22\xaa\x08\x33\xd8\xfd\xbd\xa6\xab\x88\xc1\xe9\x6d\x71\xde\x1f\x6e\x14\x47\x6b\x15\xe4\x2a\xea\x9b\xaf\x83\xab\x9c\xff\x03\x00\x00\xff\xff\x81\x9a\x0c\xab\x82\x12\x00\x00"), + }, + "/terraform/loongarch64/nestos/openstack/worker.tf.template": &vfsgen۰CompressedFileInfo{ + name: "worker.tf.template", + modTime: time.Date(2024, 6, 27, 9, 39, 31, 924598574, time.UTC), + uncompressedSize: 4719, + + compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x02\xff\xcc\x58\x6f\x6b\xe4\x36\x13\x7f\xef\x4f\x31\x8f\x79\x5e\xdc\x1d\x8d\xcf\xd9\xcd\x25\x69\x21\x94\x34\x57\xda\x40\x7b\x84\xd0\x50\xe8\x51\x8c\x62\x8f\x37\x62\x65\x4b\xd5\x1f\x27\x77\xc1\xdf\xbd\xc8\x92\xbd\x6b\xaf\x9d\xdd\xec\x25\x50\x8e\x03\x79\x34\xf3\xfb\xcd\x8c\x34\x9a\xd9\x68\x94\x92\xe4\x5c\x16\xf0\x18\x00\x48\xfc\xc7\x50\x89\x59\x22\x24\xaf\x68\x86\x52\x35\x62\x00\x2e\xb0\x54\x9a\xa4\x4b\x38\xf3\x12\x00\xc5\x8d\x4c\x11\xce\x20\xec\x40\x0e\x5a\xbb\x83\xce\xe0\x7d\xb7\x0a\xbd\x5d\x85\x52\x51\x5e\x5a\xc3\x59\x14\x47\xb1\x93\xd7\x81\xfd\x5f\x07\x41\x0b\x01\xe1\xca\xb2\xe1\x34\x0a\x65\x52\x92\x02\x01\xac\xed\xe3\x63\x74\xc5\x88\xb6\xb4\xd1\x8d\x42\x69\x77\xea\xda\x82\x09\xa2\xd4\x3d\x97\x19\x6c\x2a\x5e\xf9\x2d\xa7\xa8\xb1\x24\xa5\x76\x98\x03\xc5\x3f\x9a\xad\x4f\x1d\x26\x31\xfa\x2e\x31\x92\x8d\x60\x9e\x1b\x7d\x77\x73\xfd\x9b\xd3\x93\xb8\xb0\xb1\xc1\x88\xde\x75\xb3\x65\xd5\xea\x20\xa8\x88\xa4\xe4\x96\x21\x84\x29\x33\x4a\xa3\x4c\x68\xe6\xc2\xd4\x5f\x04\x3a\x6b\xa5\x25\x2d\x17\x01\x40\x86\x39\x31\x4c\x7b\xc0\x0b\x67\x70\xf9\x71\x03\x8a\xda\x74\x95\x29\x26\x29\x37\xa5\x76\x70\x7d\xdb\x3f\xb9\x5c\xa2\x8c\x2e\xec\xfe\xb4\xf9\x1d\x57\xda\x26\x65\xe8\x10\xa3\x4a\xbf\x71\x5e\xbd\xed\x41\xaf\x90\x7f\xf5\xa6\x75\x3d\xe5\x9a\x30\x7b\xc0\x5e\x5c\xdd\x4c\x22\x4a\x52\xec\x81\x78\x7d\xfe\xfb\x24\x62\x46\xd5\x72\x0f\xc8\x8f\x54\x2d\x27\x31\xb9\xa2\x05\x59\xe0\x8e\x67\xdc\x5d\x9a\x5f\x98\xb5\x6e\xef\x61\x0f\x9a\x54\x84\x32\x72\x4b\x19\xd5\x5f\x92\xaf\xbc\x7c\x36\xf6\xf9\x1a\xc0\x5f\xbc\xc4\xe9\x0b\x61\x4b\x2f\x23\x9a\xec\x91\x94\x9f\x38\xd7\x17\xbc\xcc\xe9\x62\x33\x35\xda\x56\x2d\x4b\x4a\xd4\xcf\x75\xfd\xd2\xdb\x7e\x42\x7d\xcf\xe5\x72\xda\x73\x2a\xf6\xf0\xf9\xf2\x6a\xe8\x2b\x3e\xec\xef\xeb\xcf\x0f\x63\xbe\x4a\xf4\xef\xe7\xea\x99\x4b\x52\x5e\x08\xa3\x31\xc9\x19\xa9\xb8\x4c\xaa\x59\x08\xa1\x5b\x3b\xce\xa6\xac\xfd\xd3\x52\x11\x19\xf5\xeb\x3d\x00\xf0\xaf\xe3\xa6\x42\x5b\xd1\x9f\x1b\xcd\x88\x96\x19\x3e\xfc\x1d\x00\x54\xa9\x30\x6a\x14\x51\x98\xa1\xae\x24\x05\x8c\x82\x4b\x52\x0c\x75\x6d\x05\x8d\xea\xda\x8d\xa1\x32\x55\x89\x30\xb7\x8c\xa6\x4d\x2f\x91\x06\x27\x13\x74\xcb\x78\xba\x54\x9a\x4b\xb2\xc0\xa4\xe2\xcc\x14\x98\x54\xf3\x10\x42\xb7\x5e\xcf\xd2\x93\x19\xda\x31\x3b\x8a\x7e\xc5\x1d\x22\xd8\x72\x9a\x0a\xd3\x85\xe4\x46\xb8\xf3\x6c\xbf\x9c\xaf\xab\x03\x6b\xda\xc5\xff\x1f\x2d\xd5\xaa\x23\xd4\x07\xf7\xcd\x8d\x0c\x9b\xdb\xa5\x52\x49\x85\xf6\xad\xb3\xc5\x81\x9c\x4b\x58\x9e\x2a\x68\x35\xed\x49\x19\x86\xbe\x4d\xe7\x92\x17\x89\xe0\x52\x37\x04\xb3\x59\x23\xd4\xbc\x15\xad\x09\xa9\xb0\x5d\x5f\xf3\x94\xb3\xe6\x1c\x52\xe1\x1a\x73\x4a\x33\xb9\xe6\x62\x1c\x35\xff\xde\x37\x6d\xbb\x7e\x92\xed\xe0\x70\x84\xcd\x0b\x07\x6c\x34\x2d\xbe\x99\xee\x34\x1e\xa1\xf3\xc2\x97\x0f\xee\xe8\x68\x3e\x42\xd7\x4a\x5f\x9e\x6f\x36\x3f\xf9\x7e\xec\xf0\xe6\xaf\x16\xe1\xe1\x28\x61\x2b\x7d\x79\xbe\xe3\xf1\x94\x1e\xbf\x5e\x4e\x0f\xe3\xd9\xd1\xe9\x58\x8c\x9d\xfc\x55\x38\x3f\xc4\xe3\x9c\x1f\x5e\xeb\x24\xe7\x71\x1c\x8f\x71\xce\x67\x27\xc7\x27\xff\x15\x4e\x93\xed\xc4\xb9\xe5\xb1\xed\x9e\xe9\xe6\xb1\x6d\xbf\x86\xed\x13\x60\xbc\x93\x6d\xf6\xd1\x29\xcd\xa9\x96\xd1\x0c\x79\x49\xcf\x7e\x60\xe9\x07\xc1\x00\xc0\xb7\xf9\x7e\x0f\xd8\xad\x31\x61\x6a\xa4\x1d\xfb\x9a\x16\xa0\x9c\xe5\xe7\x27\x5b\x4f\xd4\xae\x23\x0b\x68\x41\x36\xe6\xc7\x96\x7e\x63\xa3\xfd\xf1\x65\x47\xc0\xf5\x8c\x68\x2c\x04\x23\x1a\x73\xca\xf0\x4d\xcf\xf1\x76\x60\xec\x39\xfe\x1d\x3c\x42\x1b\xd1\x4e\x91\x42\xfd\xd6\xde\xb1\xd2\x0d\x4e\xfe\x9a\x8d\xa5\x6b\x35\x9c\xb9\x9b\x48\x1f\x30\x4b\xa8\x48\xaa\xa3\x21\x0f\x15\x7d\x86\xff\x9d\x41\x58\x1a\xc6\x42\xf8\xf1\x69\xc5\x1f\xc0\xaa\x3d\x75\x05\xbd\x9b\xb4\x5c\x24\x39\xe3\x44\xd3\x72\x41\x45\x3b\xc4\xd9\x6f\xb1\xc3\x7c\x22\x38\x67\x6d\x5c\xeb\x43\xe7\xf6\x91\xb1\x63\x24\x4a\xf1\x94\x12\xed\x6b\x20\x5f\x17\x6d\x16\xc2\x84\x1f\x2d\x5e\x42\x05\x9c\xc1\xf6\x20\x23\x1f\x62\xf4\x2e\x22\x59\x26\x51\xa9\x8d\xca\xe8\x32\x9b\xf5\x10\x47\x2a\xb7\x73\x27\x7a\x17\xd1\xec\x59\xc3\x96\x1f\x0a\x89\xd6\x24\xbd\x73\x09\xe8\x89\x76\x4e\xc0\x0b\xb9\x0b\xe0\xe9\x69\xd6\x70\x6d\x9b\x65\x23\xb7\x1a\x0f\x9c\x1b\x2d\x8c\x5e\xff\x75\x53\xe6\xdc\x45\x54\x11\x66\xb0\xfb\xe3\x4c\x57\x11\x83\xd3\xdb\xe2\xbc\x3f\xdc\x28\x8e\xd6\x2a\xc8\x55\xd4\x37\x5f\x07\x57\x39\xff\x06\x00\x00\xff\xff\xf0\x12\x5c\x27\x6f\x12\x00\x00"), + }, "/terraform/x86_64": &vfsgen۰DirInfo{ name: "x86_64", modTime: time.Date(2024, 6, 27, 6, 35, 43, 414649093, time.UTC), @@ -486,6 +570,7 @@ var Assets = func() http.FileSystem { } fs["/terraform"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ fs["/terraform/aarch64"].(os.FileInfo), + fs["/terraform/loongarch64"].(os.FileInfo), fs["/terraform/x86_64"].(os.FileInfo), } fs["/terraform/aarch64"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ @@ -516,6 +601,34 @@ var Assets = func() http.FileSystem { fs["/terraform/aarch64/nestos/openstack/master.tf.template"].(os.FileInfo), fs["/terraform/aarch64/nestos/openstack/worker.tf.template"].(os.FileInfo), } + fs["/terraform/loongarch64"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/generalos"].(os.FileInfo), + fs["/terraform/loongarch64/nestos"].(os.FileInfo), + } + fs["/terraform/loongarch64/generalos"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/generalos/libvirt"].(os.FileInfo), + fs["/terraform/loongarch64/generalos/openstack"].(os.FileInfo), + } + fs["/terraform/loongarch64/generalos/libvirt"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/generalos/libvirt/master.tf.template"].(os.FileInfo), + fs["/terraform/loongarch64/generalos/libvirt/worker.tf.template"].(os.FileInfo), + } + fs["/terraform/loongarch64/generalos/openstack"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/generalos/openstack/master.tf.template"].(os.FileInfo), + fs["/terraform/loongarch64/generalos/openstack/worker.tf.template"].(os.FileInfo), + } + fs["/terraform/loongarch64/nestos"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/nestos/libvirt"].(os.FileInfo), + fs["/terraform/loongarch64/nestos/openstack"].(os.FileInfo), + } + fs["/terraform/loongarch64/nestos/libvirt"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/nestos/libvirt/master.tf.template"].(os.FileInfo), + fs["/terraform/loongarch64/nestos/libvirt/worker.tf.template"].(os.FileInfo), + } + fs["/terraform/loongarch64/nestos/openstack"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ + fs["/terraform/loongarch64/nestos/openstack/master.tf.template"].(os.FileInfo), + fs["/terraform/loongarch64/nestos/openstack/worker.tf.template"].(os.FileInfo), + } fs["/terraform/x86_64"].(*vfsgen۰DirInfo).entries = []os.FileInfo{ fs["/terraform/x86_64/generalos"].(os.FileInfo), fs["/terraform/x86_64/nestos"].(os.FileInfo), diff --git a/data/data/terraform/loongarch64/generalos/libvirt/master.tf.template b/data/data/terraform/loongarch64/generalos/libvirt/master.tf.template new file mode 100644 index 0000000..93bbc50 --- /dev/null +++ b/data/data/terraform/loongarch64/generalos/libvirt/master.tf.template @@ -0,0 +1,190 @@ +terraform { + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.7.6" + } + } +} + +provider "libvirt" { + uri = "{{.Platform.URI}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + type = string + default = "{{.Master.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Master.Hostname}} +} + +variable "instance_ip" { + type = list(string) + default = {{.Master.IP}} +} + +variable "cluster_ipv4_cidr" { + type = string + default = "{{.Platform.CIDR}}" +} + +variable "cluster_ipv4_gateway" { + type = string + default = "{{.Platform.Gateway}}" +} + +variable "instance_cpu" { + type = list(string) + default = {{.Master.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Master.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Master.Disk}} +} + +variable "instance_wwn" { + type = list(string) + default = {{.Master.WWN}} +} + +variable "instance_cloudinit" { + type = list(string) + default = {{.Master.BootConfig}} +} + +resource "libvirt_pool" "pool" { + name = "${var.cluster_id}-pool" + type = "dir" + path = "/var/lib/libvirt/images/${var.cluster_id}" +} + +resource "libvirt_volume" "volume" { + name = "${var.cluster_id}-volume" + pool = libvirt_pool.pool.name + source = "{{.Platform.OSImage}}" +} + +resource "libvirt_volume" "disk" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-disk" + base_volume_id = libvirt_volume.volume.id + pool = libvirt_pool.pool.name + size = var.instance_disk[count.index] * 1024 * 1024 * 1024 +} + +resource "libvirt_cloudinit_disk" "cloudinit" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}.iso" + pool = libvirt_pool.pool.name + user_data = data.template_file.user_data.*.rendered[count.index] +} + +data "template_file" "user_data" { + count = var.instance_count + template = templatefile(var.instance_cloudinit[count.index], { hostname = var.instance_hostname[count.index] }) +} + +resource "libvirt_network" "network" { + name = "${var.cluster_id}-net" + mode = "nat" + domain = "${var.cluster_id}.local" + addresses = [var.cluster_ipv4_cidr] + + dhcp { + enabled = true + } + + dns { + enabled = true + local_only = true + } + + routes { + cidr = var.cluster_ipv4_cidr + gateway = var.cluster_ipv4_gateway + } + + autostart = true +} + +resource "libvirt_domain" "generalos" { + count = var.instance_count + name = var.instance_hostname[count.index] + firmware = "/usr/share/edk2/loongarch64/QEMU_EFI-silent-pflash.raw" + nvram { + file = "/var/lib/libvirt/qemu/nvram/${var.instance_hostname[count.index]}_VARS.fd" + template = "/usr/share/edk2/loongarch64/vars-template-pflash.raw" + } + cpu { + mode = "custom" + } + vcpu = var.instance_cpu[count.index] + memory = var.instance_ram[count.index] + cloudinit = libvirt_cloudinit_disk.cloudinit.*.id[count.index] + machine = "{{.MachineType}}" + autostart = true + type = "kvm" + + xml { + xslt = <<-EOT + + + + + + + + + + + + + + + + + EOT + } + + disk { + volume_id = libvirt_volume.disk.*.id[count.index] + scsi = true + wwn = var.instance_wwn[count.index] + } + + network_interface { + network_name = libvirt_network.network.name + hostname = var.instance_hostname[count.index] + addresses = var.instance_ip[count.index] != "null" ? [var.instance_ip[count.index]] : null + wait_for_lease = true + } + + graphics { + type = "vnc" + listen_type = "address" + } + + console { + type = "pty" + target_port = "0" + } +} + +output "ipv4" { + value = libvirt_domain.generalos.*.network_interface.0.addresses +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/generalos/libvirt/worker.tf.template b/data/data/terraform/loongarch64/generalos/libvirt/worker.tf.template new file mode 100644 index 0000000..ca508a6 --- /dev/null +++ b/data/data/terraform/loongarch64/generalos/libvirt/worker.tf.template @@ -0,0 +1,151 @@ +terraform { + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.7.6" + } + } +} + +provider "libvirt" { + uri = "{{.Platform.URI}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + type = string + default = "{{.Worker.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Worker.Hostname}} +} + +variable "instance_ip" { + type = list(string) + default = {{.Worker.IP}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Worker.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Worker.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Worker.Disk}} +} + +variable "instance_wwn" { + type = list(string) + default = {{.Worker.WWN}} +} + +variable "instance_cloudinit" { + type = list(string) + default = {{.Worker.BootConfig}} +} + +resource "libvirt_volume" "volume" { + name = "${var.cluster_id}-volume" + pool = "${var.cluster_id}-pool" + source = "{{.Platform.OSImage}}" +} + +resource "libvirt_volume" "disk" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-disk" + base_volume_name = "${var.cluster_id}-volume" + pool = "${var.cluster_id}-pool" + size = var.instance_disk[count.index] * 1024 * 1024 * 1024 +} + +resource "libvirt_cloudinit_disk" "cloudinit" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}.iso" + pool = "${var.cluster_id}-pool" + user_data = data.template_file.user_data.*.rendered[count.index] +} + +data "template_file" "user_data" { + count = var.instance_count + template = templatefile(var.instance_cloudinit[count.index], { hostname = var.instance_hostname[count.index] }) +} + +resource "libvirt_domain" "generalos" { + count = var.instance_count + name = var.instance_hostname[count.index] + firmware = "/usr/share/edk2/loongarch64/QEMU_EFI-silent-pflash.raw" + nvram { + file = "/var/lib/libvirt/qemu/nvram/${var.instance_hostname[count.index]}_VARS.fd" + template = "/usr/share/edk2/loongarch64/vars-template-pflash.raw" + } + cpu { + mode = "custom" + } + vcpu = var.instance_cpu[count.index] + memory = var.instance_ram[count.index] + cloudinit = libvirt_cloudinit_disk.cloudinit.*.id[count.index] + machine = "{{.MachineType}}" + autostart = true + type = "kvm" + + xml { + xslt = <<-EOT + + + + + + + + + + + + + + + + + EOT + } + + disk { + volume_id = libvirt_volume.disk.*.id[count.index] + scsi = true + wwn = var.instance_wwn[count.index] + } + + network_interface { + network_name = "${var.cluster_id}-net" + hostname = var.instance_hostname[count.index] + addresses = var.instance_ip[count.index] != "null" ? [var.instance_ip[count.index]] : null + wait_for_lease = true + } + + graphics { + type = "vnc" + listen_type = "address" + } + + console { + type = "pty" + target_port = "0" + } +} + +output "ipv4" { + value = libvirt_domain.generalos.*.network_interface.0.addresses +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/generalos/openstack/master.tf.template b/data/data/terraform/loongarch64/generalos/openstack/master.tf.template new file mode 100644 index 0000000..1ce2e85 --- /dev/null +++ b/data/data/terraform/loongarch64/generalos/openstack/master.tf.template @@ -0,0 +1,212 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "2.0.0" + } + } +} + +provider "openstack" { + user_name = "{{.Platform.Username}}" + password = "{{.Platform.Password}}" + tenant_name = "{{.Platform.TenantName}}" + auth_url = "{{.Platform.AuthURL}}" + region = "{{.Platform.Region}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + type = string + default = "{{.Master.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Master.Hostname}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Master.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Master.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Master.Disk}} +} + +variable "instance_osimage" { + type = string + default = "{{.Platform.GlanceName}}" +} + +variable "availability_zone" { + type = string + default = "{{.Platform.AvailabilityZone}}" +} + +variable "instance_userdata" { + type = list(string) + default = {{.Master.BootConfig}} +} + +variable "internal_net" { + type = string + default = "{{.Platform.InternalNetwork}}" +} + +variable "instance_ip" { + type = list(string) + default = {{.Master.IP}} +} + +variable "external_net" { + type = string + default = "{{.Platform.ExternalNetwork}}" +} + +resource "openstack_compute_flavor_v2" "flavor" { + count = var.instance_count + name = var.instance_hostname[count.index] + vcpus = var.instance_cpu[count.index] + ram = var.instance_ram[count.index] + disk = var.instance_disk[count.index] + is_public = "true" +} + +resource "openstack_blockstorage_volume_v3" "volume" { + count = var.instance_count + name = var.instance_hostname[count.index] + size = var.instance_disk[count.index] +} + +resource "openstack_compute_secgroup_v2" "secgroup" { + name = "${var.cluster_id}-master" + description = "secgroup for k8s master" + + rule { + from_port = 22 + to_port = 22 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = -1 + to_port = -1 + ip_protocol = "icmp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 80 + to_port = 80 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 443 + to_port = 443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 2379 + to_port = 2380 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 179 + to_port = 179 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 6443 + to_port = 6443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10248 + to_port = 10248 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10250 + to_port = 10250 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "udp" + cidr = "0.0.0.0/0" + } +} + +resource "openstack_compute_instance_v2" "instance" { + count = var.instance_count + name = var.instance_hostname[count.index] + image_name = var.instance_osimage + flavor_name = var.instance_hostname[count.index] + security_groups = [openstack_compute_secgroup_v2.secgroup.name] + availability_zone = var.availability_zone + user_data = templatefile(var.instance_userdata[count.index], { hostname = var.instance_hostname[count.index] }) + + network { + name = var.internal_net + fixed_ip_v4 = var.instance_ip[count.index] != "null" ? var.instance_ip[count.index] : null + } +} + +resource "openstack_networking_floatingip_v2" "floatip" { + count = var.instance_count + pool = var.external_net +} + +resource "openstack_compute_floatingip_associate_v2" "fip_associate" { + count = var.instance_count + floating_ip = openstack_networking_floatingip_v2.floatip.*.address[count.index] + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] +} + +resource "openstack_compute_volume_attach_v2" "volume_attach" { + count = var.instance_count + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] + volume_id = openstack_blockstorage_volume_v3.volume.*.id[count.index] +} + +output "instance_info" { + value = { + internal_ip = openstack_compute_instance_v2.instance.*.network.0.fixed_ip_v4 + floating_ip = openstack_networking_floatingip_v2.floatip.*.address + } +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/generalos/openstack/worker.tf.template b/data/data/terraform/loongarch64/generalos/openstack/worker.tf.template new file mode 100644 index 0000000..408ac11 --- /dev/null +++ b/data/data/terraform/loongarch64/generalos/openstack/worker.tf.template @@ -0,0 +1,211 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "2.0.0" + } + } +} + +provider "openstack" { + user_name = "{{.Platform.Username}}" + password = "{{.Platform.Password}}" + tenant_name = "{{.Platform.TenantName}}" + auth_url = "{{.Platform.AuthURL}}" + region = "{{.Platform.Region}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + default = "{{.Worker.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Worker.Hostname}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Worker.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Worker.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Worker.Disk}} +} + +variable "instance_osimage" { + type = string + default = "{{.Platform.GlanceName}}" +} + +variable "availability_zone" { + type = string + default = "{{.Platform.AvailabilityZone}}" +} + +variable "instance_userdata" { + type = list(string) + default = {{.Worker.BootConfig}} +} + +variable "internal_net" { + type = string + default = "{{.Platform.InternalNetwork}}" +} + +variable "instance_ip" { + type = list(string) + default = {{.Worker.IP}} +} + +variable "external_net" { + type = string + default = "{{.Platform.ExternalNetwork}}" +} + +resource "openstack_compute_flavor_v2" "flavor" { + count = var.instance_count + name = var.instance_hostname[count.index] + vcpus = var.instance_cpu[count.index] + ram = var.instance_ram[count.index] + disk = var.instance_disk[count.index] + is_public = "true" +} + +resource "openstack_blockstorage_volume_v3" "volume" { + count = var.instance_count + name = var.instance_hostname[count.index] + size = var.instance_disk[count.index] +} + +resource "openstack_compute_secgroup_v2" "secgroup" { + name = "${var.cluster_id}-worker" + description = "secgroup for k8s worker" + + rule { + from_port = 22 + to_port = 22 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = -1 + to_port = -1 + ip_protocol = "icmp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 80 + to_port = 80 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 443 + to_port = 443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 2379 + to_port = 2380 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 179 + to_port = 179 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 6443 + to_port = 6443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10248 + to_port = 10248 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10250 + to_port = 10250 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "udp" + cidr = "0.0.0.0/0" + } +} + +resource "openstack_compute_instance_v2" "instance" { + count = var.instance_count + name = var.instance_hostname[count.index] + image_name = var.instance_osimage + flavor_name = var.instance_hostname[count.index] + security_groups = [openstack_compute_secgroup_v2.secgroup.name] + availability_zone = var.availability_zone + user_data = templatefile(var.instance_userdata[count.index], { hostname = var.instance_hostname[count.index] }) + + network { + name = var.internal_net + fixed_ip_v4 = var.instance_ip[count.index] != "null" ? var.instance_ip[count.index] : null + } +} + +resource "openstack_networking_floatingip_v2" "floatip" { + count = var.instance_count + pool = var.external_net +} + +resource "openstack_compute_floatingip_associate_v2" "fip_associate" { + count = var.instance_count + floating_ip = openstack_networking_floatingip_v2.floatip.*.address[count.index] + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] +} + +resource "openstack_compute_volume_attach_v2" "volume_attach" { + count = var.instance_count + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] + volume_id = openstack_blockstorage_volume_v3.volume.*.id[count.index] +} + +output "instance_info" { + value = { + internal_ip = openstack_compute_instance_v2.instance.*.network.0.fixed_ip_v4 + floating_ip = openstack_networking_floatingip_v2.floatip.*.address + } +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/nestos/libvirt/master.tf.template b/data/data/terraform/loongarch64/nestos/libvirt/master.tf.template new file mode 100644 index 0000000..2f514ee --- /dev/null +++ b/data/data/terraform/loongarch64/nestos/libvirt/master.tf.template @@ -0,0 +1,151 @@ +terraform { + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.7.6" + } + } +} + +provider "libvirt" { + uri = "{{.Platform.URI}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + type = string + default = "{{.Master.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Master.Hostname}} +} + +variable "instance_ip" { + type = list(string) + default = {{.Master.IP}} +} + +variable "cluster_ipv4_cidr" { + type = string + default = "{{.Platform.CIDR}}" +} + +variable "cluster_ipv4_gateway" { + type = string + default = "{{.Platform.Gateway}}" +} + +variable "instance_cpu" { + type = list(string) + default = {{.Master.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Master.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Master.Disk}} +} + +variable "instance_ign" { + type = list(string) + default = {{.Master.BootConfig}} +} + +resource "libvirt_pool" "pool" { + name = "${var.cluster_id}-pool" + type = "dir" + path = "/var/lib/libvirt/images/${var.cluster_id}" +} + +resource "libvirt_volume" "volume" { + name = "${var.cluster_id}-volume" + pool = libvirt_pool.pool.name + source = "{{.Platform.OSImage}}" +} + +resource "libvirt_volume" "disk" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-disk" + base_volume_id = libvirt_volume.volume.id + pool = libvirt_pool.pool.name + size = var.instance_disk[count.index] * 1024 * 1024 * 1024 +} + +resource "libvirt_ignition" "ignition" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-ignition" + pool = libvirt_pool.pool.name + content = templatefile(var.instance_ign[count.index], { hostname = var.instance_hostname[count.index] }) +} + +resource "libvirt_network" "network" { + name = "${var.cluster_id}-net" + mode = "nat" + domain = "${var.cluster_id}.local" + addresses = [var.cluster_ipv4_cidr] + + dhcp { + enabled = true + } + + dns { + enabled = true + local_only = true + } + + routes { + cidr = var.cluster_ipv4_cidr + gateway = var.cluster_ipv4_gateway + } + + autostart = true +} + +resource "libvirt_domain" "nestos" { + count = var.instance_count + name = var.instance_hostname[count.index] + cpu { + mode = "host-passthrough" + } + vcpu = var.instance_cpu[count.index] + memory = var.instance_ram[count.index] + coreos_ignition = libvirt_ignition.ignition.*.id[count.index] + machine = "{{.MachineType}}" + autostart = true + type = "kvm" + + disk { + volume_id = libvirt_volume.disk.*.id[count.index] + } + + network_interface { + network_name = libvirt_network.network.name + hostname = var.instance_hostname[count.index] + addresses = var.instance_ip[count.index] != "null" ? [var.instance_ip[count.index]] : null + wait_for_lease = true + } + + graphics { + type = "vnc" + listen_type = "address" + } + + console { + type = "pty" + target_port = "0" + } +} + +output "ipv4" { + value = libvirt_domain.nestos.*.network_interface.0.addresses +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/nestos/libvirt/worker.tf.template b/data/data/terraform/loongarch64/nestos/libvirt/worker.tf.template new file mode 100644 index 0000000..d56edce --- /dev/null +++ b/data/data/terraform/loongarch64/nestos/libvirt/worker.tf.template @@ -0,0 +1,111 @@ +terraform { + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + version = "0.7.6" + } + } +} + +provider "libvirt" { + uri = "{{.Platform.URI}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + default = "{{.Worker.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Worker.Hostname}} +} + +variable "instance_ip" { + type = list(string) + default = {{.Worker.IP}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Worker.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Worker.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Worker.Disk}} +} + +variable "instance_ign" { + type = list(string) + default = {{.Worker.BootConfig}} +} + +resource "libvirt_volume" "volume" { + name = "${var.cluster_id}-volume" + pool = "${var.cluster_id}-pool" + source = "{{.Platform.OSImage}}" +} + +resource "libvirt_volume" "disk" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-disk" + base_volume_name = "${var.cluster_id}-volume" + pool = "${var.cluster_id}-pool" + size = var.instance_disk[count.index] * 1024 * 1024 * 1024 +} + +resource "libvirt_ignition" "ignition" { + count = var.instance_count + name = "${var.instance_hostname[count.index]}-ignition" + pool = "${var.cluster_id}-pool" + content = templatefile(var.instance_ign[count.index], { hostname = var.instance_hostname[count.index] }) +} + +resource "libvirt_domain" "nestos" { + count = var.instance_count + name = var.instance_hostname[count.index] + cpu { + mode = "host-passthrough" + } + vcpu = var.instance_cpu[count.index] + memory = var.instance_ram[count.index] + coreos_ignition = libvirt_ignition.ignition.*.id[count.index] + machine = "{{.MachineType}}" + autostart = true + type = "kvm" + + disk { + volume_id = libvirt_volume.disk.*.id[count.index] + } + + network_interface { + network_name = "${var.cluster_id}-net" + hostname = var.instance_hostname[count.index] + addresses = var.instance_ip[count.index] != "null" ? [var.instance_ip[count.index]] : null + wait_for_lease = true + } + + graphics { + type = "vnc" + listen_type = "address" + } + + console { + type = "pty" + target_port = "0" + } +} + +output "ipv4" { + value = libvirt_domain.nestos.*.network_interface.0.addresses +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/nestos/openstack/master.tf.template b/data/data/terraform/loongarch64/nestos/openstack/master.tf.template new file mode 100644 index 0000000..1ce2e85 --- /dev/null +++ b/data/data/terraform/loongarch64/nestos/openstack/master.tf.template @@ -0,0 +1,212 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "2.0.0" + } + } +} + +provider "openstack" { + user_name = "{{.Platform.Username}}" + password = "{{.Platform.Password}}" + tenant_name = "{{.Platform.TenantName}}" + auth_url = "{{.Platform.AuthURL}}" + region = "{{.Platform.Region}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + type = string + default = "{{.Master.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Master.Hostname}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Master.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Master.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Master.Disk}} +} + +variable "instance_osimage" { + type = string + default = "{{.Platform.GlanceName}}" +} + +variable "availability_zone" { + type = string + default = "{{.Platform.AvailabilityZone}}" +} + +variable "instance_userdata" { + type = list(string) + default = {{.Master.BootConfig}} +} + +variable "internal_net" { + type = string + default = "{{.Platform.InternalNetwork}}" +} + +variable "instance_ip" { + type = list(string) + default = {{.Master.IP}} +} + +variable "external_net" { + type = string + default = "{{.Platform.ExternalNetwork}}" +} + +resource "openstack_compute_flavor_v2" "flavor" { + count = var.instance_count + name = var.instance_hostname[count.index] + vcpus = var.instance_cpu[count.index] + ram = var.instance_ram[count.index] + disk = var.instance_disk[count.index] + is_public = "true" +} + +resource "openstack_blockstorage_volume_v3" "volume" { + count = var.instance_count + name = var.instance_hostname[count.index] + size = var.instance_disk[count.index] +} + +resource "openstack_compute_secgroup_v2" "secgroup" { + name = "${var.cluster_id}-master" + description = "secgroup for k8s master" + + rule { + from_port = 22 + to_port = 22 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = -1 + to_port = -1 + ip_protocol = "icmp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 80 + to_port = 80 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 443 + to_port = 443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 2379 + to_port = 2380 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 179 + to_port = 179 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 6443 + to_port = 6443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10248 + to_port = 10248 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10250 + to_port = 10250 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "udp" + cidr = "0.0.0.0/0" + } +} + +resource "openstack_compute_instance_v2" "instance" { + count = var.instance_count + name = var.instance_hostname[count.index] + image_name = var.instance_osimage + flavor_name = var.instance_hostname[count.index] + security_groups = [openstack_compute_secgroup_v2.secgroup.name] + availability_zone = var.availability_zone + user_data = templatefile(var.instance_userdata[count.index], { hostname = var.instance_hostname[count.index] }) + + network { + name = var.internal_net + fixed_ip_v4 = var.instance_ip[count.index] != "null" ? var.instance_ip[count.index] : null + } +} + +resource "openstack_networking_floatingip_v2" "floatip" { + count = var.instance_count + pool = var.external_net +} + +resource "openstack_compute_floatingip_associate_v2" "fip_associate" { + count = var.instance_count + floating_ip = openstack_networking_floatingip_v2.floatip.*.address[count.index] + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] +} + +resource "openstack_compute_volume_attach_v2" "volume_attach" { + count = var.instance_count + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] + volume_id = openstack_blockstorage_volume_v3.volume.*.id[count.index] +} + +output "instance_info" { + value = { + internal_ip = openstack_compute_instance_v2.instance.*.network.0.fixed_ip_v4 + floating_ip = openstack_networking_floatingip_v2.floatip.*.address + } +} \ No newline at end of file diff --git a/data/data/terraform/loongarch64/nestos/openstack/worker.tf.template b/data/data/terraform/loongarch64/nestos/openstack/worker.tf.template new file mode 100644 index 0000000..408ac11 --- /dev/null +++ b/data/data/terraform/loongarch64/nestos/openstack/worker.tf.template @@ -0,0 +1,211 @@ +terraform { + required_providers { + openstack = { + source = "terraform-provider-openstack/openstack" + version = "2.0.0" + } + } +} + +provider "openstack" { + user_name = "{{.Platform.Username}}" + password = "{{.Platform.Password}}" + tenant_name = "{{.Platform.TenantName}}" + auth_url = "{{.Platform.AuthURL}}" + region = "{{.Platform.Region}}" +} + +variable "cluster_id" { + type = string + default = "{{.ClusterID}}" +} + +variable "instance_count" { + default = "{{.Worker.Count}}" +} + +variable "instance_hostname" { + type = list(string) + default = {{.Worker.Hostname}} +} + +variable "instance_cpu" { + type = list(string) + default = {{.Worker.CPU}} +} + +variable "instance_ram" { + type = list(string) + default = {{.Worker.RAM}} +} + +variable "instance_disk" { + type = list(string) + default = {{.Worker.Disk}} +} + +variable "instance_osimage" { + type = string + default = "{{.Platform.GlanceName}}" +} + +variable "availability_zone" { + type = string + default = "{{.Platform.AvailabilityZone}}" +} + +variable "instance_userdata" { + type = list(string) + default = {{.Worker.BootConfig}} +} + +variable "internal_net" { + type = string + default = "{{.Platform.InternalNetwork}}" +} + +variable "instance_ip" { + type = list(string) + default = {{.Worker.IP}} +} + +variable "external_net" { + type = string + default = "{{.Platform.ExternalNetwork}}" +} + +resource "openstack_compute_flavor_v2" "flavor" { + count = var.instance_count + name = var.instance_hostname[count.index] + vcpus = var.instance_cpu[count.index] + ram = var.instance_ram[count.index] + disk = var.instance_disk[count.index] + is_public = "true" +} + +resource "openstack_blockstorage_volume_v3" "volume" { + count = var.instance_count + name = var.instance_hostname[count.index] + size = var.instance_disk[count.index] +} + +resource "openstack_compute_secgroup_v2" "secgroup" { + name = "${var.cluster_id}-worker" + description = "secgroup for k8s worker" + + rule { + from_port = 22 + to_port = 22 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = -1 + to_port = -1 + ip_protocol = "icmp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 80 + to_port = 80 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 443 + to_port = 443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 2379 + to_port = 2380 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 179 + to_port = 179 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 6443 + to_port = 6443 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10248 + to_port = 10248 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 10250 + to_port = 10250 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "tcp" + cidr = "0.0.0.0/0" + } + + rule { + from_port = 30000 + to_port = 32767 + ip_protocol = "udp" + cidr = "0.0.0.0/0" + } +} + +resource "openstack_compute_instance_v2" "instance" { + count = var.instance_count + name = var.instance_hostname[count.index] + image_name = var.instance_osimage + flavor_name = var.instance_hostname[count.index] + security_groups = [openstack_compute_secgroup_v2.secgroup.name] + availability_zone = var.availability_zone + user_data = templatefile(var.instance_userdata[count.index], { hostname = var.instance_hostname[count.index] }) + + network { + name = var.internal_net + fixed_ip_v4 = var.instance_ip[count.index] != "null" ? var.instance_ip[count.index] : null + } +} + +resource "openstack_networking_floatingip_v2" "floatip" { + count = var.instance_count + pool = var.external_net +} + +resource "openstack_compute_floatingip_associate_v2" "fip_associate" { + count = var.instance_count + floating_ip = openstack_networking_floatingip_v2.floatip.*.address[count.index] + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] +} + +resource "openstack_compute_volume_attach_v2" "volume_attach" { + count = var.instance_count + instance_id = openstack_compute_instance_v2.instance.*.id[count.index] + volume_id = openstack_blockstorage_volume_v3.volume.*.id[count.index] +} + +output "instance_info" { + value = { + internal_ip = openstack_compute_instance_v2.instance.*.network.0.fixed_ip_v4 + floating_ip = openstack_networking_floatingip_v2.floatip.*.address + } +} \ No newline at end of file diff --git a/pkg/configmanager/asset/clusterasset.go b/pkg/configmanager/asset/clusterasset.go index 8cc65e4..7eecc9e 100644 --- a/pkg/configmanager/asset/clusterasset.go +++ b/pkg/configmanager/asset/clusterasset.go @@ -378,6 +378,9 @@ func GetDefaultClusterConfig(arch string, platform string) (*ClusterAsset, error case "arm64", "aarch64": OperatorImageURL = "hub.oepkgs.net/nestos/housekeeper/arm64/housekeeper-operator-manager:0.1.0" ControllerImageURL = "hub.oepkgs.net/nestos/housekeeper/arm64/housekeeper-controller-manager:0.1.0" + case "loong64", "loongarch64": + OperatorImageURL = "" + ControllerImageURL = "" default: return nil, errors.New("unsupported architecture") } diff --git a/pkg/terraform/generate.go b/pkg/terraform/generate.go index 8f6b1d5..580aee4 100644 --- a/pkg/terraform/generate.go +++ b/pkg/terraform/generate.go @@ -227,6 +227,9 @@ func (infra *Infra) Generate(conf *asset.ClusterAsset, node string) (err error) case "arm64", "aarch64": infra.MachineType = "virt" arch = "aarch64" + case "loong64", "loongarch64": + infra.MachineType = "virt" + arch = "loongarch64" default: logrus.Errorf("unsupported architecture") return err -- Gitee