Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
95684ec
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 18, 2025
4b0d654
Update README.md
xs2suruchi Sep 18, 2025
91c0f89
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 18, 2025
fc0f1c1
Update installToolkit.sh
xs2suruchi Sep 18, 2025
973ab26
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 18, 2025
35ae033
Merge remote-tracking branch 'origin/develop' into develop
xs2suruchi Sep 18, 2025
fba2ad0
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 18, 2025
482d1d8
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 18, 2025
571507e
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 19, 2025
1f8b9a5
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 19, 2025
89f48b0
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 22, 2025
3056fd7
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 22, 2025
1f9ca1e
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 22, 2025
3f2325a
CD3 Automation Toolkit Release v2025.2.0
xs2suruchi Sep 23, 2025
6bc13ea
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 23, 2025
a46d798
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 23, 2025
67f0215
Merge remote-tracking branch 'origin/develop' into develop
xs2suruchi Sep 23, 2025
038c84b
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 24, 2025
98179fd
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 24, 2025
2685b87
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 26, 2025
25a5903
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 30, 2025
5db2d68
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 30, 2025
ae4d2f8
Automation Toolkit Release v2025.2.0
xs2suruchi Sep 30, 2025
87778d4
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 1, 2025
357ca37
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 6, 2025
0c6c913
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 6, 2025
c2cd6ce
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 6, 2025
bfcf4bd
Update README.md
Lasyavns Oct 8, 2025
91737a3
Update README.md
Lasyavns Oct 8, 2025
546f5d4
Update README.md
Lasyavns Oct 8, 2025
cb6f164
Update README.md
Lasyavns Oct 8, 2025
88061b1
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 8, 2025
3d3739b
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 9, 2025
33676af
Merge remote-tracking branch 'origin/develop' into develop
xs2suruchi Oct 9, 2025
6f34ab2
Automation Toolkit Release v2025.2.0
xs2suruchi Oct 9, 2025
319e5dc
Update README.md
xs2suruchi Oct 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ ARG USER_GID=$USER_UID
# Whether to download Provider as part of image creation
ARG DOWNLOAD_PROVIDER=NO
# TF Provider version
ARG TF_OCI_PROVIDER=7.8.0
ARG TF_OCI_PROVIDER=7.19.0
ARG TF_NULL_PROVIDER=3.2.3

RUN microdnf install -y sudo && \
groupadd --gid $USER_GID $USERNAME && \
useradd --uid $USER_UID --gid $USER_GID -d /$USERNAME -m $USERNAME && \
useradd --uid $USER_UID --gid $USER_GID $USERNAME && \
echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME && \
chmod 0440 /etc/sudoers.d/$USERNAME && \
mkdir -p /cd3user/tenancies && \
Expand Down
16 changes: 11 additions & 5 deletions OCIWorkVMStack/scripts/installToolkit.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
#!/bin/bash

username=cd3user
sudo mkdir -p /$username/mount_path
logfile="/$username/mount_path/installToolkit.log"
toolkit_dir="/tmp/githubCode"
tenancyconfig_properties="$toolkit_dir/cd3_automation_toolkit/user-scripts/tenancyconfig.properties"
mount_dir="/$username/mount_path"
sudo mkdir -p /$mount_dir/tenancies
sudo mkdir -p /$mount_dir/oci_tools

tenancyconfig_properties="/$mount_dir/oci_tools/cd3_automation_toolkit/user-scripts/tenancyconfig.properties"
start=$(date +%s.%N)
sudo sh -c "echo '########################################################################' >> /etc/motd"
sudo sh -c "echo ' Welcome to CD3 Automation Toolkit WorkVM' >> /etc/motd"
Expand Down Expand Up @@ -66,7 +69,10 @@ fi
sudo podman --version >> $logfile 2>&1 || true

echo "***Download Toolkit***" >> $logfile 2>&1
sudo git clone https://github.com/oracle-devrel/cd3-automation-toolkit.git $toolkit_dir >> $logfile 2>&1
sudo git clone https://github.com/oracle-devrel/cd3-automation-toolkit.git -b develop $toolkit_dir >> $logfile 2>&1
cp -r $toolkit_dir/cd3_automation_toolkit /$mount_dir/oci_tools/
cp -r $toolkit_dir/othertools /$mount_dir/oci_tools/
sudo chown -R $username:$username /$mount_dir/oci_tools/
stop_exec

curl -H "Authorization: Bearer Oracle" -L http://169.254.169.254/opc/v2/instance/ -o /tmp/metadata.json
Expand All @@ -88,7 +94,7 @@ stop_exec
sudo podman images >> $logfile 2>&1

