Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: support oracle for hal cluster #2153

Merged
merged 2 commits into from
Nov 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
218 changes: 218 additions & 0 deletions test_framework/terraform/harvester/oracle/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
terraform {
required_providers {
rancher2 = {
source = "rancher/rancher2"
version = "~> 5.1.0"
}
}
}

provider "rancher2" {
api_url = var.lab_url
insecure = true
access_key = var.lab_access_key
secret_key = var.lab_secret_key
}

resource "random_string" "random_suffix" {
length = 8
special = false
lower = true
upper = false
}

data "rancher2_cluster_v2" "hal-cluster" {
name = "hal"
}

resource "rancher2_cloud_credential" "e2e-credential" {
name = "e2e-credential-${random_string.random_suffix.id}"
harvester_credential_config {
cluster_id = data.rancher2_cluster_v2.hal-cluster.cluster_v1_id
cluster_type = "imported"
kubeconfig_content = data.rancher2_cluster_v2.hal-cluster.kube_config
}
}

resource "rancher2_machine_config_v2" "e2e-machine-config-controlplane" {

generate_name = "e2e-machine-config-controlplane-${random_string.random_suffix.id}"

harvester_config {

vm_namespace = "longhorn-qa"

cpu_count = "4"
memory_size = "8"

disk_info = <<EOF
{
"disks": [{
"imageName": "longhorn-qa/image-6tx8s",
"size": 100,
"bootOrder": 1
}]
}
EOF

network_info = <<EOF
{
"interfaces": [{
"networkName": "longhorn-qa/vlan104"
}]
}
EOF

ssh_user = "cloud-user"

user_data = <<EOF
#cloud-config
ssh_authorized_keys:
- >-
${file(var.ssh_public_key_file_path)}
runcmd:
- - systemctl
- enable
- '--now'
- qemu-guest-agent.service
- systemctl stop firewalld.service
- systemctl disable firewalld.service
EOF
}
}

resource "rancher2_machine_config_v2" "e2e-machine-config-worker" {

generate_name = "e2e-machine-config-worker-${random_string.random_suffix.id}"

harvester_config {

vm_namespace = "longhorn-qa"

cpu_count = "4"
memory_size = "8"

disk_info = <<EOF
{
"disks": [{
"imageName": "longhorn-qa/image-6tx8s",
"size": 100,
"bootOrder": 1
},
{
"storageClassName": "harvester-longhorn",
"size": 100,
"bootOrder": 2
}]
}
EOF

network_info = <<EOF
{
"interfaces": [{
"networkName": "longhorn-qa/vlan104"
}]
}
EOF

ssh_user = "cloud-user"

user_data = <<EOF
#cloud-config
ssh_authorized_keys:
- >-
${file(var.ssh_public_key_file_path)}
package_update: true
packages:
- qemu-guest-agent
- iptables
- iscsi-initiator-utils
- nfs-utils
- nfs4-acl-tools
- cryptsetup
- device-mapper
runcmd:
- - systemctl
- enable
- '--now'
- qemu-guest-agent.service
- systemctl stop firewalld.service
- systemctl disable firewalld.service
- modprobe uio
- modprobe uio_pci_generic
- modprobe vfio_pci
- modprobe nvme-tcp
- modprobe dm_crypt
- touch /etc/modules-load.d/modules.conf
- echo uio >> /etc/modules-load.d/modules.conf
- echo uio_pci_generic >> /etc/modules-load.d/modules.conf
- echo vfio_pci >> /etc/modules-load.d/modules.conf
- echo nvme-tcp >> /etc/modules-load.d/modules.conf
- echo dm_crypt >> /etc/modules-load.d/modules.conf
- echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
- echo "vm.nr_hugepages=1024" >> /etc/sysctl.conf
EOF
}
}

resource "rancher2_cluster_v2" "e2e-cluster" {

name = "e2e-cluster-${random_string.random_suffix.id}"

kubernetes_version = var.k8s_distro_version

rke_config {
machine_pools {
name = "control-plane-pool"
cloud_credential_secret_name = rancher2_cloud_credential.e2e-credential.id
control_plane_role = true
etcd_role = true
worker_role = false
quantity = 1
machine_config {
kind = rancher2_machine_config_v2.e2e-machine-config-controlplane.kind
name = rancher2_machine_config_v2.e2e-machine-config-controlplane.name
}
}
machine_pools {
name = "worker-pool"
cloud_credential_secret_name = rancher2_cloud_credential.e2e-credential.id
control_plane_role = false
etcd_role = false
worker_role = true
quantity = 3
machine_config {
kind = rancher2_machine_config_v2.e2e-machine-config-worker.kind
name = rancher2_machine_config_v2.e2e-machine-config-worker.name
}
}
machine_selector_config {
config = <<EOF
cloud-provider-name: ""
EOF
}
machine_global_config = <<EOF
cni: "calico"
disable-kube-proxy: false
etcd-expose-metrics: false
EOF
upgrade_strategy {
control_plane_concurrency = "10%"
worker_concurrency = "10%"
}
etcd {
snapshot_schedule_cron = "0 */5 * * *"
snapshot_retention = 5
}
chart_values = ""
}
}

output "kube_config" {
value = rancher2_cluster_v2.e2e-cluster.kube_config
sensitive = true
}

output "cluster_id" {
value = data.rancher2_cluster_v2.hal-cluster.cluster_v1_id
}
49 changes: 49 additions & 0 deletions test_framework/terraform/harvester/oracle/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
variable "lab_url" {
type = string
description = "LAB URL"
sensitive = true
}

variable "lab_access_key" {
type = string
description = "LAB ACCESS_KEY"
sensitive = true
}

variable "lab_secret_key" {
type = string
description = "LAB SECRET_KEY"
sensitive = true
}

variable "ssh_public_key_file_path" {
type = string
default = "~/.ssh/id_rsa.pub"
}

variable "arch" {
type = string
description = "available values (amd64, arm64)"
default = "amd64"
}

variable "os_distro_version" {
type = string
default = "9.4"
}

variable "k8s_distro_name" {
type = string
default = "rke2"
description = "kubernetes distro version to install [rke2, k3s] (default: rke2)"
}

variable "k8s_distro_version" {
type = string
default = "v1.28.14+rke2r1"
description = <<-EOT
kubernetes version that will be deployed
k3s: (default: v1.28.14+k3s1)
rke2: (default: v1.28.14+rke2r1)
EOT
}