1- // Copyright (c) 2017, 2024 , Oracle and/or its affiliates. All rights reserved.
1+ // Copyright (c) 2017, 2025 , Oracle and/or its affiliates. All rights reserved.
22// Licensed under the Mozilla Public License v2.0
33
4+
5+
6+ // /
7+ // /
8+ // If running tests against devtest-ashburn, set is_production_test = false
9+ // /
10+ locals {
11+ is_production_test = false
12+
13+ oca_devtest_ashburn = base64encode (file (" ${ path . module } /oca_to_devtest-ashburn.txt" ))
14+ oca_devtest_london = base64encode (file (" ${ path . module } /oca_to_devtest-london.txt" ))
15+
16+ cloud_init_script = local. is_production_test ? null : local. oca_devtest_london
17+ plugin_name = local. is_production_test ? " Logging Analytics" : " Test Plugin Ric"
18+ }
19+
20+
21+
422variable "tenancy_ocid" {}
523variable "region" {}
624variable "compartment_ocid" {}
@@ -17,40 +35,50 @@ provider "oci" {
1735 auth = " SecurityToken"
1836 config_file_profile = " terraform-federation-test"
1937 region = var. region
38+ # version = "7.2.0"
2039}
2140
22-
41+ // Agent simulator must be running against the compartment, see https://confluence.oraclecorp.com/confluence/display/MGMTAGENT/How+to+complete+TERSI+tickets
42+ // Otherwise this will fail with
43+ # Error: Invalid index
44+ #
45+ # on management_agent.tf line 114, in data "oci_management_agent_management_agent_plugins" "test_management_agent_plugins":
46+ # 114: agent_id = data.oci_management_agent_management_agents.find_agent.management_agents[0].id
47+ # |----------------
48+ # | data.oci_management_agent_management_agents.find_agent.management_agents is empty list of object
2349data "oci_management_agent_management_agents" "find_agent" {
24- # Required
2550 compartment_id = var. compartment_ocid
26-
27- # Optional
2851 availability_status = " ACTIVE"
2952 display_name = " terraformTest"
3053 state = " ACTIVE"
3154}
3255
33- resource "oci_management_agent_management_agent" "test_management_agent" {
34- # Required
35- managed_agent_id = data. oci_management_agent_management_agents . find_agent . management_agents [0 ]. id
3656
37- # Optional
38- deploy_plugins_id = [data . oci_management_agent_management_agent_plugins . test_management_agent_plugins . management_agent_plugins . 1 . id ]
39- freeform_tags = {" tagKey" : " tagValue" }
57+ // Find a plugin in the MACS environment
58+ data "oci_management_agent_management_agent_plugins" "test_management_agent_plugins" {
59+ compartment_id = var. compartment_ocid
60+ display_name = local. plugin_name
61+ agent_id = data. oci_management_agent_management_agents . find_agent . management_agents [0 ]. id
4062
4163}
4264
65+ // Using one of the simulator agents, add it to terraform and deploy plugin to it
66+ // also modify the freeform tags
67+ resource "oci_management_agent_management_agent" "test_management_agent" {
68+ managed_agent_id = data. oci_management_agent_management_agents . find_agent . management_agents [0 ]. id
69+ deploy_plugins_id = [data . oci_management_agent_management_agent_plugins . test_management_agent_plugins . management_agent_plugins . 0 . id ]
70+ freeform_tags = {" tagKey" : " tagValue" }
71+ }
4372
73+ // Test data load of all agents with subtree
4474data "oci_management_agent_management_agents" "test_management_agents_subtree" {
45- # Required
4675 compartment_id = var. root_compartment_ocid
47-
48- # Optional
4976 access_level = " ACCESSIBLE"
5077 availability_status = " ACTIVE"
5178 compartment_id_in_subtree = true
5279}
5380
81+ // Test data load for specific agent
5482data "oci_management_agent_management_agents" "test_management_agents" {
5583 # Required
5684 compartment_id = var. compartment_ocid
@@ -69,65 +97,53 @@ data "oci_management_agent_management_agents" "test_management_agents" {
6997 version = [" 210101.0101" ]
7098}
7199
100+ // Create an install key
101+ // NOTE this can fail if the time_expires is older than today.. you may have to change this value
72102resource "oci_management_agent_management_agent_install_key" "test_management_agent_install_key" {
73- # Required
74103 compartment_id = var. compartment_ocid
75-
76- # Optional
77104 allowed_key_install_count = " 200"
78105 display_name = " terraformTest"
79- time_expires = " 2026-02-23T17 :27:44.398Z"
106+ time_expires = " 2026-02-19T17 :27:44.398Z"
80107}
81108
109+ // Create unlimited install key
82110resource "oci_management_agent_management_agent_install_key" "test_management_agent_install_key_unlimited" {
83- # Required
84111 compartment_id = var. compartment_ocid
85-
86- # Optional
87112 display_name = " terraformTest"
88113 is_unlimited = true
89114}
90115
116+ // Test data load for install keys
91117data "oci_management_agent_management_agent_install_keys" "test_management_agent_install_keys" {
92- # Required
93118 compartment_id = var. compartment_ocid
94119}
95120
121+ // Test data load for specific install key
96122data "oci_management_agent_management_agent_install_key" "test_management_agent_install_key" {
97- # Required
98123 management_agent_install_key_id = oci_management_agent_management_agent_install_key. test_management_agent_install_key . id
99124}
100125
101- data "oci_management_agent_management_agent_plugins" "test_management_agent_plugins" {
102- # Required
103- compartment_id = var. compartment_ocid
104-
105- # Optional
106- agent_id = data. oci_management_agent_management_agents . find_agent . management_agents [0 ]. id
107-
108- }
109-
126+ // Test data load for agent images
110127data "oci_management_agent_management_agent_images" "test_management_agent_images" {
111- # Required
112128 compartment_id = var. compartment_ocid
113129}
114130
131+ // Load history agent
115132data "oci_management_agent_management_agent_available_histories" "test_management_agent_available_histories" {
116- # Required
117133 management_agent_id = data. oci_management_agent_management_agents . find_agent . management_agents [0 ]. id
118-
119- # Optional
120134 time_availability_status_ended_greater_than = " 2020-01-15T01:01:01.000Z"
121135 time_availability_status_started_less_than = " 2029-09-28T01:01:01.000Z"
122136
123137}
124138
139+ // load auto upgrade config for tenancy
125140data "oci_management_agent_management_agent_get_auto_upgradable_config" "test_management_agent_get_auto_upgradable_config" {
126- # Required
127141 compartment_id = var. tenancy_ocid
128142}
129143
130144
145+ // Create a compute instance, with OCA plugin enabled for management agent
146+ // If in devtest-ashburn, add cloud-init script to change endpoint of OCA
131147resource "oci_core_instance" "instance" {
132148
133149 agent_config {
@@ -139,7 +155,11 @@ resource "oci_core_instance" "instance" {
139155 }
140156
141157 }
158+ metadata = {
159+ user_data = local.cloud_init_script
160+ # ssh_authorized_keys = file("/Users/rambridg/.oci/macs_test_host1.pub")
142161
162+ }
143163 availability_domain = data. oci_identity_availability_domains . ads . availability_domains [0 ]. name
144164 compartment_id = var. compartment_ocid
145165 shape = var. shape
@@ -157,7 +177,6 @@ resource "oci_core_instance" "instance" {
157177 subnet_id = var. subnet
158178 display_name = " example_vnic"
159179 assign_public_ip = false
160- skip_source_dest_check = false
161180 }
162181
163182 display_name = " Terraform example Agent host"
@@ -174,14 +193,15 @@ data "oci_core_images" "compute_images" {
174193}
175194
176195
196+ // Find the management agent created by the compute instance, it will wait for 10 minutes for the agent to appear
177197data "oci_management_agent_management_agents" "find_compute_agent" {
178198 compartment_id = var. compartment_ocid
179199 host_id = oci_core_instance. instance . id
180200 wait_for_host_id = 10
181201}
182202
183203
184-
204+ // Update the OCA management agent, deploy plugin and update freeform tags
185205resource "oci_management_agent_management_agent" "test_compute_management_agent" {
186206 freeform_tags = { " TestingTag" : " TestingValue" }
187207 managed_agent_id = data. oci_management_agent_management_agents . find_compute_agent . management_agents [0 ]. id
0 commit comments