diff --git a/Kconfig b/Kconfig index 3f2bc8cf0..948befbce 100644 --- a/Kconfig +++ b/Kconfig @@ -5,21 +5,6 @@ mainmenu "$(PROJECT) $(PROJECTRELEASE)" -config TOPDIR_PATH - string - output yaml - default $(shell, echo $TOPDIR_PATH) - -config TOPDIR_PATH_HAS_SHA256SUM - bool - output yaml - default y - -config TOPDIR_PATH_SHA256SUM - string - output yaml - default $(shell, ./scripts/compute_sha256sum.sh $(TOPDIR_PATH)) - config HAVE_KDEVOPS_CUSTOM_DEFAULTS bool default n diff --git a/Makefile b/Makefile index ad744613b..0cc454294 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,7 @@ export KDEVOPS_NODES := export PYTHONUNBUFFERED=1 export TOPDIR=./ export TOPDIR_PATH = $(shell readlink -f $(TOPDIR)) +export TOPDIR_PATH_SHA256SUM = $(shell ./scripts/compute_sha256sum.sh $(TOPDIR_PATH)) # Export CLI override variables for Kconfig to detect them # Note: We accept DECLARE_HOSTS but export as DECLARED_HOSTS for consistency @@ -32,11 +33,21 @@ KDEVOPS_NODES_ROLE_TEMPLATE_DIR := $(KDEVOPS_PLAYBOOKS_DIR)/roles/gen_nodes/tem export KDEVOPS_NODES_TEMPLATE := export KDEVOPS_MRPROPER := +ifeq (y,$(CONFIG_ANSIBLE_CFG_FILE_CUSTOM)) ifneq ($(strip $(CONFIG_ANSIBLE_CFG_FILE)),) ANSIBLE_CFG_FILE := $(shell echo $(CONFIG_ANSIBLE_CFG_FILE) | tr --delete '"') export ANSIBLE_CONFIG := $(ANSIBLE_CFG_FILE) endif +else +ANSIBLE_CFG_FILE := $(TOPDIR_PATH)/ansible.cfg +export ANSIBLE_CONFIG := $(ANSIBLE_CFG_FILE) +endif + +ifeq (y,$(CONFIG_ANSIBLE_CFG_INVENTORY_CUSTOM)) ANSIBLE_INVENTORY_FILE := $(shell echo $(CONFIG_ANSIBLE_CFG_INVENTORY) | tr --delete '"') +else +ANSIBLE_INVENTORY_FILE := $(TOPDIR_PATH)/hosts +endif KDEVOPS_INSTALL_TARGETS := @@ -89,6 +100,13 @@ INCLUDES = -I include/ CFLAGS += $(INCLUDES) ANSIBLE_EXTRA_ARGS += kdevops_version='$(PROJECTRELEASE)' +ANSIBLE_EXTRA_ARGS += topdir_path_sha256sum='$(TOPDIR_PATH_SHA256SUM)' +ifneq (y,$(CONFIG_ANSIBLE_CFG_FILE_CUSTOM)) +ANSIBLE_EXTRA_ARGS += ansible_cfg_file='$(ANSIBLE_CFG_FILE)' +endif +ifneq (y,$(CONFIG_ANSIBLE_CFG_INVENTORY_CUSTOM)) +ANSIBLE_EXTRA_ARGS += ansible_cfg_inventory='$(ANSIBLE_INVENTORY_FILE)' +endif export KDEVOPS_HOSTS_TEMPLATE := hosts.j2 diff --git a/Makefile.kdevops b/Makefile.kdevops index 9c6109f3a..fd03b392f 100644 --- a/Makefile.kdevops +++ b/Makefile.kdevops @@ -9,6 +9,7 @@ PHONY := kdevops_all kdevops_terraform_deps: $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ + --inventory localhost, \ $(KDEVOPS_PLAYBOOKS_DIR)/install_terraform.yml PHONY += kdevops_terraform_deps diff --git a/kconfigs/Kconfig.ansible_cfg b/kconfigs/Kconfig.ansible_cfg index dbd189f5d..a5812995c 100644 --- a/kconfigs/Kconfig.ansible_cfg +++ b/kconfigs/Kconfig.ansible_cfg @@ -18,6 +18,16 @@ config ANSIBLE_CFG_INVENTORY_SET_BY_CLI bool default $(shell, scripts/check-cli-set-var.sh KDEVOPS_HOSTS) +config ANSIBLE_CFG_FILE_CUSTOM + bool "Set a custom location for the ansible.cfg file" + help + When this option is set to N, kdevops creates an ansible.cfg + in a sensible default location, using the settings defined + in this Kconfig menu. If it is set to Y, you can set the + path and filename of the Ansible configuration file. + +if ANSIBLE_CFG_FILE_CUSTOM + config ANSIBLE_CFG_FILE string "Ansible configuration file" output yaml @@ -41,6 +51,8 @@ config ANSIBLE_CFG_FILE For more details, refer to the Ansible documentation: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#the-configuration-file +endif # ANSIBLE_CFG_FILE_CUSTOM + menu "Ansible Callback Plugin Configuration" choice prompt "Ansible Callback Plugin" @@ -251,6 +263,16 @@ config ANSIBLE_CFG_TASK_DEBUGGER https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_debugger.html#id10 +config ANSIBLE_CFG_INVENTORY_CUSTOM + bool "Set a custom location for the Ansible inventory" + help + When this option is set to N, kdevops creates its + inventory file in a sensible default location. If it is + set to Y, you can set the path and filename of the Ansible + inventory. + +if ANSIBLE_CFG_INVENTORY_CUSTOM + config ANSIBLE_CFG_INVENTORY string "Ansible inventory sources" output yaml @@ -270,6 +292,8 @@ config ANSIBLE_CFG_INVENTORY For more details, refer to the Ansible documentation: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-host-list +endif # ANSIBLE_CFG_INVENTORY_CUSTOM + if DISTRO_OPENSUSE config ANSIBLE_CFG_RECONNECTION_RETRIES diff --git a/kconfigs/Kconfig.libvirt b/kconfigs/Kconfig.libvirt index 7fe231668..961276ccc 100644 --- a/kconfigs/Kconfig.libvirt +++ b/kconfigs/Kconfig.libvirt @@ -556,6 +556,51 @@ config LIBVIRT_HOST_PASSTHROUGH --pre 'make -s mrproper defconfig' \ \-- make -s -j$(nproc) bzImage +choice + prompt "Libvirt extra storage drive count" + default LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4 + help + This option selects the number of extra storage drives to + provision for each libvirt guest. Reduce this number to + conserve local host storage capacity, if your workflows do + not use all the extra drives. + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_0 + bool "0" + help + Provision no extra storage drives per guest. + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_1 + bool "1" + help + Provision one extra storage drive per guest. + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_2 + bool "2" + help + Provision two extra storage drives per guest. + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_3 + bool "3" + help + Provision three extra storage drives per guest. + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4 + bool "4" + help + Provision four extra storages drive per guest. + +endchoice + +config LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT + int + output yaml + default 0 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_0 + default 1 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_1 + default 2 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_2 + default 3 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_3 + default 4 if LIBVIRT_EXTRA_STORAGE_DRIVE_COUNT_4 + choice prompt "Libvirt extra storage driver to use" default LIBVIRT_EXTRA_STORAGE_DRIVE_VIRTIO diff --git a/playbooks/devconfig.yml b/playbooks/devconfig.yml index cebaa87a7..f0ca7d767 100644 --- a/playbooks/devconfig.yml +++ b/playbooks/devconfig.yml @@ -1,6 +1,6 @@ --- - name: Configure developer environment on target systems - hosts: baseline:dev + hosts: baseline:dev:service gather_facts: false roles: - role: devconfig diff --git a/playbooks/gen_tfvars.yml b/playbooks/gen_tfvars.yml index 9d75c8681..11437fa25 100644 --- a/playbooks/gen_tfvars.yml +++ b/playbooks/gen_tfvars.yml @@ -1,5 +1,6 @@ --- - name: Generate Terraform variables file (terraform/terraform.tfvars) + connection: local hosts: localhost roles: - role: gen_tfvars diff --git a/playbooks/guestfs.yml b/playbooks/guestfs.yml index 784775cdb..62334463f 100644 --- a/playbooks/guestfs.yml +++ b/playbooks/guestfs.yml @@ -1,5 +1,5 @@ --- -- name: Provision target nodes with libvirt/guestfs +- name: Manage infrastructure lifecycle and SSH access with libvirt/guestfs gather_facts: true connection: local hosts: all diff --git a/playbooks/install_terraform.yml b/playbooks/install_terraform.yml index 5a5fa724a..3342d32a6 100644 --- a/playbooks/install_terraform.yml +++ b/playbooks/install_terraform.yml @@ -1,5 +1,6 @@ --- - name: Install Terraform + connection: local hosts: localhost roles: - role: install_terraform diff --git a/playbooks/roles/base_image/templates/virt-builder.j2 b/playbooks/roles/base_image/templates/virt-builder.j2 index 7df422940..138d06eed 100644 --- a/playbooks/roles/base_image/templates/virt-builder.j2 +++ b/playbooks/roles/base_image/templates/virt-builder.j2 @@ -11,7 +11,7 @@ mkdir {{ target_dir }} copy-in {{ guestfs_distro_source_and_dest_file }}:{{ target_dir }} {% endif %} -install sudo,qemu-guest-agent,python3,bash,locales-all +install sudo,qemu-guest-agent,python3,bash run-command useradd {{ kdevops_uid }} -s /bin/bash -m kdevops append-line /etc/sudoers.d/kdevops:kdevops ALL=(ALL) NOPASSWD: ALL edit /etc/default/grub:s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"/ diff --git a/playbooks/roles/gen_hosts/templates/blktests.j2 b/playbooks/roles/gen_hosts/templates/blktests.j2 index 5bf50acbd..6aa434c33 100644 --- a/playbooks/roles/gen_hosts/templates/blktests.j2 +++ b/playbooks/roles/gen_hosts/templates/blktests.j2 @@ -22,3 +22,6 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endif %} [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/builder.j2 b/playbooks/roles/gen_hosts/templates/builder.j2 index 0c9ba1e8e..164201dc5 100644 --- a/playbooks/roles/gen_hosts/templates/builder.j2 +++ b/playbooks/roles/gen_hosts/templates/builder.j2 @@ -1,4 +1,5 @@ [all] +localhost ansible_connection=local {{ kdevops_hosts_prefix }}-builder [all:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" @@ -11,3 +12,7 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" [dev] [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" + +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/cxl.j2 b/playbooks/roles/gen_hosts/templates/cxl.j2 index 64bec4561..cab7da246 100644 --- a/playbooks/roles/gen_hosts/templates/cxl.j2 +++ b/playbooks/roles/gen_hosts/templates/cxl.j2 @@ -16,3 +16,6 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endif %} [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/ltp.j2 b/playbooks/roles/gen_hosts/templates/ltp.j2 index 828fd6362..6946b3f35 100644 --- a/playbooks/roles/gen_hosts/templates/ltp.j2 +++ b/playbooks/roles/gen_hosts/templates/ltp.j2 @@ -24,3 +24,7 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endif %} [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" + +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/mmtests.j2 b/playbooks/roles/gen_hosts/templates/mmtests.j2 index 1252fe876..8df4a3c31 100644 --- a/playbooks/roles/gen_hosts/templates/mmtests.j2 +++ b/playbooks/roles/gen_hosts/templates/mmtests.j2 @@ -31,3 +31,6 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endfor %} [mmtests:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/selftests.j2 b/playbooks/roles/gen_hosts/templates/selftests.j2 index e505bbf19..af0d6b341 100644 --- a/playbooks/roles/gen_hosts/templates/selftests.j2 +++ b/playbooks/roles/gen_hosts/templates/selftests.j2 @@ -22,3 +22,6 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endif %} [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_hosts/templates/sysbench.j2 b/playbooks/roles/gen_hosts/templates/sysbench.j2 index 107eebc5f..e30773c1b 100644 --- a/playbooks/roles/gen_hosts/templates/sysbench.j2 +++ b/playbooks/roles/gen_hosts/templates/sysbench.j2 @@ -22,3 +22,6 @@ ansible_python_interpreter = "{{ kdevops_python_interpreter }}" {% endif %} [dev:vars] ansible_python_interpreter = "{{ kdevops_python_interpreter }}" +[service] +[service:vars] +ansible_python_interpreter = "{{ kdevops_python_interpreter }}" diff --git a/playbooks/roles/gen_nodes/templates/drives.j2 b/playbooks/roles/gen_nodes/templates/drives.j2 index 1241b88a9..472b4b270 100644 --- a/playbooks/roles/gen_nodes/templates/drives.j2 +++ b/playbooks/roles/gen_nodes/templates/drives.j2 @@ -8,7 +8,7 @@ the drives can vary by type, so we have one macro by type of drive. libvirt_extra_drive_format, libvirt_extra_storage_aio_mode, libvirt_extra_storage_aio_cache_mode) -%} - + {% for n in range(0,num_drives) %} @@ -26,7 +26,7 @@ the drives can vary by type, so we have one macro by type of drive. libvirt_extra_storage_aio_cache_mode, libvirt_extra_storage_virtio_logical_block_size, libvirt_extra_storage_virtio_physical_block_size) -%} - + {% for n in range(0,num_drives) %} @@ -46,7 +46,7 @@ the drives can vary by type, so we have one macro by type of drive. libvirt_extra_drive_format, libvirt_extra_storage_aio_mode, libvirt_extra_storage_aio_cache_mode) -%} - + {% for n in range(0,num_drives) %} @@ -103,7 +103,7 @@ the drives can vary by type, so we have one macro by type of drive. libvirt_extra_storage_aio_mode, libvirt_extra_storage_aio_cache_mode, libvirt_extra_storage_nvme_logical_block_size) -%} - + {% for n in range(0,num_drives) %} diff --git a/playbooks/roles/gen_nodes/templates/gen_drives.j2 b/playbooks/roles/gen_nodes/templates/gen_drives.j2 index 2de13da4a..1040c0e19 100644 --- a/playbooks/roles/gen_nodes/templates/gen_drives.j2 +++ b/playbooks/roles/gen_nodes/templates/gen_drives.j2 @@ -1,6 +1,6 @@ {% import './templates/drives.j2' as drives %} {% if libvirt_extra_storage_drive_ide %} -{{ drives.gen_drive_ide(4, +{{ drives.gen_drive_ide(libvirt_extra_storage_drive_count, kdevops_storage_pool_path, hostname, libvirt_extra_drive_format, @@ -18,7 +18,7 @@ libvirt_extra_storage_aio_cache_mode, kdevops_storage_pool_path) }} {% else %} -{{ drives.gen_drive_virtio(4, +{{ drives.gen_drive_virtio(libvirt_extra_storage_drive_count, kdevops_storage_pool_path, hostname, libvirt_extra_drive_format, @@ -28,7 +28,7 @@ libvirt_extra_storage_virtio_physical_block_size) }} {% endif %} {% elif libvirt_extra_storage_drive_scsi %} -{{ drives.gen_drive_scsi(4, +{{ drives.gen_drive_scsi(libvirt_extra_storage_drive_count, kdevops_storage_pool_path, hostname, libvirt_extra_drive_format, @@ -46,7 +46,7 @@ libvirt_extra_storage_aio_cache_mode, kdevops_storage_pool_path) }} {% else %} -{{ drives.gen_drive_nvme(4, +{{ drives.gen_drive_nvme(libvirt_extra_storage_drive_count, kdevops_storage_pool_path, hostname, libvirt_extra_drive_format, diff --git a/playbooks/roles/gen_tfvars/templates/azure/terraform.tfvars.j2 b/playbooks/roles/gen_tfvars/templates/azure/terraform.tfvars.j2 index 8be48e800..7ce0f6170 100644 --- a/playbooks/roles/gen_tfvars/templates/azure/terraform.tfvars.j2 +++ b/playbooks/roles/gen_tfvars/templates/azure/terraform.tfvars.j2 @@ -1,4 +1,5 @@ azure_subscription_id = "{{ terraform_azure_subscription_id }}" +azure_resource_group_name = "{{ terraform_azure_resource_group_name }}" azure_location = "{{ terraform_azure_location }}" azure_vmsize = "{{ terraform_azure_vm_size }}" azure_image_publisher = "{{ terraform_azure_image_publisher }}" diff --git a/playbooks/roles/gen_tfvars/templates/oci/terraform.tfvars.j2 b/playbooks/roles/gen_tfvars/templates/oci/terraform.tfvars.j2 index 9c32ea588..0839bfacf 100644 --- a/playbooks/roles/gen_tfvars/templates/oci/terraform.tfvars.j2 +++ b/playbooks/roles/gen_tfvars/templates/oci/terraform.tfvars.j2 @@ -18,6 +18,7 @@ oci_subnet_ocid = "{{ terraform_oci_subnet_ocid }}" {% endif %} oci_volumes_per_instance = {{ terraform_oci_volumes_per_instance }} oci_volumes_size = {{ terraform_oci_volumes_size }} +oci_vpus_per_gb = {{ terraform_oci_vpus_per_gb }} oci_data_volume_device_file_name = "{{ terraform_oci_data_volume_device_file_name }}" oci_sparse_volume_device_file_name = "{{ terraform_oci_sparse_volume_device_file_name }}" diff --git a/playbooks/roles/guestfs/tasks/bringup/main.yml b/playbooks/roles/guestfs/tasks/bringup/main.yml index bd9f52603..3fd677ff4 100644 --- a/playbooks/roles/guestfs/tasks/bringup/main.yml +++ b/playbooks/roles/guestfs/tasks/bringup/main.yml @@ -102,7 +102,7 @@ path: "{{ storagedir }}/{{ inventory_hostname }}/extra{{ item }}.{{ libvirt_extra_drive_format }}" ansible.builtin.include_tasks: file: "{{ role_path }}/tasks/bringup/extra-disks.yml" - loop: "{{ range(0, 4) | list }}" + loop: "{{ range(0, libvirt_extra_storage_drive_count) | list }}" when: - not libvirt_enable_largeio|bool diff --git a/playbooks/roles/ltp/tasks/main.yml b/playbooks/roles/ltp/tasks/main.yml index 830ec3051..1b966771f 100644 --- a/playbooks/roles/ltp/tasks/main.yml +++ b/playbooks/roles/ltp/tasks/main.yml @@ -162,15 +162,52 @@ target: all jobs: "{{ ansible_processor_nproc }}" -- name: Ensure /opt has correct permissions - tags: ["ltp"] +- name: Set the pathname of the install directory + tags: ["build", "ltp"] + ansible.builtin.set_fact: + ltp_install_dir: "{{ data_path }}/opt" + +- name: Remove existing ltp install directory + tags: ["build", "ltp"] + become: true + become_flags: "su - -c" + become_method: ansible.builtin.sudo + ansible.builtin.file: + path: "{{ ltp_install_dir }}" + state: absent + +- name: Create a fresh ltp install directory + tags: ["build", "ltp"] become: true become_flags: "su - -c" become_method: ansible.builtin.sudo ansible.builtin.file: + path: "{{ ltp_install_dir }}" + owner: "root" + group: "root" + mode: "u=rwx,g=rwx,o=rwxt" state: directory + +- name: Remove /opt + tags: ["build", "ltp"] + become: true + become_flags: "su - -c" + become_method: ansible.builtin.sudo + ansible.builtin.file: path: "/opt" - mode: "u=rwx,g=rwx,o=rwxt" + state: absent + +- name: Replace /opt with a symlink + tags: ["build", "ltp"] + become: true + become_flags: "su - -c" + become_method: ansible.builtin.sudo + ansible.builtin.file: + src: "{{ ltp_install_dir }}" + dest: "/opt" + owner: "root" + group: "root" + state: link - name: Install ltp on the test systems tags: ["ltp"] diff --git a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml index 5139825ea..6046c84ac 100644 --- a/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml +++ b/playbooks/roles/pynfs/tasks/install-deps/redhat/main.yml @@ -27,3 +27,5 @@ - name: Install xdrlib3 ansible.builtin.pip: name: xdrlib3 + when: + - ansible_distribution == "Fedora" or ansible_distribution_major_version | int > 8 diff --git a/playbooks/roles/terraform/tasks/main.yml b/playbooks/roles/terraform/tasks/main.yml index 91c424c4a..dabc9384e 100644 --- a/playbooks/roles/terraform/tasks/main.yml +++ b/playbooks/roles/terraform/tasks/main.yml @@ -118,6 +118,7 @@ path: "{{ sshconfig }}" insertbefore: BOF append_newline: true + create: true marker: "# {mark} Managed by kdevops" mode: "u=rw,g=r,o=r" block: "Include {{ kdevops_ssh_config_prefix }}*" diff --git a/playbooks/roles/update_etc_hosts/tasks/main.yml b/playbooks/roles/update_etc_hosts/tasks/main.yml index dc40ededd..17c85dc53 100644 --- a/playbooks/roles/update_etc_hosts/tasks/main.yml +++ b/playbooks/roles/update_etc_hosts/tasks/main.yml @@ -51,8 +51,8 @@ become_method: sudo ansible.builtin.lineinfile: dest: /etc/hosts - regexp: ".*{{ item }}$" - line: "{{ hostvars[item].ansible_all_ipv4_addresses | ipaddr(private_network) | first }} {{ item }}" + regexp: '.*{{ item }}$' + line: "{{ hostvars[item].ansible_all_ipv4_addresses | ansible.utils.ipaddr(private_network) | first }} {{ item }}" state: present with_items: "{{ ueh_hosts }}" when: diff --git a/requirements.yml b/requirements.yml new file mode 100644 index 000000000..a22691d3f --- /dev/null +++ b/requirements.yml @@ -0,0 +1,8 @@ +--- +collections: + - name: ansible.posix + - name: ansible.utils + - name: cloud.terraform + - name: community.docker + - name: community.general + - name: community.libvirt diff --git a/scripts/ansible.Makefile b/scripts/ansible.Makefile index b0d2a8c12..0ce8168fb 100644 --- a/scripts/ansible.Makefile +++ b/scripts/ansible.Makefile @@ -2,3 +2,8 @@ AV ?= 0 export ANSIBLE_VERBOSE := $(shell scripts/validate_av.py --av "$(AV)") + +ansible-requirements: + $(Q)ansible-galaxy install -r requirements.yml +PHONY += ansible-requirements +DEFAULT_DEPS += ansible-requirements diff --git a/scripts/devconfig.Makefile b/scripts/devconfig.Makefile index 146c70f78..db68dd183 100644 --- a/scripts/devconfig.Makefile +++ b/scripts/devconfig.Makefile @@ -57,7 +57,6 @@ extend-extra-args-devconfig: PHONY += devconfig devconfig: $(KDEVOPS_NODES) $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ - --limit 'baseline:dev:nfsd' \ $(KDEVOPS_PLAYBOOKS_DIR)/devconfig.yml \ --extra-vars="$(BOOTLINUX_ARGS)" \ --extra-vars '{ kdevops_cli_install: True }' \ @@ -72,7 +71,6 @@ ifeq (y,$(CONFIG_SYSCTL_TUNING)) PHONY += sysctl-tunings sysctl-tunings: $(KDEVOPS_NODES) $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ - --limit 'baseline:dev:nfsd' \ $(KDEVOPS_PLAYBOOKS_DIR)/devconfig.yml \ --extra-vars="$(BOOTLINUX_ARGS)" $(LIMIT_HOSTS) --tags vars,sysctl diff --git a/scripts/firstconfig.Makefile b/scripts/firstconfig.Makefile index 9f8a63a8f..4904afcc7 100644 --- a/scripts/firstconfig.Makefile +++ b/scripts/firstconfig.Makefile @@ -2,7 +2,6 @@ firstconfig: $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ - --limit 'baseline:dev' \ --extra-vars '{ kdevops_cli_install: True }' \ --tags vars_simple,firstconfig \ $(KDEVOPS_PLAYBOOKS_DIR)/devconfig.yml diff --git a/scripts/gen-hosts.Makefile b/scripts/gen-hosts.Makefile index 0d1e0cd77..c809b1da1 100644 --- a/scripts/gen-hosts.Makefile +++ b/scripts/gen-hosts.Makefile @@ -3,6 +3,7 @@ KDEVOPS_PLAYBOOKS_DIR_FULL_PATH=$(TOPDIR_PATH)/$(KDEVOPS_PLAYBOOKS_DIR) KDEVOPS_HOSTS_TEMPLATE_DIR=$(KDEVOPS_PLAYBOOKS_DIR_FULL_PATH)/roles/gen_hosts/templates +GENHOSTS_EXTRA_ARGS += topdir_path='$(TOPDIR_PATH)' GENHOSTS_EXTRA_ARGS += kdevops_playbooks_dir='$(KDEVOPS_PLAYBOOKS_DIR)' # Relative path so that ansible can work with it diff --git a/scripts/gen_ssh_key.sh b/scripts/gen_ssh_key.sh index 72bdb2269..4f656fe35 100755 --- a/scripts/gen_ssh_key.sh +++ b/scripts/gen_ssh_key.sh @@ -5,4 +5,4 @@ source ${TOPDIR}/.config source ${TOPDIR}/scripts/lib.sh echo "Creating $KDEVOPS_SSH_PRIVKEY" -ssh-keygen -b 2048 -t rsa -f $KDEVOPS_SSH_PRIVKEY -q -N "" +ssh-keygen -t rsa -C generated-by-kdevops -f $KDEVOPS_SSH_PRIVKEY -q -N "" diff --git a/scripts/guestfs.Makefile b/scripts/guestfs.Makefile index f6c350a43..953c61493 100644 --- a/scripts/guestfs.Makefile +++ b/scripts/guestfs.Makefile @@ -96,6 +96,7 @@ PHONY += status_guestfs destroy_guestfs: $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ + --limit 'baseline:dev:service' \ playbooks/guestfs.yml \ --extra-vars=@./extra_vars.yaml \ --tags destroy diff --git a/scripts/provision.Makefile b/scripts/provision.Makefile index f04264f6b..b13d31e80 100644 --- a/scripts/provision.Makefile +++ b/scripts/provision.Makefile @@ -70,7 +70,6 @@ KDEVOPS_MRPROPER += $(KDEVOPS_PROVISIONED_DEVCONFIG) $(KDEVOPS_PROVISIONED_DEVCONFIG): $(Q)if [[ "$(CONFIG_KDEVOPS_ANSIBLE_PROVISION_PLAYBOOK)" != "" ]]; then \ ansible-playbook $(ANSIBLE_VERBOSE) \ - --limit 'baseline:dev' \ $(KDEVOPS_PLAYBOOKS_DIR)/$(KDEVOPS_ANSIBLE_PROVISION_PLAYBOOK) ;\ fi $(Q)touch $(KDEVOPS_PROVISIONED_DEVCONFIG) diff --git a/scripts/ssh.Makefile b/scripts/ssh.Makefile index d18a03e09..82e9a8dd3 100644 --- a/scripts/ssh.Makefile +++ b/scripts/ssh.Makefile @@ -10,12 +10,7 @@ ifeq (y,$(CONFIG_KDEVOPS_SSH_CONFIG_UPDATE)) SSH_CONFIG_FILE:=$(subst ",,$(CONFIG_KDEVOPS_SSH_CONFIG)) ANSIBLE_EXTRA_ARGS += sshconfig=$(shell realpath $(SSH_CONFIG_FILE)) -ifeq (y,$(CONFIG_TOPDIR_PATH_HAS_SHA256SUM)) -SSH_CONFIG_SUFFIX:=$(CONFIG_TOPDIR_PATH_SHA256SUM) -else -SSH_CONFIG_SUFFIX:=$(CONFIG_KDEVOPS_HOST_PREFIX) -endif -ANSIBLE_EXTRA_ARGS += kdevops_ssh_config=$(shell scripts/append-makefile-vars.sh $(CONFIG_KDEVOPS_SSH_CONFIG_PREFIX) $(SSH_CONFIG_SUFFIX)) +ANSIBLE_EXTRA_ARGS += kdevops_ssh_config=$(shell scripts/append-makefile-vars.sh $(CONFIG_KDEVOPS_SSH_CONFIG_PREFIX) $(TOPDIR_PATH_SHA256SUM)) endif # CONFIG_KDEVOPS_SSH_CONFIG_UPDATE diff --git a/scripts/terraform.Makefile b/scripts/terraform.Makefile index d1411a186..4d738c821 100644 --- a/scripts/terraform.Makefile +++ b/scripts/terraform.Makefile @@ -212,7 +212,9 @@ $(KDEVOPS_PROVISIONED_SSH): --inventory localhost, \ playbooks/terraform.yml --tags ssh \ --extra-vars=@./extra_vars.yaml - $(Q)ansible $(ANSIBLE_VERBOSE) -i hosts all -m wait_for_connection + $(Q)ansible $(ANSIBLE_VERBOSE) \ + -i hosts baseline:dev:service \ + -m wait_for_connection $(Q)touch $(KDEVOPS_PROVISIONED_SSH) status_terraform: @@ -232,5 +234,6 @@ destroy_terraform_base: $(KDEVOPS_TFVARS): $(KDEVOPS_TFVARS_TEMPLATE) .config $(Q)ansible-playbook $(ANSIBLE_VERBOSE) \ + --inventory localhost, \ $(KDEVOPS_PLAYBOOKS_DIR)/gen_tfvars.yml \ --extra-vars=@./extra_vars.yaml diff --git a/scripts/update_ssh_config_guestfs.py b/scripts/update_ssh_config_guestfs.py index 8b212a9c1..143ff4fc2 100755 --- a/scripts/update_ssh_config_guestfs.py +++ b/scripts/update_ssh_config_guestfs.py @@ -85,14 +85,9 @@ def main(): with open(f'{topdir}/{extra_vars["kdevops_nodes"]}') as stream: nodes = yaml.safe_load(stream) - if extra_vars.get("topdir_path_has_sha256sum", False): - ssh_config = ( - f'{Path.home()}/.ssh/config_kdevops_{extra_vars["topdir_path_sha256sum"]}' - ) - else: - ssh_config = ( - f'{Path.home()}/.ssh/config_kdevops_{extra_vars["kdevops_host_prefix"]}' - ) + ssh_config = ( + f'{Path.home()}/.ssh/config_kdevops_{extra_vars["topdir_path_sha256sum"]}' + ) # make a stanza for each node sshconf = open(ssh_config, "w") diff --git a/terraform/aws/kconfigs/Kconfig.compute b/terraform/aws/kconfigs/Kconfig.compute index bae0ea1c9..4b9c6efb6 100644 --- a/terraform/aws/kconfigs/Kconfig.compute +++ b/terraform/aws/kconfigs/Kconfig.compute @@ -99,9 +99,6 @@ config TERRAFORM_AWS_DISTRO_DEBIAN config TERRAFORM_AWS_DISTRO_FEDORA bool "Fedora Core" -config TERRAFORM_AWS_DISTRO_OL - bool "Oracle Linux" - config TERRAFORM_AWS_DISTRO_RHEL bool "Red Hat Enterprise Linux" @@ -116,7 +113,6 @@ endchoice source "terraform/aws/kconfigs/distros/Kconfig.amazon" source "terraform/aws/kconfigs/distros/Kconfig.debian" source "terraform/aws/kconfigs/distros/Kconfig.fedora" -source "terraform/aws/kconfigs/distros/Kconfig.oracle" source "terraform/aws/kconfigs/distros/Kconfig.rhel" source "terraform/aws/kconfigs/distros/Kconfig.sles" source "terraform/aws/kconfigs/distros/Kconfig.custom" diff --git a/terraform/aws/kconfigs/Kconfig.location b/terraform/aws/kconfigs/Kconfig.location index b457166e0..e5dacb9dd 100644 --- a/terraform/aws/kconfigs/Kconfig.location +++ b/terraform/aws/kconfigs/Kconfig.location @@ -573,11 +573,11 @@ endchoice endif # TERRAFORM_AWS_REGION_US_EAST_2 -if TERRAFORM_AWS_REGION_US_WEST_2 +if TERRAFORM_AWS_REGION_US_WEST_1 choice prompt "AWS availability zone" - default TERRAFORM_AWS_AV_ZONE_US_WEST_2B + default TERRAFORM_AWS_AV_ZONE_US_WEST_1B help This option sets the AWS availablity zone to the specified value. If you wish to expand on this list send a patch after reading this @@ -591,6 +591,23 @@ config TERRAFORM_AWS_AV_ZONE_US_WEST_1B help This option selects the us-west-1b availability zone. +endchoice + +endif # TERRAFORM_AWS_REGION_US_WEST_1 + +if TERRAFORM_AWS_REGION_US_WEST_2 + +choice + prompt "AWS availability zone" + default TERRAFORM_AWS_AV_ZONE_US_WEST_2B + help + This option sets the AWS availablity zone to the specified value. + If you wish to expand on this list send a patch after reading this + list: + + https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html + https://gist.github.com/neilstuartcraig/0ccefcf0887f29b7f240 + config TERRAFORM_AWS_AV_ZONE_US_WEST_2B bool "us-west-2b" help diff --git a/terraform/aws/kconfigs/distros/Kconfig.oracle b/terraform/aws/kconfigs/distros/Kconfig.oracle deleted file mode 100644 index fd4166c45..000000000 --- a/terraform/aws/kconfigs/distros/Kconfig.oracle +++ /dev/null @@ -1,48 +0,0 @@ -if TERRAFORM_AWS_DISTRO_OL - -config TERRAFORM_AWS_AMI_OWNER - string - output yaml - default "amazon" - -if TARGET_ARCH_X86_64 - -choice - prompt "Oracle Linux release" - default TERRAFORM_AWS_OL9_X86_64 - -config TERRAFORM_AWS_OL8_X86_64 - bool "Oracle Linux 8 (x86)" - -config TERRAFORM_AWS_OL9_X86_64 - bool "Oracle Linux 9 (x86)" - -endchoice - -config TERRAFORM_AWS_NS - string - output yaml - default "Oracle-Linux-8.*x86_64-*" if TERRAFORM_AWS_OL8_X86_64 - default "Oracle-Linux-9.*x86_64-*" if TERRAFORM_AWS_OL9_X86_64 - -endif # TARGET_ARCH_X86_64 - -if TARGET_ARCH_ARM64 - -choice - prompt "Oracle Linux release" - default TERRAFORM_AWS_OL9_ARM64 - -config TERRAFORM_AWS_OL9_ARM64 - bool "Oracle Linux 9 (arm64)" - -endchoice - -config TERRAFORM_AWS_NS - string - output yaml - default "Oracle-Linux-9.*arm64-*" if TERRAFORM_AWS_OL9_ARM64 - -endif # TARGET_ARCH_ARM64 - -endif # TERRAFORM_AWS_DISTRO_OL diff --git a/terraform/aws/main.tf b/terraform/aws/main.tf index 8b343484f..82a936c77 100644 --- a/terraform/aws/main.tf +++ b/terraform/aws/main.tf @@ -15,9 +15,6 @@ resource "aws_vpc" "kdevops_vpc" { cidr_block = "10.0.0.0/16" enable_dns_hostnames = true enable_dns_support = true - tags = { - Name = "kdevops" - } } resource "aws_subnet" "kdevops_subnet" { @@ -132,10 +129,6 @@ resource "aws_instance" "kdevops_instance" { data.template_cloudinit_config.kdevops_config.*.rendered, count.index, ) - - tags = { - Name = element(var.kdevops_nodes, count.index), - } } module "kdevops_ebs_volumes" { @@ -158,9 +151,6 @@ resource "aws_eip" "kdevops_eip" { resource "aws_internet_gateway" "kdevops_gw" { vpc_id = aws_vpc.kdevops_vpc.id - tags = { - Name = "kdevops-gw" - } } resource "aws_route_table" "kdevops_rt" { @@ -169,9 +159,6 @@ resource "aws_route_table" "kdevops_rt" { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.kdevops_gw.id } - tags = { - Name = "kdevops_rt" - } } resource "aws_route_table_association" "kdevops_rt_assoc" { diff --git a/terraform/azure/kconfigs/Kconfig.location b/terraform/azure/kconfigs/Kconfig.location index a7e8bae37..2cc0e419d 100644 --- a/terraform/azure/kconfigs/Kconfig.location +++ b/terraform/azure/kconfigs/Kconfig.location @@ -134,3 +134,19 @@ config TERRAFORM_AZURE_LOCATION default "westus2" if TERRAFORM_AZURE_REGION_WESTUS2 default "westus3" if TERRAFORM_AZURE_REGION_WESTUS3 default "westcentralus" if TERRAFORM_AZURE_REGION_WESTCENTRALUS + +config TERRAFORM_AZURE_RESOURCE_GROUP_NAME + string "Azure resource group name" + output yaml + default "kdevops_resource_group" + help + An Azure resource group is a container that holds related + resources so they can be managed as a single unit. These + resources share the same life cycle and are deployed, + updated, and deleted together. Resource groups are global + to your subscription. + + To run concurrent kdevops jobs in Azure, each run must + have a unique resouce group name. + + https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/overview#resource-groups diff --git a/terraform/azure/kconfigs/Kconfig.storage b/terraform/azure/kconfigs/Kconfig.storage index 5bfe1441c..d4885163a 100644 --- a/terraform/azure/kconfigs/Kconfig.storage +++ b/terraform/azure/kconfigs/Kconfig.storage @@ -64,6 +64,7 @@ endchoice config TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE int output yaml + default 1 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_1 default 2 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_2 default 3 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_3 default 4 if TERRAFORM_AZURE_MANAGED_DISKS_PER_INSTANCE_4 diff --git a/terraform/azure/kconfigs/publishers/Kconfig.rhel b/terraform/azure/kconfigs/publishers/Kconfig.rhel index 16ec92903..3a6a7d9a1 100644 --- a/terraform/azure/kconfigs/publishers/Kconfig.rhel +++ b/terraform/azure/kconfigs/publishers/Kconfig.rhel @@ -4,7 +4,7 @@ if TARGET_ARCH_X86_64 choice prompt "Red Hat Enterprise Linux release" - default TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_5 + default TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_6 help This option specifies which of a publisher's offers to use when creating kdevops compute instances. @@ -21,6 +21,12 @@ config TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_9 This option sets the OS image to Red Hat Enterprise Linux release 8 update 9. +config TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_10 + bool "RHEL 8.10 x64" + help + This option sets the OS image to Red Hat Enterprise Linux + release 8 update 10. + config TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_5 bool "RHEL 9.5 x64" help @@ -40,6 +46,7 @@ config TERRAFORM_AZURE_IMAGE_OFFER output yaml default "RHEL" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_7_9 default "RHEL" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_9 + default "RHEL" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_10 default "RHEL" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_5 default "RHEL" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_6 @@ -48,6 +55,7 @@ config TERRAFORM_AZURE_IMAGE_SKU output yaml default "7_9" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_7_9 default "8_9" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_9 + default "8_10" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_8_10 default "9_5" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_5 default "9_6" if TERRAFORM_AZURE_IMAGE_LINUX_RHEL_9_6 diff --git a/terraform/azure/main.tf b/terraform/azure/main.tf index 2df0dc609..8dcead78b 100644 --- a/terraform/azure/main.tf +++ b/terraform/azure/main.tf @@ -1,12 +1,8 @@ # Azure terraform provider main resource "azurerm_resource_group" "kdevops_group" { - name = "kdevops_resource_group" + name = var.azure_resource_group_name location = var.azure_location - - tags = { - environment = "kdevops tests" - } } locals { @@ -18,10 +14,6 @@ resource "azurerm_virtual_network" "kdevops_network" { address_space = [local.kdevops_private_net] location = var.azure_location resource_group_name = azurerm_resource_group.kdevops_group.name - - tags = { - environment = "kdevops tests" - } } resource "azurerm_subnet" "kdevops_subnet" { @@ -37,10 +29,6 @@ resource "azurerm_public_ip" "kdevops_publicip" { location = var.azure_location resource_group_name = azurerm_resource_group.kdevops_group.name allocation_method = "Static" - - tags = { - environment = "kdevops tests" - } } resource "azurerm_network_security_group" "kdevops_sg" { @@ -59,10 +47,6 @@ resource "azurerm_network_security_group" "kdevops_sg" { source_address_prefix = "*" destination_address_prefix = "*" } - - tags = { - environment = "kdevops tests" - } } resource "azurerm_network_interface_security_group_association" "kdevops_sg_assoc" { @@ -72,10 +56,11 @@ resource "azurerm_network_interface_security_group_association" "kdevops_sg_asso } resource "azurerm_network_interface" "kdevops_nic" { - count = local.kdevops_num_boxes - name = format("kdevops_nic_%02d", count.index + 1) - location = var.azure_location - resource_group_name = azurerm_resource_group.kdevops_group.name + count = local.kdevops_num_boxes + accelerated_networking_enabled = true + name = format("kdevops_nic_%02d", count.index + 1) + location = var.azure_location + resource_group_name = azurerm_resource_group.kdevops_group.name ip_configuration { name = "kdevops_nic_configuration" @@ -83,10 +68,6 @@ resource "azurerm_network_interface" "kdevops_nic" { private_ip_address_allocation = "Dynamic" public_ip_address_id = element(azurerm_public_ip.kdevops_publicip.*.id, count.index) } - - tags = { - environment = "kdevops tests" - } } resource "azurerm_linux_virtual_machine" "kdevops_vm" { @@ -132,10 +113,6 @@ resource "azurerm_linux_virtual_machine" "kdevops_vm" { username = var.ssh_config_user public_key = var.ssh_config_pubkey_file != "" ? file(var.ssh_config_pubkey_file) : "" } - - tags = { - environment = "kdevops tests" - } } module "kdevops_managed_disks" { diff --git a/terraform/azure/provider.tf b/terraform/azure/provider.tf index 97baad424..4b6380bbc 100644 --- a/terraform/azure/provider.tf +++ b/terraform/azure/provider.tf @@ -2,7 +2,7 @@ terraform { required_providers { azurerm = { source = "hashicorp/azurerm" - version = "~>3" + version = "> 4" } } } diff --git a/terraform/azure/vars.tf b/terraform/azure/vars.tf index 2d0685790..dd3c20ed0 100644 --- a/terraform/azure/vars.tf +++ b/terraform/azure/vars.tf @@ -33,6 +33,11 @@ variable "azure_managed_disks_tier" { type = string } +variable "azure_resource_group_name" { + description = "Name of the set of resources for this run" + type = string +} + variable "azure_subscription_id" { description = "Your Azure subscription ID" type = string diff --git a/terraform/gce/kconfigs/Kconfig.compute b/terraform/gce/kconfigs/Kconfig.compute index e647c9bb2..b0c999293 100644 --- a/terraform/gce/kconfigs/Kconfig.compute +++ b/terraform/gce/kconfigs/Kconfig.compute @@ -55,14 +55,22 @@ config TERRAFORM_GCE_MACHINE_FAMILY_C4_STANDARD endchoice +source "terraform/gce/kconfigs/machines/Kconfig.e2-highcpu" +source "terraform/gce/kconfigs/machines/Kconfig.e2-standard" source "terraform/gce/kconfigs/machines/Kconfig.n1-standard" +source "terraform/gce/kconfigs/machines/Kconfig.n1-highcpu" source "terraform/gce/kconfigs/machines/Kconfig.n2-standard" source "terraform/gce/kconfigs/machines/Kconfig.n2-highcpu" source "terraform/gce/kconfigs/machines/Kconfig.n2d-standard" source "terraform/gce/kconfigs/machines/Kconfig.n2d-highcpu" source "terraform/gce/kconfigs/machines/Kconfig.n4-standard" source "terraform/gce/kconfigs/machines/Kconfig.n4-highcpu" +source "terraform/gce/kconfigs/machines/Kconfig.c3-standard" +source "terraform/gce/kconfigs/machines/Kconfig.c3d-standard" source "terraform/gce/kconfigs/machines/Kconfig.c4-standard" +source "terraform/gce/kconfigs/machines/Kconfig.c4a-standard" +source "terraform/gce/kconfigs/machines/Kconfig.c4d-standard" +source "terraform/gce/kconfigs/machines/Kconfig.a2-standard" choice prompt "OS Distributor" @@ -77,9 +85,6 @@ config TERRAFORM_GCE_DISTRO_CENTOS config TERRAFORM_GCE_DISTRO_DEBIAN bool "Debian" -config TERRAFORM_GCE_DISTRO_FEDORA - bool "Fedora" - config TERRAFORM_GCE_DISTRO_OL bool "Oracle Linux" @@ -99,7 +104,6 @@ endchoice source "terraform/gce/kconfigs/images/Kconfig.centos" source "terraform/gce/kconfigs/images/Kconfig.debian" -source "terraform/gce/kconfigs/images/Kconfig.fedora" source "terraform/gce/kconfigs/images/Kconfig.oracle" source "terraform/gce/kconfigs/images/Kconfig.opensuse" source "terraform/gce/kconfigs/images/Kconfig.rhel" diff --git a/terraform/gce/kconfigs/Kconfig.storage b/terraform/gce/kconfigs/Kconfig.storage index a71a5d627..717f50dfe 100644 --- a/terraform/gce/kconfigs/Kconfig.storage +++ b/terraform/gce/kconfigs/Kconfig.storage @@ -195,14 +195,14 @@ config TERRAFORM_GCE_DISK_IOPS int "Provisioned IOPS for each attached disk" output yaml range 125 120000 - default 240 + default 3000 depends on TERRAFORM_GCE_DISK_NEEDS_IOPS config TERRAFORM_GCE_DISK_THROUGHPUT int "Provisioned throughput for each attached disk" output yaml - range 125 600 - default 240 + range 125 2400 + default 300 depends on TERRAFORM_GCE_DISK_NEEDS_THROUGHPUT config TERRAFORM_GCE_DATA_VOLUME_DEVICE_FILE_NAME diff --git a/terraform/gce/kconfigs/images/Kconfig.fedora b/terraform/gce/kconfigs/images/Kconfig.fedora deleted file mode 100644 index 90999617f..000000000 --- a/terraform/gce/kconfigs/images/Kconfig.fedora +++ /dev/null @@ -1,95 +0,0 @@ -if TERRAFORM_GCE_DISTRO_FEDORA - -config TERRAFORM_GCE_IMAGE_PROJECT - string - output yaml - default "fedora-coreos-cloud" - -config TERRAFORM_GCE_IMAGE_SIZE - int - output yaml - default 10 - -if TARGET_ARCH_X86_64 - -choice - prompt "Fedora stream to use" - default TERRAFORM_GCE_IMAGE_FEDORA_STABLE_X86_64 - -config TERRAFORM_GCE_IMAGE_FEDORA_STABLE_X86_64 - bool "stable (x86)" - help - The stable stream is the most reliable stream offered with - changes only reaching that stream after spending a period - of time in the testing stream. - -config TERRAFORM_GCE_IMAGE_FEDORA_TESTING_X86_64 - bool "testing (x86)" - help - The testing stream represents what is coming in the next - stable release. Content in this stream is updated - regularly and offers our community an opportunity to catch - breaking changes before they hit the stable stream. - -config TERRAFORM_GCE_IMAGE_FEDORA_NEXT_X86_64 - bool "next (x86)" - help - The next stream represents the future. It will often be - used to experiment with new features and also test out - rebases of our platform on top of the next major version - of Fedora. The content in the next stream will also - eventually filter down into testing and on to stable. - -endchoice - -config TERRAFORM_GCE_IMAGE_FAMILY - string - output yaml - default "fedora-coreos-stable" if TERRAFORM_GCE_IMAGE_FEDORA_STABLE_X86_64 - default "fedora-coreos-testing" if TERRAFORM_GCE_IMAGE_FEDORA_TESTING_X86_64 - default "fedora-coreos-next" if TERRAFORM_GCE_IMAGE_FEDORA_NEXT_X86_64 - -endif # TARGET_ARCH_X86_64 - -if TARGET_ARCH_ARM64 - -choice - prompt "Fedora stream to use" - default TERRAFORM_GCE_IMAGE_FEDORA_STABLE_ARM64 - -config TERRAFORM_GCE_IMAGE_FEDORA_STABLE_ARM64 - bool "stable (arm64)" - help - The stable stream is the most reliable stream offered with - changes only reaching that stream after spending a period - of time in the testing stream. - -config TERRAFORM_GCE_IMAGE_FEDORA_TESTING_ARM64 - bool "testing (arm64)" - help - The testing stream represents what is coming in the next - stable release. Content in this stream is updated - regularly and offers our community an opportunity to catch - breaking changes before they hit the stable stream. - -config TERRAFORM_GCE_IMAGE_FEDORA_NEXT_ARM64 - bool "next (arm64)" - help - The next stream represents the future. It will often be - used to experiment with new features and also test out - rebases of our platform on top of the next major version - of Fedora. The content in the next stream will also - eventually filter down into testing and on to stable. - -endchoice - -config TERRAFORM_GCE_IMAGE_FAMILY - string - output yaml - default "fedora-coreos-stable-arm64" if TERRAFORM_GCE_IMAGE_FEDORA_STABLE_ARM64 - default "fedora-coreos-testing-arm64" if TERRAFORM_GCE_IMAGE_FEDORA_TESTING_ARM64 - default "fedora-coreos-next-arm64" if TERRAFORM_GCE_IMAGE_FEDORA_NEXT_ARM64 - -endif # TARGET_ARCH_ARM64 - -endif # TERRAFORM_GCE_DISTRO_FEDORA diff --git a/terraform/gce/kconfigs/machines/Kconfig.a2-standard b/terraform/gce/kconfigs/machines/Kconfig.a2-standard new file mode 100644 index 000000000..5e54db36b --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.a2-standard @@ -0,0 +1,56 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_A2_HIGHGPU + +choice + prompt "GCE Machine Type" + default TERRAFORM_GCE_MACHINE_A2_HIGHGPU_1G + help + A2 High GPU machine types have a fixed number of A100 + 40GB GPUs. + +config TERRAFORM_GCE_MACHINE_A2_HIGHGPU_1G + bool "a2-highgpu-1g" + help + 12 vCPUs, 85GB of memory, and 1 GPU with 40GB of GPU + memory. + +config TERRAFORM_GCE_MACHINE_A2_HIGHGPU_2G + bool "a2-highgpu-2g" + help + 24 vCPUs, 170GB of memory, and 2 GPUs with 80GB of GPU + memory. + +config TERRAFORM_GCE_MACHINE_A2_HIGHGPU_4G + bool "a2-highgpu-4g" + help + 48 vCPUs, 340GB of memory, and 4 GPUs with 160GB of GPU + memory. + +config TERRAFORM_GCE_MACHINE_A2_HIGHGPU_8G + bool "a2-highgpu-8g" + help + 96 vCPUs, 680GB of memory, and 8 GPUs with 320GB of GPU + memory. + +config TERRAFORM_GCE_MACHINE_A2_HIGHGPU_16G + bool "a2-highgpu-16g" + help + 96 vCPUs, 1360GB of memory, and 16 GPUs with 640GB of GPU + memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "a2-highgpu-1g" if TERRAFORM_GCE_MACHINE_A2_HIGHGPU_1G + default "a2-highgpu-2g" if TERRAFORM_GCE_MACHINE_A2_HIGHGPU_2G + default "a2-highgpu-4g" if TERRAFORM_GCE_MACHINE_A2_HIGHGPU_4G + default "a2-highgpu-8g" if TERRAFORM_GCE_MACHINE_A2_HIGHGPU_8G + default "a2-highgpu-16g" if TERRAFORM_GCE_MACHINE_A2_HIGHGPU_16G + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "pd-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_A2_HIGHGPU diff --git a/terraform/gce/kconfigs/machines/Kconfig.c3-standard b/terraform/gce/kconfigs/machines/Kconfig.c3-standard new file mode 100644 index 000000000..183ac315c --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.c3-standard @@ -0,0 +1,41 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_C3_STANDARD + +choice + prompt "GCE Machine Type" + default TERRAFORM_GCE_MACHINE_C3_STANDARD_4 + help + C3 VMs are powered by the 4th generation Intel Xeon + Scalable processors (code-named Sapphire Rapids), DDR5 + memory, and Titanium, enabling higher levels of networking + performance, isolation and security. + +config TERRAFORM_GCE_MACHINE_C3_STANDARD_4 + bool "c3-standard-4" + help + 4 vCPUs (2 cores) and 16GB of memory. + +config TERRAFORM_GCE_MACHINE_C3_STANDARD_8 + bool "c3-standard-8" + help + 8 vCPUs (4 cores) and 32GB of memory. + +config TERRAFORM_GCE_MACHINE_C3_STANDARD_22 + bool "c3-standard-22" + help + 22 vCPUs (11 cores) and 88GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "c3-standard-4" if TERRAFORM_GCE_MACHINE_C3_STANDARD_4 + default "c3-standard-8" if TERRAFORM_GCE_MACHINE_C3_STANDARD_8 + default "c3-standard-22" if TERRAFORM_GCE_MACHINE_C3_STANDARD_22 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "hyperdisk-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_C3_STANDARD diff --git a/terraform/gce/kconfigs/machines/Kconfig.c3d-standard b/terraform/gce/kconfigs/machines/Kconfig.c3d-standard new file mode 100644 index 000000000..4af821e5a --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.c3d-standard @@ -0,0 +1,46 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_C3D_STANDARD + +choice + prompt "GCE Machine Type" + default TERRAFORM_GCE_MACHINE_C3D_STANDARD_4 + help + C3D VMs are powered by the 4th-gen AMD EPYC (Genoa) + processor. C3D uses Titanium, enabling higher levels + of networking performance, isolation and security. + +config TERRAFORM_GCE_MACHINE_C3D_STANDARD_4 + bool "c3d-standard-4" + help + 4 vCPUs (2 cores) and 16GB of memory. + +config TERRAFORM_GCE_MACHINE_C3D_STANDARD_8 + bool "c3d-standard-8" + help + 8 vCPUs (4 cores) and 32GB of memory. + +config TERRAFORM_GCE_MACHINE_C3D_STANDARD_16 + bool "c3d-standard-16" + help + 16 vCPUs (8 cores) and 64GB of memory. + +config TERRAFORM_GCE_MACHINE_C3D_STANDARD_30 + bool "c3d-standard-30" + help + 30 vCPUs (15 cores) and 120GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "c3d-standard-4" if TERRAFORM_GCE_MACHINE_C3D_STANDARD_4 + default "c3d-standard-8" if TERRAFORM_GCE_MACHINE_C3D_STANDARD_8 + default "c3d-standard-16" if TERRAFORM_GCE_MACHINE_C3D_STANDARD_16 + default "c3d-standard-30" if TERRAFORM_GCE_MACHINE_C3D_STANDARD_30 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "hyperdisk-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_C3D_STANDARD diff --git a/terraform/gce/kconfigs/machines/Kconfig.c4-standard b/terraform/gce/kconfigs/machines/Kconfig.c4-standard index 75c2eed2d..3ec7f4ec1 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.c4-standard +++ b/terraform/gce/kconfigs/machines/Kconfig.c4-standard @@ -4,35 +4,39 @@ choice prompt "GCE Machine Type" default TERRAFORM_GCE_MACHINE_C4_STANDARD_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + C4 VMs are powered by 6th generation (code-named Granite + Rapids) or 5th generation (code-named Emerald Rapids) + Intel Xeon Scalable processors and Titanium. config TERRAFORM_GCE_MACHINE_C4_STANDARD_2 bool "c4-standard-2" help - 2 vCPU (1 core) and 7GB of memory. + 2 vCPUs (1 core) and 7GB of memory. config TERRAFORM_GCE_MACHINE_C4_STANDARD_4 bool "c4-standard-4" help - 4 vCPU (2 core) and 15GB of memory. + 4 vCPUs (2 core) and 15GB of memory. config TERRAFORM_GCE_MACHINE_C4_STANDARD_8 bool "c4-standard-8" help - 8 vCPU (4 cores) and 30GB of memory. + 8 vCPUs (4 cores) and 30GB of memory. config TERRAFORM_GCE_MACHINE_C4_STANDARD_16 bool "c4-standard-16" help - 16 vCPU (8 cores) and 60GB of memory. + 16 vCPUs (8 cores) and 60GB of memory. config TERRAFORM_GCE_MACHINE_C4_STANDARD_24 bool "c4-standard-24" help - 24 vCPU (12 cores) and 90GB of memory. + 24 vCPUs (12 cores) and 90GB of memory. + +config TERRAFORM_GCE_MACHINE_C4_STANDARD_32 + bool "c4-standard-32" + help + 32 vCPUs (16 cores) and 120 of memory. endchoice @@ -44,6 +48,7 @@ config TERRAFORM_GCE_MACHINE_TYPE default "c4-standard-8" if TERRAFORM_GCE_MACHINE_C4_STANDARD_8 default "c4-standard-16" if TERRAFORM_GCE_MACHINE_C4_STANDARD_16 default "c4-standard-24" if TERRAFORM_GCE_MACHINE_C4_STANDARD_24 + default "c4-standard-32" if TERRAFORM_GCE_MACHINE_C4_STANDARD_32 config TERRAFORM_GCE_IMAGE_TYPE string diff --git a/terraform/gce/kconfigs/machines/Kconfig.c4a-standard b/terraform/gce/kconfigs/machines/Kconfig.c4a-standard new file mode 100644 index 000000000..3a486fe4a --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.c4a-standard @@ -0,0 +1,57 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_C4A_STANDARD + +choice + prompt "GCE Machine Type" + default TERRAFORM_GCE_MACHINE_C4A_STANDARD_4 + help + C4A VMs are powered by Google's first Arm-based Axion™ + processor, DDR5 memory, and local Titanium SSDs. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_1 + bool "c4a-standard-1" + help + 1 vCPU and 4GB of memory. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_2 + bool "c4a-standard-2" + help + 2 vCPUs and 8GB of memory. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_4 + bool "c4a-standard-4" + help + 4 vCPUs and 16GB of memory. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_8 + bool "c4a-standard-8" + help + 8 vCPUs and 32GB of memory. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_16 + bool "c4a-standard-16" + help + 16 vCPUs and 64GB of memory. + +config TERRAFORM_GCE_MACHINE_C4A_STANDARD_32 + bool "c4a-standard-32" + help + 32 vCPUs and 128GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "c4a-standard-1" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_1 + default "c4a-standard-2" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_2 + default "c4a-standard-4" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_4 + default "c4a-standard-8" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_8 + default "c4a-standard-16" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_16 + default "c4a-standard-32" if TERRAFORM_GCE_MACHINE_C4A_STANDARD_32 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "hyperdisk-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_C4A_STANDARD diff --git a/terraform/gce/kconfigs/machines/Kconfig.c4d-standard b/terraform/gce/kconfigs/machines/Kconfig.c4d-standard new file mode 100644 index 000000000..6d7b4bb96 --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.c4d-standard @@ -0,0 +1,51 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_C4D_STANDARD + +choice + prompt "GCE Machine Type" + default TERRAFORM_GCE_MACHINE_C4D_STANDARD_4 + help + C4D VMs are powered by the fifth generation AMD EPYC Turin + processor and Titanium. + +config TERRAFORM_GCE_MACHINE_C4D_STANDARD_2 + bool "c4d-standard-2" + help + 2 vCPUs (1 core) and 7GB of memory. + +config TERRAFORM_GCE_MACHINE_C4D_STANDARD_4 + bool "c4d-standard-4" + help + 4 vCPUs (2 core) and 15GB of memory. + +config TERRAFORM_GCE_MACHINE_C4D_STANDARD_8 + bool "c4d-standard-8" + help + 8 vCPUs (4 cores) and 31GB of memory. + +config TERRAFORM_GCE_MACHINE_C4D_STANDARD_16 + bool "c4d-standard-16" + help + 16 vCPUs (8 cores) and 62GB of memory. + +config TERRAFORM_GCE_MACHINE_C4D_STANDARD_24 + bool "c4d-standard-24" + help + 32 vCPUs (16 cores) and 124GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "c4d-standard-2" if TERRAFORM_GCE_MACHINE_C4D_STANDARD_2 + default "c4d-standard-4" if TERRAFORM_GCE_MACHINE_C4D_STANDARD_4 + default "c4d-standard-8" if TERRAFORM_GCE_MACHINE_C4D_STANDARD_8 + default "c4d-standard-16" if TERRAFORM_GCE_MACHINE_C4D_STANDARD_16 + default "c4d-standard-32" if TERRAFORM_GCE_MACHINE_C4D_STANDARD_32 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "hyperdisk-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_C4D_STANDARD diff --git a/terraform/gce/kconfigs/machines/Kconfig.e2-highcpu b/terraform/gce/kconfigs/machines/Kconfig.e2-highcpu new file mode 100644 index 000000000..eb401451b --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.e2-highcpu @@ -0,0 +1,58 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_E2_HIGHCPU + +choice + prompt "GCE Machine type" + default TERRAFORM_GCE_MACHINE_E2_HIGHCPU_8 + help + The E2 machine series offers both Intel and AMD EPYC + processors, selected for you at the time of VM creation. + Machine types in this series are available in all regions + and zones and support a virtio memory balloon device. + +config TERRAFORM_GCE_MACHINE_E2_HIGHCPU_2 + bool "e2-highcpu-2" + depends on TARGET_ARCH_X86_64 + help + 2 vCPUs (1 core) and 2GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_HIGHCPU_4 + bool "e2-highcpu-4" + depends on TARGET_ARCH_X86_64 + help + 4 vCPUs (2 cores) and 4GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_HIGHCPU_8 + bool "e2-highcpu-8" + depends on TARGET_ARCH_X86_64 + help + 8 vCPUs (4 cores) and 8GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_HIGHCPU_16 + bool "e2-highcpu-16" + depends on TARGET_ARCH_X86_64 + help + 16 vCPUs (8 cores) and 16GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_HIGHCPU_32 + bool "e2-highcpu-32" + depends on TARGET_ARCH_X86_64 + help + 32 vCPUs (16 cores) and 32GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "e2-highcpu-2" if TERRAFORM_GCE_MACHINE_E2_HIGHCPU_2 + default "e2-highcpu-4" if TERRAFORM_GCE_MACHINE_E2_HIGHCPU_4 + default "e2-highcpu-8" if TERRAFORM_GCE_MACHINE_E2_HIGHCPU_8 + default "e2-highcpu-16" if TERRAFORM_GCE_MACHINE_E2_HIGHCPU_16 + default "e2-highcpu-32" if TERRAFORM_GCE_MACHINE_E2_HIGHCPU_32 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "pd-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_E2_HIGHCPU diff --git a/terraform/gce/kconfigs/machines/Kconfig.e2-standard b/terraform/gce/kconfigs/machines/Kconfig.e2-standard new file mode 100644 index 000000000..26180f841 --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.e2-standard @@ -0,0 +1,58 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_E2_STANDARD + +choice + prompt "GCE Machine type" + default TERRAFORM_GCE_MACHINE_E2_STANDARD_8 + help + The E2 machine series offers both Intel and AMD EPYC + processors, selected for you at the time of VM creation. + Machine types in this series are available in all regions + and zones and support a virtio memory balloon device. + +config TERRAFORM_GCE_MACHINE_E2_STANDARD_2 + bool "e2-standard-2" + depends on TARGET_ARCH_X86_64 + help + 2 vCPUs (1 core) and 8GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_STANDARD_4 + bool "e2-standard-4" + depends on TARGET_ARCH_X86_64 + help + 4 vCPUs (2 cores) and 16GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_STANDARD_8 + bool "e2-standard-8" + depends on TARGET_ARCH_X86_64 + help + 8 vCPUs (4 cores) and 32GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_STANDARD_16 + bool "e2-standard-16" + depends on TARGET_ARCH_X86_64 + help + 16 vCPUs (8 cores) and 64GB of memory. + +config TERRAFORM_GCE_MACHINE_E2_STANDARD_32 + bool "e2-standard-32" + depends on TARGET_ARCH_X86_64 + help + 32 vCPUs (16 cores) and 128GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "e2-standard-2" if TERRAFORM_GCE_MACHINE_E2_STANDARD_2 + default "e2-standard-4" if TERRAFORM_GCE_MACHINE_E2_STANDARD_4 + default "e2-standard-8" if TERRAFORM_GCE_MACHINE_E2_STANDARD_8 + default "e2-standard-16" if TERRAFORM_GCE_MACHINE_E2_STANDARD_16 + default "e2-standard-32" if TERRAFORM_GCE_MACHINE_E2_STANDARD_32 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "pd-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_E2_STANDARD diff --git a/terraform/gce/kconfigs/machines/Kconfig.n1-highcpu b/terraform/gce/kconfigs/machines/Kconfig.n1-highcpu new file mode 100644 index 000000000..7684b2961 --- /dev/null +++ b/terraform/gce/kconfigs/machines/Kconfig.n1-highcpu @@ -0,0 +1,55 @@ +if TERRAFORM_GCE_MACHINE_FAMILY_N1_HIGHCPU + +choice + prompt "GCE Machine type" + default TERRAFORM_GCE_MACHINE_N1_HIGHCPU_8 + help + The N1 machine series is Compute Engine's first generation + general-purpose machine series available on Intel Skylake, + Broadwell, Haswell, Sandy Bridge, and Ivy Bridge CPU + platforms. + +config TERRAFORM_GCE_MACHINE_N1_HIGHCPU_2 + bool "n1-highcpu-2" + help + 2 vCPUs (1 core) and 1.8GB of memory. + +config TERRAFORM_GCE_MACHINE_N1_HIGHCPU_4 + bool "n1-highcpu-4" + help + 4 vCPUs (2 cores) and 3.6GB of memory. + +config TERRAFORM_GCE_MACHINE_N1_HIGHCPU_8 + bool "n1-highcpu-8" + help + 8 vCPUs (4 cores) and 7.2GB of memory. + +config TERRAFORM_GCE_MACHINE_N1_HIGHCPU_16 + bool "n1-highcpu-16" + depends on TARGET_ARCH_X86_64 + help + 16 vCPUs (8 cores) and 14.4GB of memory. + +config TERRAFORM_GCE_MACHINE_N1_HIGHCPU_32 + bool "n1-highcpu-32" + depends on TARGET_ARCH_X86_64 + help + 32 vCPUs (16 cores) and 28.8GB of memory. + +endchoice + +config TERRAFORM_GCE_MACHINE_TYPE + string + output yaml + default "n1-highcpu-2" if TERRAFORM_GCE_MACHINE_N1_HIGHCPU_2 + default "n1-highcpu-4" if TERRAFORM_GCE_MACHINE_N1_HIGHCPU_4 + default "n1-highcpu-8" if TERRAFORM_GCE_MACHINE_N1_HIGHCPU_8 + default "n1-highcpu-16" if TERRAFORM_GCE_MACHINE_N1_HIGHCPU_16 + default "n1-highcpu-32" if TERRAFORM_GCE_MACHINE_N1_HIGHCPU_32 + +config TERRAFORM_GCE_IMAGE_TYPE + string + output yaml + default "pd-balanced" + +endif # TERRAFORM_GCE_MACHINE_FAMILY_N1_HIGHCPU diff --git a/terraform/gce/kconfigs/machines/Kconfig.n1-standard b/terraform/gce/kconfigs/machines/Kconfig.n1-standard index 65dbd6728..7201231c7 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n1-standard +++ b/terraform/gce/kconfigs/machines/Kconfig.n1-standard @@ -4,12 +4,10 @@ choice prompt "GCE Machine type" default TERRAFORM_GCE_MACHINE_N1_STANDARD_8 help - This option sets the GCE machine type. For other machine types, - refer to this page: - - https://cloud.google.com/compute/docs/machine-types - - Documentation: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance#machine_type + The N1 machine series is Compute Engine's first generation + general-purpose machine series available on Intel Skylake, + Broadwell, Haswell, Sandy Bridge, and Ivy Bridge CPU + platforms. config TERRAFORM_GCE_MACHINE_N1_STANDARD_1 bool "n1-standard-1" @@ -19,23 +17,30 @@ config TERRAFORM_GCE_MACHINE_N1_STANDARD_1 config TERRAFORM_GCE_MACHINE_N1_STANDARD_2 bool "n1-standard-2" help - 2 vCPU (1 core) and 7.5GB of memory. + 2 vCPUs (1 core) and 7.5GB of memory. config TERRAFORM_GCE_MACHINE_N1_STANDARD_4 bool "n1-standard-4" help - 4 vCPU (2 cores) and 15GB of memory. + 4 vCPUs (2 cores) and 15GB of memory. config TERRAFORM_GCE_MACHINE_N1_STANDARD_8 bool "n1-standard-8" help - 8 vCPU (4 cores) and 30GB of memory. + 8 vCPUs (4 cores) and 30GB of memory. config TERRAFORM_GCE_MACHINE_N1_STANDARD_16 bool "n1-standard-16" depends on TARGET_ARCH_X86_64 help - 16 vCPU (8 cores) and 60GB of memory. + 16 vCPUs (8 cores) and 60GB of memory. + +config TERRAFORM_GCE_MACHINE_N1_STANDARD_32 + bool "n1-standard-32" + depends on TARGET_ARCH_X86_64 + help + 32 vCPUs (16 cores) and 120GB of memory. + endchoice config TERRAFORM_GCE_MACHINE_TYPE @@ -46,6 +51,7 @@ config TERRAFORM_GCE_MACHINE_TYPE default "n1-standard-4" if TERRAFORM_GCE_MACHINE_N1_STANDARD_4 default "n1-standard-8" if TERRAFORM_GCE_MACHINE_N1_STANDARD_8 default "n1-standard-16" if TERRAFORM_GCE_MACHINE_N1_STANDARD_16 + default "n1-standard-32" if TERRAFORM_GCE_MACHINE_N1_STANDARD_32 config TERRAFORM_GCE_IMAGE_TYPE string diff --git a/terraform/gce/kconfigs/machines/Kconfig.n2-highcpu b/terraform/gce/kconfigs/machines/Kconfig.n2-highcpu index 8aa6893c7..83823753d 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n2-highcpu +++ b/terraform/gce/kconfigs/machines/Kconfig.n2-highcpu @@ -4,40 +4,38 @@ choice prompt "GCE Machine type" default TERRAFORM_GCE_MACHINE_N2_HIGHCPU_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + The N2 machine series can run on either Intel Cascade Lake + (on smaller configurations) or Intel Ice Lake. config TERRAFORM_GCE_MACHINE_N2_HIGHCPU_2 bool "n2-highcpu-2" depends on TARGET_ARCH_X86_64 help - 2 vCPU (1 core) and 2GB of memory. + 2 vCPUs (1 core) and 2GB of memory. config TERRAFORM_GCE_MACHINE_N2_HIGHCPU_4 bool "n2-highcpu-4" depends on TARGET_ARCH_X86_64 help - 4 vCPU (2 core) and 4GB of memory. + 4 vCPUs (2 cores) and 4GB of memory. config TERRAFORM_GCE_MACHINE_N2_HIGHCPU_8 bool "n2-highcpu-8" depends on TARGET_ARCH_X86_64 help - 8 vCPU (4 cores) and 8GB of memory. + 8 vCPUs (4 cores) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N2_HIGHCPU_16 bool "n2-highcpu-16" depends on TARGET_ARCH_X86_64 help - 16 vCPU (8 cores) and 16GB of memory. + 16 vCPUs (8 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N2_HIGHCPU_32 bool "n2-highcpu-32" depends on TARGET_ARCH_X86_64 help - 32 vCPU (16 cores) and 32GB of memory. + 32 vCPUs (16 cores) and 32GB of memory. endchoice diff --git a/terraform/gce/kconfigs/machines/Kconfig.n2-standard b/terraform/gce/kconfigs/machines/Kconfig.n2-standard index b7b2d68fa..a485a754a 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n2-standard +++ b/terraform/gce/kconfigs/machines/Kconfig.n2-standard @@ -4,40 +4,38 @@ choice prompt "GCE Machine type" default TERRAFORM_GCE_MACHINE_N2_STANDARD_8 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + The N2 machine series can run on either Intel Cascade Lake + (on smaller configurations) or Intel Ice Lake. config TERRAFORM_GCE_MACHINE_N2_STANDARD_2 bool "n2-standard-2" depends on TARGET_ARCH_X86_64 help - 2 vCPU (1 core) and 8GB of memory. + 2 vCPUs (1 core) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N2_STANDARD_4 bool "n2-standard-4" depends on TARGET_ARCH_X86_64 help - 4 vCPU (2 core) and 16GB of memory. + 4 vCPUs (2 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N2_STANDARD_8 bool "n2-standard-8" depends on TARGET_ARCH_X86_64 help - 8 vCPU (4 cores) and 32GB of memory. + 8 vCPUs (4 cores) and 32GB of memory. config TERRAFORM_GCE_MACHINE_N2_STANDARD_16 bool "n2-standard-16" depends on TARGET_ARCH_X86_64 help - 16 vCPU (8 cores) and 64GB of memory. + 16 vCPUs (8 cores) and 64GB of memory. config TERRAFORM_GCE_MACHINE_N2_STANDARD_32 bool "n2-standard-32" depends on TARGET_ARCH_X86_64 help - 32 vCPU (16 cores) and 128GB of memory. + 32 vCPUs (16 cores) and 128GB of memory. endchoice diff --git a/terraform/gce/kconfigs/machines/Kconfig.n2d-highcpu b/terraform/gce/kconfigs/machines/Kconfig.n2d-highcpu index 305034941..e3cf9c6e5 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n2d-highcpu +++ b/terraform/gce/kconfigs/machines/Kconfig.n2d-highcpu @@ -4,10 +4,9 @@ choice prompt "GCE Machine type" default TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + The N2D machine series can run on either AMD EPYC Milan or + AMD EPYC Rome processors. The third generation AMD EPYC + Milan processor is available only in specific regions and zones. config TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_2 bool "n2d-highcpu-2" @@ -19,25 +18,25 @@ config TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_4 bool "n2d-highcpu-4" depends on TARGET_ARCH_X86_64 help - 4 vCPU (2 core) and 4GB of memory. + 4 vCPUs (2 cores) and 4GB of memory. config TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_8 bool "n2d-highcpu-8" depends on TARGET_ARCH_X86_64 help - 8 vCPU (4 cores) and 8GB of memory. + 8 vCPUs (4 cores) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_16 bool "n2d-highcpu-16" depends on TARGET_ARCH_X86_64 help - 16 vCPU (8 cores) and 16GB of memory. + 16 vCPUs (8 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N2D_HIGHCPU_32 bool "n2d-highcpu-32" depends on TARGET_ARCH_X86_64 help - 32 vCPU (16 cores) and 32GB of memory. + 32 vCPUs (16 cores) and 32GB of memory. endchoice diff --git a/terraform/gce/kconfigs/machines/Kconfig.n2d-standard b/terraform/gce/kconfigs/machines/Kconfig.n2d-standard index 08744d396..4f86e0b7d 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n2d-standard +++ b/terraform/gce/kconfigs/machines/Kconfig.n2d-standard @@ -4,40 +4,39 @@ choice prompt "GCE Machine type" default TERRAFORM_GCE_MACHINE_N2D_STANDARD_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + The N2D machine series can run on either AMD EPYC Milan or + AMD EPYC Rome processors. The third generation AMD EPYC + Milan processor is available only in specific regions and zones. config TERRAFORM_GCE_MACHINE_N2D_STANDARD_2 bool "n2d-standard-2" depends on TARGET_ARCH_X86_64 help - 2 vCPU (1 core) and 8GB of memory. + 2 vCPUs (1 core) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N2D_STANDARD_4 bool "n2d-standard-4" depends on TARGET_ARCH_X86_64 help - 4 vCPU (2 core) and 16GB of memory. + 4 vCPUs (2 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N2D_STANDARD_8 bool "n2d-standard-8" depends on TARGET_ARCH_X86_64 help - 8 vCPU (4 cores) and 32GB of memory. + 8 vCPUs (4 cores) and 32GB of memory. config TERRAFORM_GCE_MACHINE_N2D_STANDARD_16 bool "n2d-standard-16" depends on TARGET_ARCH_X86_64 help - 16 vCPU (8 cores) and 64GB of memory. + 16 vCPUs (8 cores) and 64GB of memory. config TERRAFORM_GCE_MACHINE_N2D_STANDARD_32 bool "n2d-standard-32" depends on TARGET_ARCH_X86_64 help - 32 vCPU (16 cores) and 128GB of memory. + 32 vCPUs (16 cores) and 128GB of memory. endchoice diff --git a/terraform/gce/kconfigs/machines/Kconfig.n4-highcpu b/terraform/gce/kconfigs/machines/Kconfig.n4-highcpu index 9f871940a..880a386ea 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n4-highcpu +++ b/terraform/gce/kconfigs/machines/Kconfig.n4-highcpu @@ -4,35 +4,33 @@ choice prompt "GCE Machine Type" default TERRAFORM_GCE_MACHINE_N4_HIGHCPU_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + N4 VMs are powered by the 5th generation Intel Xeon Scalable + processors (code-named Emerald Rapids) and Titanium. config TERRAFORM_GCE_MACHINE_N4_HIGHCPU_2 bool "n4-highcpu-2" help - 2 vCPU (1 core) and 4GB of memory. + 2 vCPUs (1 core) and 4GB of memory. config TERRAFORM_GCE_MACHINE_N4_HIGHCPU_4 bool "n4-highcpu-4" help - 4 vCPU (2 core) and 8GB of memory. + 4 vCPUs (2 cores) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N4_HIGHCPU_8 bool "n4-highcpu-8" help - 8 vCPU (4 cores) and 16GB of memory. + 8 vCPUs (4 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N4_HIGHCPU_16 bool "n4-highcpu-16" help - 16 vCPU (8 cores) and 32GB of memory. + 16 vCPUs (8 cores) and 32GB of memory. config TERRAFORM_GCE_MACHINE_N4_HIGHCPU_32 bool "n4-highcpu-32" help - 32 vCPU (16 cores) and 64GB of memory. + 32 vCPUs (16 cores) and 64GB of memory. endchoice diff --git a/terraform/gce/kconfigs/machines/Kconfig.n4-standard b/terraform/gce/kconfigs/machines/Kconfig.n4-standard index d1d1202cb..807f8638e 100644 --- a/terraform/gce/kconfigs/machines/Kconfig.n4-standard +++ b/terraform/gce/kconfigs/machines/Kconfig.n4-standard @@ -4,35 +4,33 @@ choice prompt "GCE Machine Type" default TERRAFORM_GCE_MACHINE_N4_STANDARD_4 help - This option sets the GCE machine type. For other machine - types, refer to this page: - - https://cloud.google.com/compute/docs/machine-types + N4 VMs are powered by the 5th generation Intel Xeon Scalable + processors (code-named Emerald Rapids) and Titanium. config TERRAFORM_GCE_MACHINE_N4_STANDARD_2 bool "n4-standard-2" help - 2 vCPU (1 core) and 8GB of memory. + 2 vCPUs (1 core) and 8GB of memory. config TERRAFORM_GCE_MACHINE_N4_STANDARD_4 bool "n4-standard-4" help - 4 vCPU (2 core) and 16GB of memory. + 4 vCPUs (2 cores) and 16GB of memory. config TERRAFORM_GCE_MACHINE_N4_STANDARD_8 bool "n4-standard-8" help - 8 vCPU (4 cores) and 32GB of memory. + 8 vCPUs (4 cores) and 32GB of memory. config TERRAFORM_GCE_MACHINE_N4_STANDARD_16 bool "n4-standard-16" help - 16 vCPU (8 cores) and 64GB of memory. + 16 vCPUs (8 cores) and 64GB of memory. config TERRAFORM_GCE_MACHINE_N4_STANDARD_32 bool "n4-standard-32" help - 32 vCPU (16 cores) and 128GB of memory. + 32 vCPUs (16 cores) and 128GB of memory. endchoice diff --git a/terraform/gce/main.tf b/terraform/gce/main.tf index 0e8120686..816f43098 100644 --- a/terraform/gce/main.tf +++ b/terraform/gce/main.tf @@ -9,8 +9,6 @@ resource "google_compute_instance" "kdevops_instance" { machine_type = var.gce_machine_type zone = var.gce_zone - tags = ["kdevops"] - boot_disk { initialize_params { image = data.google_compute_image.kdevops_image.self_link diff --git a/terraform/oci/kconfigs/Kconfig.storage b/terraform/oci/kconfigs/Kconfig.storage index ed872a268..15a2a05bb 100644 --- a/terraform/oci/kconfigs/Kconfig.storage +++ b/terraform/oci/kconfigs/Kconfig.storage @@ -122,6 +122,138 @@ config TERRAFORM_OCI_VOLUMES_SIZE default 4096 if TERRAFORM_OCI_VOLUMES_SIZE_4096G default 8192 if TERRAFORM_OCI_VOLUMES_SIZE_8192G +choice + prompt "Volume Performance Units for each additional volume" + default TERRAFORM_OCI_VPUS_PER_GB_10 + help + Higher VPUs per GB increases maximum IOPS and throughput, + but costs more. For more information, see: + + https://docs.oracle.com/en-us/iaas/Content/Block/Concepts/blockvolumeperformance.htm#vpus + +config TERRAFORM_OCI_VPUS_PER_GB_0 + bool "0 VPUs" + help + Lowest cost. + + 2 IOPS/GB, 3,000 IOPS maximum/volume. + 480 MBPS maximum/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_10 + bool "10 VPUs" + help + Balanced performance. + + 60 IOPS/GB, 25,000 IOPS maximum/volume. + 480 MBPS maximum/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_20 + bool "20 VPUs" + help + Higher performance. + + 75 IOPS/GB, 50,000 IOPS maximum/volume. + 680 MBPS maximum/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_30 + bool "30 VPUs" + help + Ultra high performance. + + 90 IOPS/GB, 75,000 IOPS maximum/volume. + 880 MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_40 + bool "40 VPUs" + help + Ultra high performance. + + 105 IOPS/GB, 100,000 IOPS maximum/volume. + 1,080 MBPS maximum/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_50 + bool "50 VPUs" + help + Ultra high performance. + + 120 IOPS/GB, 125,000 IOPS maximum/volume. + 1,280 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_60 + bool "60 VPUs" + help + Ultra high performance. + + 135 IOPS/GB, 150,000 IOPS maximum/volume. + 1,480 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_70 + bool "70 VPUs" + help + Ultra high performance. + + 150 IOPS/GB, 175,000 IOPS maximum/volume. + 1,680 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_80 + bool "80 VPUs" + help + Ultra high performance. + + 165 IOPS/GB, 200,000 IOPS maximum/volume. + 1,880 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_90 + bool "90 VPUs" + help + Ultra high performance. + + 180 IOPS/GB, 225,000 IOPS maximum/volume. + 2,080 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_100 + bool "100 VPUs" + help + Ultra high performance. + + 195 IOPS/GB, 250,000 IOPS maximum/volume. + 2,280 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_110 + bool "110 VPUs" + help + Ultra high performance. + + 210 IOPS/GB, 275,000 IOPS maximum/volume. + 2,480 max MBPS/volume. + +config TERRAFORM_OCI_VPUS_PER_GB_120 + bool "120 VPUs" + help + Ultra high performance. + + 225 IOPS/GB, 300,000 IOPS maximum/volume. + 2,680 max MBPS/volume. + +endchoice + +config TERRAFORM_OCI_VPUS_PER_GB + int + output yaml + default 0 if TERRAFORM_OCI_VPUS_PER_GB_0 + default 10 if TERRAFORM_OCI_VPUS_PER_GB_10 + default 20 if TERRAFORM_OCI_VPUS_PER_GB_20 + default 30 if TERRAFORM_OCI_VPUS_PER_GB_30 + default 40 if TERRAFORM_OCI_VPUS_PER_GB_40 + default 50 if TERRAFORM_OCI_VPUS_PER_GB_50 + default 60 if TERRAFORM_OCI_VPUS_PER_GB_60 + default 70 if TERRAFORM_OCI_VPUS_PER_GB_70 + default 80 if TERRAFORM_OCI_VPUS_PER_GB_80 + default 90 if TERRAFORM_OCI_VPUS_PER_GB_90 + default 100 if TERRAFORM_OCI_VPUS_PER_GB_100 + default 110 if TERRAFORM_OCI_VPUS_PER_GB_110 + default 120 if TERRAFORM_OCI_VPUS_PER_GB_120 + config TERRAFORM_OCI_DATA_VOLUME_DEVICE_FILE_NAME string "Data volume's device file name" output yaml diff --git a/terraform/oci/main.tf b/terraform/oci/main.tf index d231f2225..15660aa02 100644 --- a/terraform/oci/main.tf +++ b/terraform/oci/main.tf @@ -37,6 +37,13 @@ resource "oci_core_instance" "kdevops_instance" { ssh_authorized_keys = file(var.ssh_config_pubkey_file) } + preemptible_instance_config { + preemption_action { + type = "TERMINATE" + preserve_boot_volume = false + } + } + preserve_boot_volume = false } @@ -50,6 +57,7 @@ module "volumes" { vol_instance_name = element(var.kdevops_nodes, count.index) vol_volume_count = var.oci_volumes_per_instance vol_volume_size = var.oci_volumes_size + vol_vpus_per_gb = var.oci_vpus_per_gb } resource "oci_core_vcn" "kdevops_vcn" { @@ -95,10 +103,12 @@ resource "oci_core_route_table" "kdevops_route_table" { compartment_id = data.oci_identity_compartments.kdevops_compartment.compartments[0].id display_name = "kdevops route table" vcn_id = one(oci_core_vcn.kdevops_vcn[*].id) + route_rules { destination = "0.0.0.0/0" destination_type = "CIDR_BLOCK" network_entity_id = one(oci_core_internet_gateway.kdevops_internet_gateway[*].id) + route_type = "STATIC" } } diff --git a/terraform/oci/provider.tf b/terraform/oci/provider.tf index 08d0d2c52..610d20595 100644 --- a/terraform/oci/provider.tf +++ b/terraform/oci/provider.tf @@ -2,8 +2,8 @@ terraform { required_version = ">= 0.12.6" required_providers { oci = { - source = "oracle/oci" - version = "~> 6" + source = "hashicorp/oci" + version = "> 7" } } } diff --git a/terraform/oci/vars.tf b/terraform/oci/vars.tf index c116829fb..401341feb 100644 --- a/terraform/oci/vars.tf +++ b/terraform/oci/vars.tf @@ -98,3 +98,8 @@ variable "oci_volumes_size" { description = "The size of additional block volumes, in gibibytes" type = number } + +variable "oci_vpus_per_gb" { + description = "Volume performance units" + type = number +} diff --git a/terraform/oci/volumes/main.tf b/terraform/oci/volumes/main.tf index 56b9a4760..7483ff728 100644 --- a/terraform/oci/volumes/main.tf +++ b/terraform/oci/volumes/main.tf @@ -1,9 +1,11 @@ resource "oci_core_volume" "kdevops_volume_extra" { - count = var.vol_volume_count - availability_domain = var.vol_availability_domain - display_name = format("kdevops_%s_volume%02d", var.vol_instance_name, count.index + 1) - compartment_id = var.vol_compartment_ocid - size_in_gbs = var.vol_volume_size + count = var.vol_volume_count + availability_domain = var.vol_availability_domain + compartment_id = var.vol_compartment_ocid + display_name = format("kdevops_%s_vol%02d", var.vol_instance_name, count.index + 1) + is_auto_tune_enabled = false + size_in_gbs = var.vol_volume_size + vpus_per_gb = var.vol_vpus_per_gb } locals { diff --git a/terraform/oci/volumes/vars.tf b/terraform/oci/volumes/vars.tf index 57c5e2bf6..ee702c2d7 100644 --- a/terraform/oci/volumes/vars.tf +++ b/terraform/oci/volumes/vars.tf @@ -27,3 +27,8 @@ variable "vol_volume_size" { description = "Size of each volume, in gibibytes" type = number } + +variable "vol_vpus_per_gb" { + description = "Volume performance units" + type = number +}