echo "***Setting Up podman Container***" >> $logfile 2>&1
sudo podman run --name cd3_toolkit -it -p 8443:8443 -d -v /cd3user/mount_path:/cd3user/tenancies cd3_toolkit bash >> $logfile 2>&1
sudo podman run --name cd3_toolkit -it -p 8443:8443 -d -v /cd3user/mount_path:/cd3user cd3_toolkit bash >> $logfile 2>&1
stop_exec
sudo podman ps -a >> $logfile 2>&1
echo "Connect to Container using command - sudo podman exec -it cd3_toolkit bash " >> $logfile 2>&1
Expand All @@ -99,4 +105,4 @@ duration_sec=$(echo "$(date +%s.%N) - $start" | bc)
duration_min=$(echo "$duration_sec%3600/60" | bc)
execution_time=`printf "%.2f seconds" $duration_sec`
echo "Script Execution Time in Seconds: $execution_time" >> $logfile 2>&1
echo "Script Execution Time in Minutes: approx $duration_min Minutes" >> $logfile 2>&1
echo "Script Execution Time in Minutes: approx $duration_min Minutes" >> $logfile 2>&1
22 changes: 10 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<br>

[What's New](https://github.com/oracle-devrel/cd3-automation-toolkit/releases/tag/v2025.1.4) &nbsp;•&nbsp;[Excel Templates](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/excel-templates/) &nbsp;•&nbsp;[CD3 Docs](https://oracle-devrel.github.io/cd3-automation-toolkit/)&nbsp;•&nbsp; [Watch & Learn](https://www.youtube.com/playlist?list=PLPIzp-E1msrbJ3WawXVhzimQnLw5iafcp) &nbsp;•&nbsp;[Blogs & Tutorials](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/tutorials/) &nbsp;•&nbsp;[Livelabs](https://apexapps.oracle.com/pls/apex/f?p=133:180:112501098061930::::wid:3724) &nbsp;•&nbsp;[Slack Channel](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/queries)
[What's New](https://github.com/oracle-devrel/cd3-automation-toolkit/releases/tag/v2025.2.0) &nbsp;•&nbsp;[Excel Templates](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/excel-templates/) &nbsp;•&nbsp;[CD3 Docs](https://oracle-devrel.github.io/cd3-automation-toolkit/)&nbsp;•&nbsp; [Watch & Learn](https://www.youtube.com/playlist?list=PLPIzp-E1msrbJ3WawXVhzimQnLw5iafcp) &nbsp;•&nbsp;[Blogs & Tutorials](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/tutorials/) &nbsp;•&nbsp;[Livelabs](https://apexapps.oracle.com/pls/apex/f?p=133:180:112501098061930::::wid:3724) &nbsp;•&nbsp;[Slack Channel](https://oracle-devrel.github.io/cd3-automation-toolkit/latest/queries)

<br>

Expand Down Expand Up @@ -39,16 +39,15 @@ Additionally, the toolkit also supports seamless resource management using OCI D
<td>DNS Management</td>
<td>Load Balancers</td>
</tr>
<tr>
<td>OCI Network Firewall</td>
<td>KMS</td>
<td>Policy Enforcement using OPA</td>

</tr>
<tr>
<td>Compute</td>
<td>Storage</td>
<td>Database</td>
<td>Oracle, MySQL Databases</td>
</tr>
<tr>
<td>OCI Network Firewall</td>
<td>KMS</td>
<td>Policy Enforcement using OPA</td>
</tr>
<tr>
<td>OKE</td>
Expand All @@ -63,15 +62,14 @@ Additionally, the toolkit also supports seamless resource management using OCI D
<tr>
<td>Cloud Guard</td>
<td>SHOWOCI report</td>
<td>CIS Landing Zone<br>Compliance</td>

<td>CIS Compliance Report</td>
</tr>
</table>
</tr>


</body>

📌 The Toolkit also extends its support to <b>ADB@Azure</b>

<br>

## Why CD3?
Expand Down
1 change: 0 additions & 1 deletion cd3_automation_toolkit/CostManagement/__init__.py

This file was deleted.

5 changes: 0 additions & 5 deletions cd3_automation_toolkit/DeveloperServices/__init__.py

This file was deleted.

6 changes: 0 additions & 6 deletions cd3_automation_toolkit/Governance/__init__.py

This file was deleted.

10 changes: 0 additions & 10 deletions cd3_automation_toolkit/Identity/__init__.py

This file was deleted.

This file was deleted.

4 changes: 0 additions & 4 deletions cd3_automation_toolkit/ManagementServices/__init__.py

This file was deleted.

7 changes: 0 additions & 7 deletions cd3_automation_toolkit/Network/__init__.py

This file was deleted.

11 changes: 11 additions & 0 deletions cd3_automation_toolkit/Release-Notes
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
-------------------------------------
CD3 Automation Toolkit Tag v2025.2.0
Oct 10th, 2025
-------------------------------------
1. MultiCloud Support - Create and Export ADB @Azure using CD3. Documentation Link - https://oracle-devrel.github.io/cd3-automation-toolkit/latest/connect-container-to-azure-subscription/
2. Support full functionality of OCI Network Firewall using CD3.
3. Upgrade ADB Excel and Terraform to support all features. Password can be fetched from OCI vault too.
4. Performance tuning of Terraform for notifications and identity domain modules.
5. Support for IPv6 under networking.
6. Bug fix wrt SCH log re-ordering during terraform plan.

-------------------------------------
CD3 Automation Toolkit Tag v2025.1.4
Sep 17th, 2025
Expand Down
6 changes: 0 additions & 6 deletions cd3_automation_toolkit/Security/__init__.py

This file was deleted.

6 changes: 0 additions & 6 deletions cd3_automation_toolkit/Storage/__init__.py

This file was deleted.

5 changes: 0 additions & 5 deletions cd3_automation_toolkit/__init__.py

This file was deleted.

1 change: 1 addition & 0 deletions cd3_automation_toolkit/azurecloud/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#!/usr/bin/env python3
4 changes: 4 additions & 0 deletions cd3_automation_toolkit/azurecloud/python/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env python3

from .azrCommonTools import *
from .database import *
84 changes: 84 additions & 0 deletions cd3_automation_toolkit/azurecloud/python/azrCommonTools.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@


from typing import Dict
from common.python.commonTools import *
from typing import Dict, Optional
import os
# Azure SDKs
try:
from azure.identity import ClientSecretCredential
from azure.core.exceptions import HttpResponseError

except ImportError as e:
raise ImportError(
"Missing Azure SDK packages. Install with:\n"
" pip install azure-identity azure-mgmt-oracledatabase\n"
)



def _read_properties_file(filepath: str) -> Dict[str, str]:
"""Read key=value pairs from setUpAzure.properties into a dict."""
if not os.path.exists(filepath):
raise FileNotFoundError(f"Azure properties file not found: {filepath}")
props: Dict[str, str] = {}
with open(filepath, "r", encoding="utf-8") as f:
for raw in f:
line = raw.strip()
if not line or line.startswith("#"):
continue
if "=" not in line:
continue
k, v = line.split("=", 1)
props[k.strip()] = v.strip()
required = ["subscription_id", "tenant_id", "client_id", "client_secret"]
missing = [k for k in required if not props.get(k)]
if missing:
return "Missing required Azure credentials in {filepath}: {', '.join(missing)}"

return props


class azrCommonTools():
tagColumns = {'common tags', 'common_tags'}
def authenticate(self,azure_properties_file):
# Azure credential & client
az = _read_properties_file(azure_properties_file)
if "Missing required" in az:
print("\nCannot run export workflow as authentication parameters are missing!!\n")
exit()
credential = ClientSecretCredential(
tenant_id=az["tenant_id"],
client_id=az["client_id"],
client_secret=az["client_secret"],
)
credentials=[credential,az["subscription_id"]]
return credentials

def split_tag_values(columnname, columnvalue, tempdict):
columnvalue = columnvalue.replace("\n", "")
if ";" in columnvalue:
# If there are more than one tag; split them by ";" and "="

columnname = commonTools.check_column_headers(columnname)
multivalues = columnvalue.split(";")
multivalues = [part.split("=") for part in multivalues if part]

tempdict = {columnname: multivalues}
else:
# If there is only one tag; split them only by "="; each key-value pair is stored as a list
columnname = commonTools.check_column_headers(columnname)
multivalues = columnvalue.split("=")
multivalues = [str(part).strip() for part in multivalues if part]

tempdict = {columnname: [multivalues]}
return tempdict

def _flatten_tags(tags: Optional[Dict[str, str]]) -> str:
if not tags:
return ""
try:
return ";".join([f"{k}={v}" for k, v in tags.items() if v is not None])
except Exception:
return ""

7 changes: 7 additions & 0 deletions cd3_automation_toolkit/azurecloud/python/database/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env python3

from .create_terraform_adb_azure import create_terraform_adb_azure
from .export_adb_azure import export_adb_azure
from .create_terraform_exa_infra_azure import create_terraform_exa_infra_azure
from .create_terraform_exa_vmclusters_azure import create_terraform_exa_vmclusters_azure

Loading