eg oracleidentitycloudservice/devopsuser@oracle.com@ocitenant
+# Users in Custom Domain are not supported as of now.
oci_devops_git_user=
# When left empty, same key file from $(key_path) used for $(auth_mechanism) as api_key will be copied to
diff --git a/cd3_automation_toolkit/user-scripts/terraform/firewall.tf b/cd3_automation_toolkit/user-scripts/terraform/firewall.tf
index 35ca80eda..e97acf31c 100644
--- a/cd3_automation_toolkit/user-scripts/terraform/firewall.tf
+++ b/cd3_automation_toolkit/user-scripts/terraform/firewall.tf
@@ -168,6 +168,20 @@ module "decryption_rules" {
secret = each.value.secret
}
+module "tunnelinspect_rules" {
+ source = "./modules/security/firewall/tunnel-inspect"
+ for_each = var.tunnelinspect_rules != null ? var.tunnelinspect_rules : {}
+ depends_on = [module.policies, module.address_lists]
+ action = each.value.action
+ rule_name = each.value.rule_name
+ network_firewall_policy_id = length(regexall("ocid1.networkfirewallpolicy.oc*", each.value.network_firewall_policy_id)) > 0 ? each.value.network_firewall_policy_id : merge(module.policies.*...)[each.value.network_firewall_policy_id]["policy_tf_id"]
+ source_address = each.value.condition[0].source_address != null ? each.value.condition[0].source_address : []
+ destination_address = each.value.condition[0].destination_address != null ? each.value.condition[0].destination_address : []
+ after_rule = each.value.after_rule
+ before_rule = each.value.before_rule
+ protocol = each.value.protocol
+}
+
#############################
# Module Block - Network Firewall Logging
@@ -223,4 +237,4 @@ module "fw-logs" {
output "vcn_logs_id" {
value = [ for k,v in merge(module.vcn-logs.*...) : v.log_tf_id]
}
-*/
+*/
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/data.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/data.tf
new file mode 100755
index 000000000..cb4adedf4
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/data.tf
@@ -0,0 +1,14 @@
+############################
+# Data Block - Database
+# Create MySQL Configurations
+############################
+
+data "oci_mysql_shapes" "mysql_config_shapes" {
+ #Required
+ compartment_id = var.compartment_id
+}
+data "oci_core_shapes" "present_ad" {
+ compartment_id = var.compartment_id
+
+}
+
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/main.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/main.tf
new file mode 100755
index 000000000..0fa486d3a
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/main.tf
@@ -0,0 +1,101 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Resource Block - Database
+# Create MySQL Configurations
+############################
+
+resource "oci_mysql_mysql_configuration" "mysql_configuration" {
+ #Required
+ compartment_id = var.compartment_id
+ shape_name = var.mysql_configuration_shape_name
+
+ #Optional
+ defined_tags = var.defined_tags
+ description = var.mysql_configuration_description
+ display_name = var.mysql_configuration_display_name
+ freeform_tags = var.freeform_tags
+ init_variables {
+
+ #Optional
+ lower_case_table_names = var.mysql_configuration_init_variables_lower_case_table_names
+ }
+
+ variables {
+
+ #Optional
+ autocommit = var.mysql_configuration_variables_autocommit
+ big_tables = var.mysql_configuration_variables_big_tables
+ binlog_expire_logs_seconds = var.mysql_configuration_variables_binlog_expire_logs_seconds
+ binlog_row_metadata = var.mysql_configuration_variables_binlog_row_metadata
+ binlog_row_value_options = var.mysql_configuration_variables_binlog_row_value_options
+ binlog_transaction_compression = var.mysql_configuration_variables_binlog_transaction_compression
+ completion_type = var.mysql_configuration_variables_completion_type
+ connect_timeout = var.mysql_configuration_variables_connect_timeout
+ connection_memory_chunk_size = var.mysql_configuration_variables_connection_memory_chunk_size
+ connection_memory_limit = var.mysql_configuration_variables_connection_memory_limit
+ cte_max_recursion_depth = var.mysql_configuration_variables_cte_max_recursion_depth
+ default_authentication_plugin = var.mysql_configuration_variables_default_authentication_plugin
+ foreign_key_checks = var.mysql_configuration_variables_foreign_key_checks
+ global_connection_memory_limit = var.mysql_configuration_variables_global_connection_memory_limit
+ global_connection_memory_tracking = var.mysql_configuration_variables_global_connection_memory_tracking
+ group_replication_consistency = var.mysql_configuration_variables_group_replication_consistency
+ information_schema_stats_expiry = var.mysql_configuration_variables_information_schema_stats_expiry
+ innodb_buffer_pool_dump_pct = var.mysql_configuration_variables_innodb_buffer_pool_dump_pct
+ innodb_buffer_pool_instances = var.mysql_configuration_variables_innodb_buffer_pool_instances
+ innodb_buffer_pool_size = var.mysql_configuration_variables_innodb_buffer_pool_size
+ innodb_ddl_buffer_size = var.mysql_configuration_variables_innodb_ddl_buffer_size
+ innodb_ddl_threads = var.mysql_configuration_variables_innodb_ddl_threads
+ innodb_ft_enable_stopword = var.mysql_configuration_variables_innodb_ft_enable_stopword
+ innodb_ft_max_token_size = var.mysql_configuration_variables_innodb_ft_max_token_size
+ innodb_ft_min_token_size = var.mysql_configuration_variables_innodb_ft_min_token_size
+ innodb_ft_num_word_optimize = var.mysql_configuration_variables_innodb_ft_num_word_optimize
+ innodb_ft_result_cache_limit = var.mysql_configuration_variables_innodb_ft_result_cache_limit
+ innodb_ft_server_stopword_table = var.mysql_configuration_variables_innodb_ft_server_stopword_table
+ innodb_lock_wait_timeout = var.mysql_configuration_variables_innodb_lock_wait_timeout
+ innodb_log_writer_threads = var.mysql_configuration_variables_innodb_log_writer_threads
+ innodb_max_purge_lag = var.mysql_configuration_variables_innodb_max_purge_lag
+ innodb_max_purge_lag_delay = var.mysql_configuration_variables_innodb_max_purge_lag_delay
+ innodb_stats_persistent_sample_pages = var.mysql_configuration_variables_innodb_stats_persistent_sample_pages
+ innodb_stats_transient_sample_pages = var.mysql_configuration_variables_innodb_stats_transient_sample_pages
+ interactive_timeout = var.mysql_configuration_variables_interactive_timeout
+ local_infile = var.mysql_configuration_variables_local_infile
+ mandatory_roles = var.mysql_configuration_variables_mandatory_roles
+ max_allowed_packet = var.mysql_configuration_variables_max_allowed_packet
+ max_binlog_cache_size = var.mysql_configuration_variables_max_binlog_cache_size
+ max_connect_errors = var.mysql_configuration_variables_max_connect_errors
+ max_connections = var.mysql_configuration_variables_max_connections
+ max_execution_time = var.mysql_configuration_variables_max_execution_time
+ max_heap_table_size = var.mysql_configuration_variables_max_heap_table_size
+ max_prepared_stmt_count = var.mysql_configuration_variables_max_prepared_stmt_count
+ mysql_firewall_mode = var.mysql_configuration_variables_mysql_firewall_mode
+ mysqlx_connect_timeout = var.mysql_configuration_variables_mysqlx_connect_timeout
+ mysqlx_deflate_default_compression_level = var.mysql_configuration_variables_mysqlx_deflate_default_compression_level
+ mysqlx_deflate_max_client_compression_level = var.mysql_configuration_variables_mysqlx_deflate_max_client_compression_level
+ mysqlx_enable_hello_notice = var.mysql_configuration_variables_mysqlx_enable_hello_notice
+ mysqlx_interactive_timeout = var.mysql_configuration_variables_mysqlx_interactive_timeout
+ mysqlx_lz4default_compression_level = var.mysql_configuration_variables_mysqlx_lz4default_compression_level
+ mysqlx_lz4max_client_compression_level = var.mysql_configuration_variables_mysqlx_lz4max_client_compression_level
+ mysqlx_max_allowed_packet = var.mysql_configuration_variables_mysqlx_max_allowed_packet
+ mysqlx_read_timeout = var.mysql_configuration_variables_mysqlx_read_timeout
+ mysqlx_wait_timeout = var.mysql_configuration_variables_mysqlx_wait_timeout
+ mysqlx_write_timeout = var.mysql_configuration_variables_mysqlx_write_timeout
+ mysqlx_zstd_default_compression_level = var.mysql_configuration_variables_mysqlx_zstd_default_compression_level
+ mysqlx_zstd_max_client_compression_level = var.mysql_configuration_variables_mysqlx_zstd_max_client_compression_level
+ net_read_timeout = var.mysql_configuration_variables_net_read_timeout
+ net_write_timeout = var.mysql_configuration_variables_net_write_timeout
+ parser_max_mem_size = var.mysql_configuration_variables_parser_max_mem_size
+ regexp_time_limit = var.mysql_configuration_variables_regexp_time_limit
+ sort_buffer_size = var.mysql_configuration_variables_sort_buffer_size
+ sql_mode = var.mysql_configuration_variables_sql_mode
+ sql_require_primary_key = var.mysql_configuration_variables_sql_require_primary_key
+ sql_warnings = var.mysql_configuration_variables_sql_warnings
+ thread_pool_dedicated_listeners = var.mysql_configuration_variables_thread_pool_dedicated_listeners
+ thread_pool_max_transactions_limit = var.mysql_configuration_variables_thread_pool_max_transactions_limit
+ time_zone = var.mysql_configuration_variables_time_zone
+ tmp_table_size = var.mysql_configuration_variables_tmp_table_size
+ transaction_isolation = var.mysql_configuration_variables_transaction_isolation
+ wait_timeout = var.mysql_configuration_variables_wait_timeout
+ }
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/oracle_provider_req.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/oracle_provider_req.tf
new file mode 100644
index 000000000..f1f97aaeb
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/oracle_provider_req.tf
@@ -0,0 +1,10 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+terraform {
+ required_providers {
+ oci = {
+ source = "oracle/oci"
+ }
+ }
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/outputs.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/outputs.tf
new file mode 100755
index 000000000..c07292b0b
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/outputs.tf
@@ -0,0 +1,17 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Output Block - Database
+# Create MySQL Configurations
+############################
+
+output "db_system_configuration_id" {
+ description = "The OCID of the MySQL DB configuration."
+ value = oci_mysql_mysql_configuration.mysql_configuration.id
+}
+
+output "db_system_configuration" {
+ description = "The display name of the MySQL configuration."
+ value = oci_mysql_mysql_configuration.mysql_configuration.display_name
+}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/variables.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/variables.tf
new file mode 100755
index 000000000..b3e505198
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-configuration/variables.tf
@@ -0,0 +1,405 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Variables Block - Database
+# Create MySQL Configurations
+############################
+
+variable "defined_tags" {
+ type = map(any)
+ default = null
+}
+
+variable "freeform_tags" {
+ type = map(any)
+ default = null
+}
+
+variable "mysql_configuration_description" {
+ type = string
+
+ default = null
+}
+
+variable "compartment_id" {
+ type = string
+ default = null
+}
+
+variable "mysql_configuration_shape_name" {
+ type = string
+ default = null
+
+}
+variable "mysql_configuration_display_name" {
+ type = string
+ default = null
+
+}
+variable "mysql_configuration_init_variables_lower_case_table_names" {
+ type = string
+ default = null
+
+
+}
+variable "mysql_configuration_variables_autocommit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_big_tables" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_binlog_expire_logs_seconds" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_binlog_row_metadata" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_binlog_row_value_options" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_binlog_transaction_compression" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_completion_type" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_connect_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_connection_memory_chunk_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_connection_memory_limit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_cte_max_recursion_depth" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_default_authentication_plugin" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_foreign_key_checks" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_global_connection_memory_limit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_global_connection_memory_tracking" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_group_replication_consistency" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_information_schema_stats_expiry" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_buffer_pool_dump_pct" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_buffer_pool_instances" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_buffer_pool_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ddl_buffer_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ddl_threads" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_enable_stopword" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_max_token_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_min_token_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_num_word_optimize" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_result_cache_limit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_ft_server_stopword_table" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_lock_wait_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_log_writer_threads" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_max_purge_lag" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_max_purge_lag_delay" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_stats_persistent_sample_pages" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_innodb_stats_transient_sample_pages" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_interactive_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_local_infile" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mandatory_roles" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_allowed_packet" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_binlog_cache_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_connect_errors" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_connections" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_execution_time" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_heap_table_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_max_prepared_stmt_count" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysql_firewall_mode" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_connect_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_deflate_default_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_deflate_max_client_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_enable_hello_notice" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_interactive_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_lz4default_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_lz4max_client_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_max_allowed_packet" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_read_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_wait_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_write_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_zstd_default_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_mysqlx_zstd_max_client_compression_level" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_net_read_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_net_write_timeout" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_parser_max_mem_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_regexp_time_limit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_sort_buffer_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_sql_mode" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_sql_require_primary_key" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_sql_warnings" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_thread_pool_dedicated_listeners" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_thread_pool_max_transactions_limit" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_time_zone" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_tmp_table_size" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_transaction_isolation" {
+ type = string
+default = null
+
+}
+variable "mysql_configuration_variables_wait_timeout" {
+ type = string
+ default = null
+
+}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/data.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/data.tf
new file mode 100755
index 000000000..b568645d8
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/data.tf
@@ -0,0 +1,14 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Data Block - Database
+# Create MySQL DB Systems
+############################
+
+
+data "oci_core_vcns" "oci_vcns_instances" {
+ for_each = { for vcn in var.vcn_names : vcn => vcn }
+ compartment_id = var.network_compartment_id != null ? var.network_compartment_id : var.compartment_id
+ display_name = each.value
+}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/main.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/main.tf
new file mode 100755
index 000000000..99a7cd8d2
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/main.tf
@@ -0,0 +1,64 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Resource Block - Database
+# Create MySQL DB Systems
+############################
+
+resource "oci_mysql_mysql_db_system" "db_system" {
+ availability_domain = var.availability_domain
+ compartment_id = var.compartment_id
+ shape_name = var.shape_name
+ subnet_id = var.subnet_id
+
+ admin_password = var.admin_password
+ admin_username = var.admin_username
+
+ backup_policy {
+ is_enabled = var.backup_policy_is_enabled
+ pitr_policy {
+ is_enabled = var.pitr_policy_is_enabled
+ }
+ retention_in_days = var.backup_policy_retention_in_days
+ window_start_time = var.backup_policy_window_start_time
+ }
+
+ configuration_id = var.configuration_id
+ crash_recovery = var.crash_recovery
+ data_storage_size_in_gb = var.data_storage_size_in_gb
+ database_management = var.database_management
+
+ defined_tags = var.defined_tags
+
+ deletion_policy {
+ automatic_backup_retention = var.deletion_policy_automatic_backup_retention
+ final_backup = var.deletion_policy_final_backup
+ is_delete_protected = var.deletion_policy_is_delete_protected
+ }
+
+ description = var.description
+ display_name = var.display_name
+ fault_domain = var.fault_domain
+ freeform_tags = var.freeform_tags
+ hostname_label = var.hostname_label
+ ip_address = var.ip_address
+ is_highly_available = var.is_highly_available
+
+ maintenance {
+ window_start_time = var.maintenance_window_start_time
+ }
+
+ port = var.port
+ port_x = var.port_x
+/*
+ source {
+ source_type = var.source_type
+ backup_id = var.backup_id
+ }
+
+ */
+}
+
+
+
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/oracle_provider_req.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/oracle_provider_req.tf
new file mode 100644
index 000000000..f1f97aaeb
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/oracle_provider_req.tf
@@ -0,0 +1,10 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+terraform {
+ required_providers {
+ oci = {
+ source = "oracle/oci"
+ }
+ }
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/outputs.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/outputs.tf
new file mode 100755
index 000000000..2d9e24013
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/outputs.tf
@@ -0,0 +1,17 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Output Block - Database
+# Create MySQL DB Systems
+############################
+
+output "db_system_id" {
+ description = "The OCID of the MySQL DB system."
+ value = oci_mysql_mysql_db_system.db_system.id
+}
+
+output "db_system_hostname" {
+ description = "The hostname of the MySQL DB system."
+ value = oci_mysql_mysql_db_system.db_system.hostname_label
+}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/variables.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/variables.tf
new file mode 100755
index 000000000..b0203fee7
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/database/mysql-dbsystem/variables.tf
@@ -0,0 +1,178 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################
+# Variables Block - Database
+# Create MySQL DB Systems
+############################
+
+variable "compartment_id" {
+ description = "The OCID of the compartment where the MySQL DB system will be created."
+ type = string
+}
+
+variable "display_name" {
+ description = "The display name of the MySQL DB system."
+ type = string
+}
+
+variable "configuration_compartment_id" {
+ description = "The OCID of the compartment where the MySQL configuration is located."
+ type = string
+}
+
+variable "configuration_id" {
+ description = "The OCID or name of the MySQL configuration."
+ type = string
+}
+
+variable "shape_name" {
+ description = "The shape of the MySQL DB system."
+ type = string
+}
+
+variable "admin_username" {
+ description = "The admin username for the MySQL DB system."
+ type = string
+}
+
+variable "admin_password" {
+ description = "The admin password for the MySQL DB system."
+ type = string
+ sensitive = true
+}
+
+variable "availability_domain" {
+ description = "The availability domain where the MySQL DB system will be created."
+ type = string
+}
+
+variable "subnet_id" {
+ description = "The OCID of the subnet where the MySQL DB system will be created."
+ type = string
+}
+
+variable "hostname_label" {
+ description = "The hostname label of the MySQL DB system."
+ type = string
+}
+
+variable "data_storage_size_in_gb" {
+ description = "value to be used for data_storage_size_in_gbs"
+}
+
+variable "source_type" {
+ description = "Source type"
+ type = string
+}
+
+variable "is_highly_available" {
+ description = "Is highly available"
+ type = bool
+}
+
+variable "maintenance_window_start_time" {
+ description = "Maintenance window start time"
+ type = string
+}
+
+variable "port" {
+ description = "Port"
+ type = number
+}
+
+variable "port_x" {
+ description = "X protocol port"
+ type = number
+}
+
+variable "backup_id" {
+ description = "Backup ID for the MySQL DB System"
+ type = string
+}
+
+variable "database_management" {
+ description = "Database management"
+ type = string
+}
+
+variable "deletion_policy_automatic_backup_retention" {
+ description = "Automatic backup retention on deletion"
+ type = string
+}
+
+variable "deletion_policy_final_backup" {
+ description = "Final backup on deletion"
+ type = string
+}
+
+variable "deletion_policy_is_delete_protected" {
+ description = "Is delete protected"
+ type = bool
+}
+
+variable "description" {
+ description = "Description for the MySQL DB System"
+ type = string
+}
+
+variable "fault_domain" {
+ description = "Fault domain"
+ type = string
+}
+
+variable "ip_address" {
+ description = "IP address"
+ type = string
+}
+
+variable "backup_policy_is_enabled" {
+ description = "Is backup policy enabled"
+ type = bool
+}
+
+variable "pitr_policy_is_enabled" {
+ description = "Is point-in-time recovery enabled"
+ type = bool
+}
+
+variable "backup_policy_retention_in_days" {
+ description = "Backup retention in days"
+ type = number
+}
+
+variable "backup_policy_window_start_time" {
+ description = "Backup window start time"
+ type = string
+}
+
+variable "vcn_names" {
+ type = list(any)
+ default = []
+}
+
+variable "crash_recovery" {
+ description = "Crash recovery"
+ type = string
+}
+
+variable "network_compartment_id" {
+ description = "Network compartment OCID to fetch NSG/Subnet details"
+ type = string
+ default = null
+}
+
+variable "compartment_ocids" {
+ type = string
+ default = null
+}
+
+variable "defined_tags" {
+ type = map(any)
+ default = null
+}
+
+variable "freeform_tags" {
+ type = map(any)
+ default = null
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/data.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/data.tf
new file mode 100644
index 000000000..84adb07b0
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/data.tf
@@ -0,0 +1,11 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+/*locals {
+ policy_ocid = data.oci_network_firewall_network_firewall_policies.fw-policy.network_firewall_policy_summary_collection[*].id
+
+}
+data "oci_network_firewall_network_firewall_policies" "fw-policy" {
+ compartment_id = var.compartment_id != null ? (length(regexall("ocid1.compartment.oc*", var.compartment_id)) > 0 ? var.compartment_id : var.compartment_ocids[var.compartment_id]) : var.compartment_ocids[var.compartment_id]
+ display_name = var.network_firewall_policy_id
+*/
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/main.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/main.tf
new file mode 100644
index 000000000..ec0f09e4f
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/main.tf
@@ -0,0 +1,20 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+resource "oci_network_firewall_network_firewall_policy_tunnel_inspection_rule" "network_firewall_policy_tunnel_inspection_rule" {
+ lifecycle {
+ ignore_changes = [position]
+ }
+ name = var.rule_name
+ action = var.action
+ network_firewall_policy_id = var.network_firewall_policy_id
+ condition {
+ destination_address = var.destination_address
+ source_address = var.source_address
+ }
+ protocol = var.protocol
+ position {
+ after_rule = var.after_rule
+ before_rule = var.before_rule
+ }
+}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/oracle_provider_req.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/oracle_provider_req.tf
new file mode 100644
index 000000000..f1f97aaeb
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/oracle_provider_req.tf
@@ -0,0 +1,10 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+terraform {
+ required_providers {
+ oci = {
+ source = "oracle/oci"
+ }
+ }
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/output.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/output.tf
new file mode 100644
index 000000000..03196a7d3
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/output.tf
@@ -0,0 +1,6 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+output "tunnel_inspect_rules_tf_id" {
+ value = oci_network_firewall_network_firewall_policy_tunnel_inspection_rule.network_firewall_policy_tunnel_inspection_rule.id
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/variable.tf b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/variable.tf
new file mode 100644
index 000000000..80b16596f
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/modules/security/firewall/tunnel-inspect/variable.tf
@@ -0,0 +1,145 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+variable "compartment_id" {
+ type = string
+ default = null
+}
+variable "subnet_name" {
+ type = string
+ default = null
+}
+
+variable "vcn_name" {
+ type = string
+ default = null
+}
+variable "network_firewall_policy_id" {
+ type = string
+ default = null
+}
+
+variable "display_name" {
+ type = string
+ default = null
+}
+
+variable "ipv4address" {
+ type = string
+ default = null
+}
+
+variable "icmp_type" {
+ type = number
+ default = null
+
+}
+
+variable "icmp_code" {
+ type = number
+ default = null
+}
+variable "minimum_port" {
+ type = number
+ default = null
+}
+
+variable "maximum_port" {
+ type = number
+ default = null
+}
+
+variable "service_name" {
+ type = string
+ default = null
+}
+
+variable "service_type" {
+ type = string
+ default = null
+}
+
+variable "region" {
+ type = string
+ default = "us-ashburn-1"
+}
+
+variable "type" {
+ type = string
+ default = null
+}
+
+variable "name" {
+ type = string
+ default = null
+}
+
+variable "policy" {
+ type = map(any)
+ default = {}
+}
+
+variable "service_port_ranges" {
+ type = map(any)
+ default = {}
+}
+
+variable "key_name" {
+ type = string
+ default = null
+}
+
+variable "rule_condition" {
+ type = map(any)
+ default = {}
+}
+variable "rule_position" {
+ type = map(any)
+ default = {}
+}
+variable "key_name1" {
+ type = string
+ default = null
+}
+
+variable "key_name2" {
+ type = string
+ default = null
+}
+
+variable "rule_name" {
+ type = string
+ default = null
+}
+
+variable "action" {
+ type = string
+ default = null
+}
+
+variable "destination_address" {
+ type = list(string)
+ default = []
+}
+variable "source_address" {
+ type = list(string)
+ default = []
+}
+
+
+variable "after_rule" {
+ type = string
+ default = null
+}
+variable "before_rule" {
+ type = string
+ default = null
+}
+
+variable "protocol" {
+ type = string
+ default = null
+}
+
+
+
diff --git a/cd3_automation_toolkit/user-scripts/terraform/mysql-dbsystem.tf b/cd3_automation_toolkit/user-scripts/terraform/mysql-dbsystem.tf
new file mode 100644
index 000000000..b8dcba931
--- /dev/null
+++ b/cd3_automation_toolkit/user-scripts/terraform/mysql-dbsystem.tf
@@ -0,0 +1,169 @@
+# Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
+# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
+#
+############################################
+# Module Block - MySQL Database
+# Create MySQL DB Systems
+############################################
+
+data "oci_mysql_mysql_configurations" "mysql_configurations" {
+ # depends_on = [module.mysql-configuration]
+ for_each = var.mysql_db_system != null ? var.mysql_db_system : {}
+ compartment_id = each.value.configuration_compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.configuration_compartment_id)) > 0 ? each.value.configuration_compartment_id : var.compartment_ocids[each.value.configuration_compartment_id]) : var.compartment_ocids[each.value.configurations_compartment_id]
+ display_name = each.value.configuration_id
+ state = "ACTIVE"
+}
+
+data "oci_core_subnets" "oci_mysql_subnets" {
+ # depends_on = [module.subnets] # Uncomment to create Network and MySQL together
+ for_each = var.mysql_db_system != null ? var.mysql_db_system : {}
+ compartment_id = each.value.network_compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.network_compartment_id)) > 0 ? each.value.network_compartment_id : var.compartment_ocids[each.value.network_compartment_id]) : var.compartment_ocids[each.value.network_compartment_id]
+ display_name = each.value.subnet_id
+ vcn_id = data.oci_core_vcns.oci_mysql_vcns[each.key].virtual_networks.*.id[0]
+}
+
+data "oci_core_vcns" "oci_mysql_vcns" {
+ # depends_on = [module.vcns] # Uncomment to create Network and MySQL together
+ for_each = var.mysql_db_system != null ? var.mysql_db_system : {}
+ compartment_id = each.value.network_compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.network_compartment_id)) > 0 ? each.value.network_compartment_id : var.compartment_ocids[each.value.network_compartment_id]) : var.compartment_ocids[each.value.network_compartment_id]
+ display_name = each.value.vcn_names
+}
+
+
+module "mysql_db_system" {
+
+ source = "./modules/database/mysql-dbsystem"
+ for_each = var.mysql_db_system != null ? var.mysql_db_system : {}
+
+ compartment_id = each.value.compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.compartment_id)) > 0 ? each.value.compartment_id : var.compartment_ocids[each.value.compartment_id]) : null
+ network_compartment_id = each.value.network_compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.network_compartment_id)) > 0 ? each.value.network_compartment_id : var.compartment_ocids[each.value.network_compartment_id]) : null
+ configuration_compartment_id = each.value.configuration_compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.configuration_compartment_id)) > 0 ? each.value.configuration_compartment_id : var.compartment_ocids[each.value.configuration_compartment_id]) : var.compartment_ocids[each.value.compartment_id]
+ configuration_id = length(regexall("ocid1.mysqlconfiguration.*", each.value.configuration_id)) > 0 ? each.value.configuration_id : data.oci_mysql_mysql_configurations.mysql_configurations[each.key].configurations[0].id
+ display_name = each.value.mysql_db_system_display_name
+ shape_name = each.value.mysql_shape_name
+ admin_username = each.value.mysql_db_system_admin_username
+ admin_password = each.value.mysql_db_system_admin_password
+ availability_domain = each.value.mysql_db_system_availability_domain != "" && each.value.mysql_db_system_availability_domain != null ? data.oci_identity_availability_domains.availability_domains.availability_domains[each.value.mysql_db_system_availability_domain].name : ""
+ vcn_names = [each.value.vcn_names]
+ subnet_id = each.value.subnet_id != "" ? (length(regexall("ocid1.subnet.oc*", each.value.subnet_id)) > 0 ? each.value.subnet_id : data.oci_core_subnets.oci_mysql_subnets[each.key].subnets.*.id[0]) : null
+ hostname_label = each.value.mysql_db_system_hostname_label
+ backup_id = each.value.backup_id
+ backup_policy_is_enabled = each.value.mysql_db_system_backup_policy_is_enabled
+ backup_policy_retention_in_days = each.value.mysql_db_system_backup_policy_retention_in_days
+ backup_policy_window_start_time = each.value.mysql_db_system_backup_policy_window_start_time
+ crash_recovery = each.value.mysql_db_system_crash_recovery
+ data_storage_size_in_gb = each.value.mysql_db_system_data_storage_size_in_gb
+ database_management = each.value.mysql_db_system_database_management
+ deletion_policy_automatic_backup_retention = each.value.mysql_db_system_deletion_policy_automatic_backup_retention
+ deletion_policy_final_backup = each.value.mysql_db_system_deletion_policy_final_backup
+ deletion_policy_is_delete_protected = each.value.mysql_db_system_deletion_policy_is_delete_protected
+ description = each.value.mysql_db_system_description
+ fault_domain = each.value.mysql_db_system_fault_domain
+ ip_address = each.value.mysql_db_system_ip_address
+ is_highly_available = each.value.mysql_db_system_is_highly_available
+ maintenance_window_start_time = each.value.mysql_db_system_maintenance_window_start_time
+ pitr_policy_is_enabled = each.value.mysql_db_system_backup_policy_pitr_policy_is_enabled
+ port = each.value.mysql_db_system_port
+ port_x = each.value.mysql_db_system_port_x
+ source_type = each.value.mysql_db_system_source_source_type != null ? each.value.mysql_db_system_source_source_type : null
+ defined_tags = each.value.defined_tags != null ? each.value.defined_tags : null
+ freeform_tags = each.value.freeform_tags != null ? each.value.freeform_tags : null
+}
+
+############################################
+# Module Block - MySQL Database
+# Create MySQL Configurations
+############################################
+
+data "oci_mysql_shapes" "mysql_shapes" {
+ for_each = var.mysql_configuration != null ? var.mysql_configuration : {}
+ compartment_id = each.value.compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.compartment_id)) > 0 ? each.value.compartment_id : var.compartment_ocids[each.value.compartment_id]) : var.compartment_ocids[each.value.compartment_id]
+ name = each.value.mysql_configuration_shape_name
+}
+
+module "mysql_configuration" {
+
+ source = "./modules/database/mysql-configuration"
+ for_each = var.mysql_configuration != null ? var.mysql_configuration : {}
+
+ compartment_id = each.value.compartment_id != null ? (length(regexall("ocid1.compartment.oc*", each.value.compartment_id)) > 0 ? each.value.compartment_id : var.compartment_ocids[each.value.compartment_id]) : null
+ mysql_configuration_shape_name = each.value.mysql_configuration_shape_name != null ? (length(regexall("(VM\\.Standard\\.(E[234]\\.[12468]|E[34]\\.(16|24|32|48|64))|MySQL\\.(VM\\.Standard\\.(E[34]\\.[12468]|E[34]\\.(16|24|32|48|64)\\.(8|16|32|64|128|256|384|512|768|1024)GB)|HeatWave\\.(BM\\.Standard(\\.E3)?|VM\\.Standard(\\.E3)?)|VM\\.Optimized3\\.[12468]\\.((8|16|32|64|128|256|384|512|768|1024)GB)|[12468]|16|32|48|64|256))", each.value.mysql_configuration_shape_name)) > 0 ? each.value.mysql_configuration_shape_name : data.oci_mysql_shapes.mysql_shapes[each.key].shapes.*.name[0]) : null
+ defined_tags = each.value.defined_tags
+ mysql_configuration_description = each.value.mysql_configuration_description
+ mysql_configuration_display_name = each.value.mysql_configuration_display_name
+ freeform_tags = each.value.freeform_tags
+ mysql_configuration_init_variables_lower_case_table_names = each.value.mysql_configuration_init_variables_lower_case_table_names
+ mysql_configuration_variables_autocommit = each.value.mysql_configuration_variables_autocommit
+ mysql_configuration_variables_big_tables = each.value.mysql_configuration_variables_big_tables
+ mysql_configuration_variables_binlog_expire_logs_seconds = each.value.mysql_configuration_variables_binlog_expire_logs_seconds
+ mysql_configuration_variables_binlog_row_metadata = each.value.mysql_configuration_variables_binlog_row_metadata
+ mysql_configuration_variables_binlog_row_value_options = each.value.mysql_configuration_variables_binlog_row_value_options
+ mysql_configuration_variables_binlog_transaction_compression = each.value.mysql_configuration_variables_binlog_transaction_compression
+ mysql_configuration_variables_completion_type = each.value.mysql_configuration_variables_completion_type
+ mysql_configuration_variables_connect_timeout = each.value.mysql_configuration_variables_connect_timeout
+ mysql_configuration_variables_connection_memory_chunk_size = each.value.mysql_configuration_variables_connection_memory_chunk_size
+ mysql_configuration_variables_connection_memory_limit = each.value.mysql_configuration_variables_connection_memory_limit
+ mysql_configuration_variables_cte_max_recursion_depth = each.value.mysql_configuration_variables_cte_max_recursion_depth
+ mysql_configuration_variables_default_authentication_plugin = each.value.mysql_configuration_variables_default_authentication_plugin
+ mysql_configuration_variables_foreign_key_checks = each.value.mysql_configuration_variables_foreign_key_checks
+ mysql_configuration_variables_global_connection_memory_limit = each.value.mysql_configuration_variables_global_connection_memory_limit
+ mysql_configuration_variables_global_connection_memory_tracking = each.value.mysql_configuration_variables_global_connection_memory_tracking
+ mysql_configuration_variables_group_replication_consistency = each.value.mysql_configuration_variables_group_replication_consistency
+ mysql_configuration_variables_information_schema_stats_expiry = each.value.mysql_configuration_variables_information_schema_stats_expiry
+ mysql_configuration_variables_innodb_buffer_pool_dump_pct = each.value.mysql_configuration_variables_innodb_buffer_pool_dump_pct
+ mysql_configuration_variables_innodb_buffer_pool_instances = each.value.mysql_configuration_variables_innodb_buffer_pool_instances
+ mysql_configuration_variables_innodb_buffer_pool_size = each.value.mysql_configuration_variables_innodb_buffer_pool_size
+ mysql_configuration_variables_innodb_ddl_buffer_size = each.value.mysql_configuration_variables_innodb_ddl_buffer_size
+ mysql_configuration_variables_innodb_ddl_threads = each.value.mysql_configuration_variables_innodb_ddl_threads
+ mysql_configuration_variables_innodb_ft_enable_stopword = each.value.mysql_configuration_variables_innodb_ft_enable_stopword
+ mysql_configuration_variables_innodb_ft_max_token_size = each.value.mysql_configuration_variables_innodb_ft_max_token_size
+ mysql_configuration_variables_innodb_ft_min_token_size = each.value.mysql_configuration_variables_innodb_ft_min_token_size
+ mysql_configuration_variables_innodb_ft_num_word_optimize = each.value.mysql_configuration_variables_innodb_ft_num_word_optimize
+ mysql_configuration_variables_innodb_ft_result_cache_limit = each.value.mysql_configuration_variables_innodb_ft_result_cache_limit
+ mysql_configuration_variables_innodb_ft_server_stopword_table = each.value.mysql_configuration_variables_innodb_ft_server_stopword_table
+ mysql_configuration_variables_innodb_lock_wait_timeout = each.value.mysql_configuration_variables_innodb_lock_wait_timeout
+ mysql_configuration_variables_innodb_log_writer_threads = each.value.mysql_configuration_variables_innodb_log_writer_threads
+ mysql_configuration_variables_innodb_max_purge_lag = each.value.mysql_configuration_variables_innodb_max_purge_lag
+ mysql_configuration_variables_innodb_max_purge_lag_delay = each.value.mysql_configuration_variables_innodb_max_purge_lag_delay
+ mysql_configuration_variables_innodb_stats_persistent_sample_pages = each.value.mysql_configuration_variables_innodb_stats_persistent_sample_pages
+ mysql_configuration_variables_innodb_stats_transient_sample_pages = each.value.mysql_configuration_variables_innodb_stats_transient_sample_pages
+ mysql_configuration_variables_interactive_timeout = each.value.mysql_configuration_variables_interactive_timeout
+ mysql_configuration_variables_local_infile = each.value.mysql_configuration_variables_local_infile
+ mysql_configuration_variables_mandatory_roles = each.value.mysql_configuration_variables_mandatory_roles
+ mysql_configuration_variables_max_allowed_packet = each.value.mysql_configuration_variables_max_allowed_packet
+ mysql_configuration_variables_max_binlog_cache_size = each.value.mysql_configuration_variables_max_binlog_cache_size
+ mysql_configuration_variables_max_connect_errors = each.value.mysql_configuration_variables_max_connect_errors
+ mysql_configuration_variables_max_connections = each.value.mysql_configuration_variables_max_connections
+ mysql_configuration_variables_max_execution_time = each.value.mysql_configuration_variables_max_execution_time
+ mysql_configuration_variables_max_heap_table_size = each.value.mysql_configuration_variables_max_heap_table_size
+ mysql_configuration_variables_max_prepared_stmt_count = each.value.mysql_configuration_variables_max_prepared_stmt_count
+ mysql_configuration_variables_mysql_firewall_mode = each.value.mysql_configuration_variables_mysql_firewall_mode
+ mysql_configuration_variables_mysqlx_connect_timeout = each.value.mysql_configuration_variables_mysqlx_connect_timeout
+ mysql_configuration_variables_mysqlx_deflate_default_compression_level = each.value.mysql_configuration_variables_mysqlx_deflate_default_compression_level
+ mysql_configuration_variables_mysqlx_deflate_max_client_compression_level = each.value.mysql_configuration_variables_mysqlx_deflate_max_client_compression_level
+ mysql_configuration_variables_mysqlx_enable_hello_notice = each.value.mysql_configuration_variables_mysqlx_enable_hello_notice
+ mysql_configuration_variables_mysqlx_interactive_timeout = each.value.mysql_configuration_variables_mysqlx_interactive_timeout
+ mysql_configuration_variables_mysqlx_lz4default_compression_level = each.value.mysql_configuration_variables_mysqlx_lz4default_compression_level
+ mysql_configuration_variables_mysqlx_lz4max_client_compression_level = each.value.mysql_configuration_variables_mysqlx_lz4max_client_compression_level
+ mysql_configuration_variables_mysqlx_max_allowed_packet = each.value.mysql_configuration_variables_mysqlx_max_allowed_packet
+ mysql_configuration_variables_mysqlx_read_timeout = each.value.mysql_configuration_variables_mysqlx_read_timeout
+ mysql_configuration_variables_mysqlx_wait_timeout = each.value.mysql_configuration_variables_mysqlx_wait_timeout
+ mysql_configuration_variables_mysqlx_write_timeout = each.value.mysql_configuration_variables_mysqlx_write_timeout
+ mysql_configuration_variables_mysqlx_zstd_default_compression_level = each.value.mysql_configuration_variables_mysqlx_zstd_default_compression_level
+ mysql_configuration_variables_mysqlx_zstd_max_client_compression_level = each.value.mysql_configuration_variables_mysqlx_zstd_max_client_compression_level
+ mysql_configuration_variables_net_read_timeout = each.value.mysql_configuration_variables_net_read_timeout
+ mysql_configuration_variables_net_write_timeout = each.value.mysql_configuration_variables_net_write_timeout
+ mysql_configuration_variables_parser_max_mem_size = each.value.mysql_configuration_variables_parser_max_mem_size
+ mysql_configuration_variables_regexp_time_limit = each.value.mysql_configuration_variables_regexp_time_limit
+ mysql_configuration_variables_sort_buffer_size = each.value.mysql_configuration_variables_sort_buffer_size
+ mysql_configuration_variables_sql_mode = each.value.mysql_configuration_variables_sql_mode
+ mysql_configuration_variables_sql_require_primary_key = each.value.mysql_configuration_variables_sql_require_primary_key
+ mysql_configuration_variables_sql_warnings = each.value.mysql_configuration_variables_sql_warnings
+ mysql_configuration_variables_thread_pool_dedicated_listeners = each.value.mysql_configuration_variables_thread_pool_dedicated_listeners
+ mysql_configuration_variables_thread_pool_max_transactions_limit = each.value.mysql_configuration_variables_thread_pool_max_transactions_limit
+ mysql_configuration_variables_time_zone = each.value.mysql_configuration_variables_time_zone
+ mysql_configuration_variables_tmp_table_size = each.value.mysql_configuration_variables_tmp_table_size
+ mysql_configuration_variables_transaction_isolation = each.value.mysql_configuration_variables_transaction_isolation
+ mysql_configuration_variables_wait_timeout = each.value.mysql_configuration_variables_wait_timeout
+
+}
\ No newline at end of file
diff --git a/cd3_automation_toolkit/user-scripts/terraform/provider.tf b/cd3_automation_toolkit/user-scripts/terraform/provider.tf
index 99c8b0959..acc0e95fb 100644
--- a/cd3_automation_toolkit/user-scripts/terraform/provider.tf
+++ b/cd3_automation_toolkit/user-scripts/terraform/provider.tf
@@ -19,7 +19,7 @@ terraform {
required_providers {
oci = {
source = "oracle/oci"
- version = "6.15.0"
+ version = "6.30.0"
}
}
}
diff --git a/cd3_automation_toolkit/user-scripts/terraform/variables_example.tf b/cd3_automation_toolkit/user-scripts/terraform/variables_example.tf
index 4c754b842..a43208680 100644
--- a/cd3_automation_toolkit/user-scripts/terraform/variables_example.tf
+++ b/cd3_automation_toolkit/user-scripts/terraform/variables_example.tf
@@ -986,6 +986,7 @@ variable "mysql_db_system" {
type = map(object({
compartment_id = string
network_compartment_id = string
+ configuration_compartment_id = string
mysql_db_system_display_name = string
configuration_id = string
mysql_shape_name = string
@@ -2228,6 +2229,21 @@ variable "decryption_rules" {
default = {}
}
+variable "tunnelinspect_rules" {
+ type = map(object({
+ action = string
+ rule_name = string
+ network_firewall_policy_id = string
+ condition = optional(list(object({
+ destination_address = optional(list(string))
+ source_address = optional(list(string))
+ })))
+ protocol = optional(string)
+ after_rule = optional(string)
+ before_rule = optional(string)
+ }))
+ default = {}
+}
#########################
####### Firewall Logs ########
#########################
diff --git a/jenkins_install/scriptler/scripts/AdditionalFilters.groovy b/jenkins_install/scriptler/scripts/AdditionalFilters.groovy
index 83a0d6789..dde616e17 100644
--- a/jenkins_install/scriptler/scripts/AdditionalFilters.groovy
+++ b/jenkins_install/scriptler/scripts/AdditionalFilters.groovy
@@ -30,11 +30,19 @@ compartment_filter_option = """
|
|
|
"""
+tag_filter_option = """
+
+ |
+
|
+ (Leave empty to export all resources)
|
+ |
+
|
|
+ """
List default_params_set = []
for (item in MainOptions.split(",")) {
if (item != "Export Identity") {
- html_to_be_rendered = "${html_to_be_rendered} ${region_filter_option} ${compartment_filter_option}"
- default_params_set = ["region","compartment"]
+ html_to_be_rendered = "${html_to_be_rendered} ${region_filter_option} ${compartment_filter_option} ${tag_filter_option}"
+ default_params_set = ["region","compartment","tag"]
break;
}
}
@@ -240,6 +248,12 @@ for (item in SubChildOptions.split(",")) {
|
|
|
+ |
|
+
+ |
+ |
+ |
+ |
|
|
"""
export_network_rules = "set"
diff --git a/jenkins_install/scriptler/scripts/SubChildOptions.groovy b/jenkins_install/scriptler/scripts/SubChildOptions.groovy
index 283ff7a35..81efe5005 100644
--- a/jenkins_install/scriptler/scripts/SubChildOptions.groovy
+++ b/jenkins_install/scriptler/scripts/SubChildOptions.groovy
@@ -1,6 +1,6 @@
List sec_rules = ["SECURITY RULES:disabled","Export Security Rules (From OCI into SecRulesinOCI sheet)", "Add/Modify/Delete Security Rules (Reads SecRulesinOCI sheet)"]
List route_rules = ["ROUTE RULES:disabled","Export Route Rules (From OCI into RouteRulesinOCI sheet)", "Add/Modify/Delete Route Rules (Reads RouteRulesinOCI sheet)"]
-List firewall_policy = ["FIREWALL POLICY:disabled","Add/Modify/Delete Policy", "Add/Modify/Delete Service","Add/Modify/Delete Service-list","Add/Modify/Delete Application","Add/Modify/Delete Application-list","Add/Modify/Delete Address-list","Add/Modify/Delete Url-list","Add/Modify/Delete Security rules","Add/Modify/Delete Mapped Secrets","Add/Modify/Delete Decryption Rules","Add/Modify/Delete Decryption Profile"]
+List firewall_policy = ["FIREWALL POLICY:disabled","Add/Modify/Delete Policy", "Add/Modify/Delete Service","Add/Modify/Delete Service-list","Add/Modify/Delete Application","Add/Modify/Delete Application-list","Add/Modify/Delete Address-list","Add/Modify/Delete Url-list","Add/Modify/Delete Security rules","Add/Modify/Delete Mapped Secrets","Add/Modify/Delete Decryption Rules","Add/Modify/Delete Decryption Profile","Add/Modify/Delete Tunnel Inspection Rules"]
List drg_route_rules = ["DRG ROUTE RULES:disabled","Export DRG Route Rules (From OCI into DRGRouteRulesinOCI sheet)", "Add/Modify/Delete DRG Route Rules (Reads DRGRouteRulesinOCI sheet)"]
List nsg = ["NSGs:disabled","Export NSGs (From OCI into NSGs sheet)", "Add/Modify/Delete NSGs (Reads NSGs sheet)"]
List cis = ["CIS:disabled","Download latest compliance checking script", "Execute compliance checking script"]
diff --git a/jenkins_install/scriptler/scripts/SubOptions.groovy b/jenkins_install/scriptler/scripts/SubOptions.groovy
index 1dabea598..8a1e0a24f 100644
--- a/jenkins_install/scriptler/scripts/SubOptions.groovy
+++ b/jenkins_install/scriptler/scripts/SubOptions.groovy
@@ -7,7 +7,7 @@ List oci_firewall = ["OCI FIREWALL:disabled","Validate Firewall CD3 Exce
List dns_management = ["DNS:disabled","Add/Modify/Delete DNS Views/Zones/Records", "Add/Modify/Delete DNS Resolvers"]
List compute = ["COMPUTE:disabled","Add/Modify/Delete Dedicated VM Hosts", "Add/Modify/Delete Instances/Boot Backup Policy"]
List storage = ["STORAGE:disabled","Add/Modify/Delete Block Volumes/Block Backup Policy", "Add/Modify/Delete File Systems", "Add/Modify/Delete Object Storage Buckets"]
-List database = ["DATABASE:disabled","Add/Modify/Delete Virtual Machine or Bare Metal DB Systems", "Add/Modify/Delete EXA Infra and EXA VM Clusters", "Add/Modify/Delete ADBs"]
+List database = ["DATABASE:disabled","Add/Modify/Delete Virtual Machine or Bare Metal DB Systems", "Add/Modify/Delete EXA Infra and EXA VM Clusters", "Add/Modify/Delete ADBs", "Add/Modify/Delete MySQL DBs"]
List load_balancers = ["LOAD BALANCERS:disabled","Add/Modify/Delete Load Balancers", "Add/Modify/Delete Network Load Balancers"]
List management_services = ["MANAGEMENT SERVICES:disabled","Add/Modify/Delete Notifications", "Add/Modify/Delete Events", "Add/Modify/Delete Alarms", "Add/Modify/Delete ServiceConnectors"]
List developer_services = ["DEVELOPER SERVICES:disabled","Add/Modify/Delete OKE Cluster and Nodepools"]
@@ -24,7 +24,7 @@ List ex_firewall = ["OCI FIREWALL:disabled","Export Firewall Policy", "Ex
List ex_dns = ["DNS:disabled","Export DNS Views/Zones/Records", "Export DNS Resolvers"]
List ex_compute = ["COMPUTE:disabled","Export Dedicated VM Hosts", "Export Instances (excludes instances launched by OKE)"]
List ex_storage = ["STORAGE:disabled","Export Block Volumes/Block Backup Policy", "Export File Systems", "Export Object Storage Buckets"]
-List ex_databases = ["DATABASE:disabled","Export Virtual Machine or Bare Metal DB Systems", "Export EXA Infra and EXA VMClusters", "Export ADBs"]
+List ex_databases = ["DATABASE:disabled","Export Virtual Machine or Bare Metal DB Systems", "Export EXA Infra and EXA VMClusters", "Export ADBs", "Export MySQL DBs"]
List ex_lb = ["LOAD BALANCERS:disabled","Export Load Balancers", "Export Network Load Balancers"]
List ex_management = ["MANAGEMENT SERVICES:disabled","Export Notifications", "Export Events", "Export Alarms", "Export Service Connectors"]
List ex_developer = ["DEVELOPER SERVICES:disabled","Export OKE cluster and Nodepools"]
diff --git a/jenkins_install/scriptler/scripts/ValidateParams.groovy b/jenkins_install/scriptler/scripts/ValidateParams.groovy
index 3aadab931..b9a8d0cd7 100644
--- a/jenkins_install/scriptler/scripts/ValidateParams.groovy
+++ b/jenkins_install/scriptler/scripts/ValidateParams.groovy
@@ -10,7 +10,7 @@ def validate_params(Workflow,MainOptions,SubOptions,SubChildOptions,AdditionalFi
"DNS Management":["Add/Modify/Delete DNS Views/Zones/Records", "Add/Modify/Delete DNS Resolvers"],
"Compute":["Add/Modify/Delete Dedicated VM Hosts", "Add/Modify/Delete Instances/Boot Backup Policy"],
"Storage":["Add/Modify/Delete Block Volumes/Block Backup Policy", "Add/Modify/Delete File Systems", "Add/Modify/Delete Object Storage Buckets"],
- "Database":["Add/Modify/Delete Virtual Machine or Bare Metal DB Systems", "Add/Modify/Delete EXA Infra and EXA VM Clusters", "Add/Modify/Delete ADBs"],
+ "Database":["Add/Modify/Delete Virtual Machine or Bare Metal DB Systems", "Add/Modify/Delete EXA Infra and EXA VM Clusters", "Add/Modify/Delete ADBs", "Add/Modify/Delete MySQL DBs"],
"Load Balancers":["Add/Modify/Delete Load Balancers", "Add/Modify/Delete Network Load Balancers"],
"Management Services":["Add/Modify/Delete Notifications", "Add/Modify/Delete Events", "Add/Modify/Delete Alarms", "Add/Modify/Delete ServiceConnectors"],
"Developer Services":["Upload current terraform files/state to Resource Manager", "Add/Modify/Delete OKE Cluster and Nodepools"],
@@ -28,7 +28,7 @@ def validate_params(Workflow,MainOptions,SubOptions,SubChildOptions,AdditionalFi
"Export DNS Management":["Export DNS Views/Zones/Records", "Export DNS Resolvers"],
"Export Compute":["Export Dedicated VM Hosts", "Export Instances (excludes instances launched by OKE)"],
"Export Storage":["Export Block Volumes/Block Backup Policy", "Export File Systems", "Export Object Storage Buckets"],
- "Export Databases":["Export Virtual Machine or Bare Metal DB Systems", "Export EXA Infra and EXA VMClusters", "Export ADBs"],
+ "Export Databases":["Export Virtual Machine or Bare Metal DB Systems", "Export EXA Infra and EXA VMClusters", "Export ADBs", "Export MySQL DBs"],
"Export Load Balancers":["Export Load Balancers", "Export Network Load Balancers"],
"Export Management Services":["Export Notifications", "Export Events", "Export Alarms", "Export Service Connectors"],
"Export Developer Services":["Export OKE cluster and Nodepools"],
diff --git a/jenkins_install/setUpOCI.groovy b/jenkins_install/setUpOCI.groovy
index 8a64a1eb5..1ea6c2ce1 100644
--- a/jenkins_install/setUpOCI.groovy
+++ b/jenkins_install/setUpOCI.groovy
@@ -1,6 +1,45 @@
def buildstatus = ""
def git_status = 0
def prefix = "${env.JOB_NAME}".split('/')[0]
+def exportNetworkRules(stage_name) {
+ return {
+ stage("${stage_name}") {
+ catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
+ labelledShell( label: 'Executing setUpOCI python script', script: """
+ cd /cd3user/oci_tools/cd3_automation_toolkit
+ python setUpOCI.py --devops True --main_options "Network" --sub_options "Security Rules,Route Rules,DRG Route Rules" --sub_child_options "Export Security Rules (From OCI into SecRulesinOCI sheet),Add/Modify/Delete Security Rules (Reads SecRulesinOCI sheet),Export Route Rules (From OCI into RouteRulesinOCI sheet),Add/Modify/Delete Route Rules (Reads RouteRulesinOCI sheet),Export DRG Route Rules (From OCI into DRGRouteRulesinOCI sheet),Add/Modify/Delete DRG Route Rules (Reads DRGRouteRulesinOCI sheet)" --add_filter "comp_filter=,[],@," ${env.prop_file}
+ """)
+ script {
+ git_status = labelledShell( label: 'Check git status', script: 'cd ${prefix_dir}/terraform_files; git status --porcelain | wc -l', returnStdout: true).trim()
+ // Check if anything to commit
+ if ("${git_status}" > 0) {
+ labelledShell( label: 'Performing git commit to develop', script: '''
+ set +x
+ cd ${prefix_dir}/terraform_files
+ echo "-----start timestamp-----"
+ time_stamp="$(date +%m-%d-%Y-%H-%M-%S)"
+ commit_msg="commit for setUpOCI build ${BUILD_NUMBER}"
+ git add -A .
+ git commit -m "${commit_msg}"
+ git push origin develop
+ ''')
+ }else {
+ echo 'Nothing to commit. Skipping further stages.'
+ }
+ }
+
+ file_path = sh(script: "set +x; grep '^cd3file' ${env.prop_file}| cut -d'=' -f2", returnStdout: true).trim()
+ file_name = sh(script:"set +x; echo '${file_path}'| rev|cut -d '/' -f1 | rev", returnStdout: true).trim()
+ sh """
+ set +x
+ cp '${file_path}' '${WORKSPACE}/${file_name}'
+ """
+ archiveArtifacts "${file_name}"
+
+ }
+ }
+ }
+}
def generateStage(job) {
return {
stage("Stage: ${job}") {
@@ -13,8 +52,20 @@ def generateStage(job) {
region = values[0]
job_name = "./terraform_files/${region}/apply".replace("//","/")
}
- build job: "${job_name}"
- }
+ //build job: "${job_name}"
+ def job_exec_details = build job: "${job_name}", propagate: false, wait: true // Here wait: true means current running job will wait for build_job to finish.
+
+ //println(job_exec_details.getResult())
+ //println(job_exec_details.getFullProjectName())
+ //println((job_exec_details.getFullProjectName()).split("/")[3])
+ if (!["ABORTED","FAILURE"].contains(job_exec_details.getResult()) && ["apply","network"].contains((job_exec_details.getFullProjectName()).split("/")[3])) {
+ if ( SubOptions.contains('Create Network') || SubOptions.contains('Modify Network') ) {
+ def stage_name = "Export Network Rules"
+ parallel([stage_name : exportNetworkRules(stage_name)])
+ }
+
+ }
+ }
}
}
properties([
@@ -83,7 +134,7 @@ properties([
parameters: [
[name:'MainOptions',value:'${MainOptions}'],
[name:'SubOptions', value: '${SubOptions}'],
- [name:'SubChildOptions', value: '${SubChildOptions}'],
+ [name:'SubChildOptions', value: '${SubChildOptions}'],
[name:'Workflow', value: '${Workflow}'],
[name:'Prefix', value: "${prefix}"]
]