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
+}