{ "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", "handler": "Microsoft.Azure.CreateUIDef", "version": "0.1.2-preview", "parameters": { "config": { "basics": { "resourceGroup": { "allowExisting": true } } }, "basics": [ { "name": "infoForBeforeDeployment", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "Info", "text": "The Azure identity deploying this offer must have one of the following two sets of Azure role-based access control roles:
  • Contributor and User Access Administrator of the current subscription.
  • Owner of the current subscription.
  • " } }, { "name": "basicsRequired", "type": "Microsoft.Common.Section", "label": "Credentials for WebLogic", "elements": [ { "name": "listVMSizes", "type": "Microsoft.Solutions.ArmApiControl", "request": { "method": "GET", "path": "[concat(subscription().id, '/providers/Microsoft.Compute/locations/',location(),'/vmSizes?api-version=2024-03-01')]" } }, { "name": "wlsUserName", "type": "Microsoft.Common.TextBox", "label": "Username for WebLogic Administrator", "defaultValue": "weblogic", "toolTip": "Use only letters and numbers", "constraints": { "required": true, "validations": [ { "regex": "^[a-z0-9A-Z]{1,30}$", "message": "The value must be 1-30 characters long and must only contain letters and numbers." } ] }, "visible": true }, { "name": "wlsPassword", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Password for WebLogic Administrator", "confirmPassword": "Confirm password" }, "toolTip": "Password for WebLogic Administrator", "constraints": { "required": true, "regex": "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d]{12,}$", "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number, and special characters are not allowed." }, "options": { "hideConfirmation": false }, "visible": true }, { "name": "wdtRuntimePassword", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Password for WebLogic Model encryption", "confirmPassword": "Confirm password" }, "toolTip": "Model in Image requires a runtime encryption secret with a secure `password` key. This secret is used by the operator to encrypt model and domain home artifacts before it adds them to a runtime ConfigMap or log. See https://aka.ms/wls-aks-model-runtime-encryption-secret.", "constraints": { "required": true, "regex": "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d]{12,}$", "validationMessage": "The password must contain at least 12 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number, and special characters are not allowed." }, "options": { "hideConfirmation": false }, "visible": true } ], "visible": true }, { "name": "basicsOptional", "type": "Microsoft.Common.Section", "label": "Optional Basic Configuration", "elements": [ { "name": "basicsOptionalAcceptDefaults", "type": "Microsoft.Common.OptionsGroup", "label": "Accept defaults for optional configuration?", "defaultValue": "Yes", "toolTip": "Select 'No' to edit optional basic configuration.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "false" }, { "label": "No", "value": "true" } ], "required": true } }, { "name": "managedServerPrefix", "type": "Microsoft.Common.TextBox", "label": "Name prefix for Managed Server", "toolTip": "The string to prepend to the name of the managed server.", "defaultValue": "managed-server", "constraints": { "required": true, "regex": "^(?=.{3,20}$)[a-zA-Z](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$", "validationMessage": "The prefix must be between 3 and 20 characters long and contain letters, numbers and hyphens(-). The name must begin with a letter, end with a letter or digit, and not contain consecutive hyphens." }, "visible": "[bool(basics('basicsOptional').basicsOptionalAcceptDefaults)]" }, { "name": "wlsDomainName", "type": "Microsoft.Common.TextBox", "label": "WebLogic Domain Name", "toolTip": "The name of the WebLogic Domain to create.", "defaultValue": "domain1", "constraints": { "required": true, "regex": "^[a-z0-9A-Z]{3,20}$", "validationMessage": "The Domain Name must be between 3 and 20 characters long and contain letters, numbers only." }, "visible": "[bool(basics('basicsOptional').basicsOptionalAcceptDefaults)]" }, { "name": "wlsDomainUID", "type": "Microsoft.Common.TextBox", "label": "WebLogic Domain UID", "toolTip": "The UID of the WebLogic Domain to create.", "defaultValue": "sample-domain1", "constraints": { "required": true, "regex": "^(?=.{3,20}$)[a-zA-Z](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$", "validationMessage": "The prefix must be between 3 and 20 characters long and contain letters, numbers and hyphens(-). The name must begin with a letter, end with a letter or digit, and not contain consecutive hyphens." }, "visible": "[bool(basics('basicsOptional').basicsOptionalAcceptDefaults)]" }, { "name": "wlsClusterSize", "type": "Microsoft.Common.Slider", "min": 5, "max": 1000, "label": "Maximum dynamic cluster size", "defaultValue": 5, "showStepMarkers": false, "toolTip": "The maximum size of the dynamic WebLogic cluster.", "constraints": { "required": true }, "visible": "[bool(basics('basicsOptional').basicsOptionalAcceptDefaults)]" }, { "name": "wlsJavaOption", "type": "Microsoft.Common.TextBox", "label": "Custom Java Options to start WebLogic Server", "placeholder": "-Xms1200m -XX:MaxNewSize=300m -Dweblogic.webservice.i18n.charset=utf-8", "toolTip": "Specify Java options to start WebLogic Server.", "constraints": { "regex": "^-[a-z0-9A-Z:./+_=-]+(\\s-[a-z0-9A-Z:./+_=-]+){0,99}$", "validationMessage": "Allow letters, numbers, space, colon(:), plus(+), minus(-), full stop(.), slash(/), equal sign(=), underscore(_), and the value must be less then 100 Java options." }, "visible": "[bool(basics('basicsOptional').basicsOptionalAcceptDefaults)]" }, { "name": "enableT3TunnelingTextBlock", "type": "Microsoft.Common.TextBlock", "visible": false, "options": { "text": "If checked, configure the necessary settings to enable T3 tunneling. You must take additional action on the Networking tab if either of these are checked.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-t3-tunneling" } } }, { "name": "enableAdminT3Tunneling", "type": "Microsoft.Common.CheckBox", "label": "Enable T3 tunneling for Administration Server", "toolTip": "If checked, enable T3 tunneling for Administration Server", "visible": false }, { "name": "enableClusterT3Tunneling", "type": "Microsoft.Common.CheckBox", "label": "Enable T3 tunneling for WebLogic cluster", "toolTip": "If checked, enable T3 tunneling for WebLogic cluster.", "visible": false } ], "visible": true }, { "name": "howToReportIssues", "type": "Microsoft.Common.Section", "label": "Report issues, get help, and share feedback", "elements": [ { "name": "help", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "See the documentation for this offer in the Oracle WebLogic Kubernetes Operator.", "link": { "label": "Offer documentation", "uri": "https://aka.ms/wls-aks-docs" } } }, { "name": "howToReportIssueText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "If you encounter problems during the deployment of Oracle WebLogic Server, report them here.", "link": { "label": "Issue tracker", "uri": "https://aka.ms/arm-oraclelinux-wls-issues?version=${project.version}" } } }, { "name": "howToJoinSlack", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "If you want to interact directly with the Oracle WebLogic community, join the public Slack channel named 'oracle-weblogic'.", "link": { "label": "Join Slack", "uri": "https://aka.ms/arm-oraclelinux-wls-slack" } } }, { "name": "survey", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "To get free help with Azure migration from the development team, fill out this survey.", "link": { "label": "Take survey", "uri": "https://aka.ms/wls-on-azure-survey" } } } ], "visible": true } ], "steps": [ { "name": "section_aks", "label": "AKS", "subLabel": { "preValidation": "Provide required info for AKS cluster configuration", "postValidation": "Done" }, "bladeTitle": "AKS", "elements": [ { "name": "clusterInfo", "type": "Microsoft.Common.Section", "label": "Azure Kubernetes Service", "elements": [ { "name": "createAKSCluster", "type": "Microsoft.Common.OptionsGroup", "label": "Create a new AKS cluster?", "defaultValue": "Yes", "toolTip": "Select 'Yes' to create a new AKS cluster, or select 'No' to provide an existing AKS cluster.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "infoBoxAks", "type": "Microsoft.Common.InfoBox", "visible": "[not(bool(steps('section_aks').clusterInfo.createAKSCluster))]", "options": { "text": "Ensure that the AKS cluster is configured with the following networking settings:
  • Container networking: Azure CNI Node Subnet
  • Network policy: Azure
  • " } }, { "name": "aksClusterSelector", "type": "Microsoft.Solutions.ResourceSelector", "label": "Select AKS cluster", "toolTip": "Select the existing AKS cluster.", "resourceType": "Microsoft.ContainerService/managedClusters", "options": { "filter": { "subscription": "onBasics", "location": "onBasics" } }, "visible": "[not(bool(steps('section_aks').clusterInfo.createAKSCluster))]" }, { "name": "aksSupportedVersionTextBlock", "type": "Microsoft.Common.TextBlock", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]", "options": { "icon": "Info", "text": "AKS supports a range of Kubernetes versions. This offer is tested with a specific Kubernetes version known to work with WebLogic Server on AKS; click 'Learn more' to find the version information.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-well-tested-version" } } }, { "name": "nodeVMSizeSelector", "type": "Microsoft.Compute.SizeSelector", "label": "Node size", "toolTip": "The size of virtual machine to provision.", "recommendedSizes": [ "Standard_DS2_v2" ], "constraints": { "excludedSizes": [ "Standard_A0", "Standard_A1", "Standard_A1_v2", "Standard_F1", "Standard_F1s", "Standard_DS1_v2", "Standard_B12ms", "Standard_B16als_v2", "Standard_B16as_v2", "Standard_B16ls_v2", "Standard_B16ms", "Standard_B16pls_v2", "Standard_B16ps_v2", "Standard_B16s_v2", "Standard_B1ls", "Standard_B1ms", "Standard_B1s", "Standard_B20ms", "Standard_B2als_v2", "Standard_B2as_v2", "Standard_B2ats_v2", "Standard_B2ls_v2", "Standard_B2ms", "Standard_B2pls_v2", "Standard_B2ps_v2", "Standard_B2pts_v2", "Standard_B2s", "Standard_B2s_v2", "Standard_B2ts_v2", "Standard_B32als_v2", "Standard_B32as_v2", "Standard_B32ls_v2", "Standard_B32s_v2", "Standard_B4als_v2", "Standard_B4as_v2", "Standard_B4ls_v2", "Standard_B4ms", "Standard_B4pls_v2", "Standard_B4ps_v2", "Standard_B4s_v2", "Standard_B8als_v2", "Standard_B8as_v2", "Standard_B8ls_v2", "Standard_B8ms", "Standard_B8pls_v2", "Standard_B8ps_v2", "Standard_B8s_v2" ] }, "options": { "hideDiskTypeFilter": false }, "osPlatform": "Linux", "count": "[steps('section_aks').clusterInfo.aksNodeCount]", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]" }, { "name": "aksNodeCount", "type": "Microsoft.Common.Slider", "min": "[add(1, div(add(12288, mul(if(bool(basics('basicsOptional').basicsOptionalAcceptDefaults), basics('basicsOptional').wlsClusterSize, 5), 1536)), first(filter(basics('basicsRequired').listVMSizes.value, (item) => equals(item.name, steps('section_aks').clusterInfo.nodeVMSizeSelector))).memoryInMB))]", "defaultValue": 3, "max": 998, "label": "Minimum node count", "showStepMarkers": false, "toolTip": "Set the minimum node count for the cluster.", "constraints": { "required": true }, "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]" }, { "name": "aksNodeMaxCount", "type": "Microsoft.Common.Slider", "min": "[add(steps('section_aks').clusterInfo.aksNodeCount,2)]", "defaultValue": 3, "max": 1000, "label": "Maximum node count", "showStepMarkers": false, "toolTip": "Set the maximum node count for the cluster.", "constraints": { "required": true }, "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]" } ] }, { "name": "imageInfo", "type": "Microsoft.Common.Section", "label": "Image selection", "elements": [ { "name": "oracleCreateACR", "type": "Microsoft.Common.OptionsGroup", "visible": true, "label": "Create a new Azure Container Registry to store application images?", "defaultValue": "Yes", "toolTip": "Select 'Yes' to create a new ACR instance, or select 'No' to provide an existing ACR instance.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "oracleAcrInfo", "type": "Microsoft.Common.InfoBox", "visible": "[not(bool(steps('section_aks').imageInfo.oracleCreateACR))]", "options": { "icon": "Info", "text": "Make sure the Azure Container Registry has enabled the admin user.", "uri": "https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication#admin-account" } }, { "name": "oracleAcrSelector", "type": "Microsoft.Solutions.ResourceSelector", "label": "Select ACR instance", "toolTip": "Select the existing ACR instance.", "resourceType": "Microsoft.ContainerRegistry/registries", "options": { "filter": { "subscription": "onBasics", "location": "onBasics" } }, "visible": "[not(bool(steps('section_aks').imageInfo.oracleCreateACR))]" }, { "name": "ocrSSOInfo", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "Info", "text": "Provide an Oracle Single Sign-On (SSO) account to access the Oracle Registry Server. Select the link to create an Oracle SSO account.", "uri": "https://aka.ms/wls-aks-create-sso-account" } }, { "name": "ocrSSOUserName", "type": "Microsoft.Common.TextBox", "label": "Username for Oracle Single Sign-On authentication", "defaultValue": "example@contoso.com", "toolTip": "Username for Oracle Single Sign-On authentication to login the Oracle Container Registry.", "constraints": { "required": true, "regex": "^([a-zA-Z0-9_\\-\\.]+)@([a-zA-Z0-9_\\-\\.]+)\\.([a-zA-Z]{2,5})$", "validationMessage": "The value must be an email address." }, "visible": true }, { "name": "ocrSSOTokenInfo", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "Info", "text": "Please use an Auth Token associated with an SSO user. Select the link to see more details.", "uri": "https://aka.ms/wls-auth-token" } }, { "name": "ocrSSOPassword", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Auth token for Oracle Single Sign-On authentication", "confirmPassword": "Confirm token" }, "toolTip": "Auth token for Oracle Single Sign-On authentication to login the Oracle Container Registry.", "constraints": { "required": true, "regex": "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)[A-Za-z\\d\\$\\&\\+\\,:\\=\\?@#|'.\\^\\*!\\-_~/'\\[\\]\\{\\}\"]{8,}$", "validationMessage": "The token must contain at least 8 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number, and special characters, but should not contain > < ( ) % ; \\." }, "options": { "hideConfirmation": false }, "visible": true }, { "name": "fromImageInfo", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "Warning", "text": "Before moving forward, you must accept the Oracle Standard Terms and Restrictions for the WebLogic Server
    image in the Oracle Container Registry (OCR). The deployment will fail if you have not accepted the terms.

    If you have an Oracle support contract, we recommend using the Patched WebLogic Server Images.
    Otherwise, you can use the General WebLogic Server Images.

    To use the General WebLogic Server Images:To use the Patched WebLogic Server Images:Once you have accepted the terms in OCR, make sure to select the right type of image below." } }, { "name": "isSSOSupportEntitled", "type": "Microsoft.Common.OptionsGroup", "label": "Select the type of WebLogic Server Images.", "defaultValue": "General WebLogic Server Images", "toolTip": "If 'Patched WebLogic Server Images' is selected, the deployment process will pull from the Patched WebLogic Server Images repository. If 'General WebLogic Server Images' is selected the deployment process will pull from the General WebLogic Server Images repository.", "constraints": { "allowedValues": [ { "label": "General WebLogic Server Images", "value": "false" }, { "label": "Patched WebLogic Server Images", "value": "true" } ], "required": true }, "visible": true }, { "name": "oracleImageSelector", "type": "Microsoft.Common.DropDown", "label": "Select desired combination of WebLogic Server, JDK and Operating System or fully qualified Docker tag", "defaultValue": "14.1.2.0-17-ol9", "multiLine": true, "toolTip": "Select image", "constraints": { "allowedValues": [ { "label": "14.1.2.0-17-ol9", "description": "14c (14.1.2.0) on JDK 17 on Oracle Linux 9", "value": "14.1.2.0-generic-jdk17-ol9" }, { "label": "14.1.2.0-21-ol9", "description": "14c (14.1.2.0) on JDK 21 on Oracle Linux 9", "value": "14.1.2.0-generic-jdk21-ol9" }, { "label": "14.1.2.0-17-ol8", "description": "14c (14.1.2.0) on JDK 17 on Oracle Linux 8", "value": "14.1.2.0-generic-jdk17-ol8" }, { "label": "14.1.2.0-21-ol8", "description": "14c (14.1.2.0) on JDK 21 on Oracle Linux 8", "value": "14.1.2.0-generic-jdk21-ol8" }, { "label": "14.1.1.0-8", "description": "14c (14.1.1.0) on JDK 8 on Oracle Linux 7", "value": "14.1.1.0-8" }, { "label": "14.1.1.0-11", "description": "14c (14.1.1.0) on JDK 11 on Oracle Linux 7", "value": "14.1.1.0-11" }, { "label": "12.2.1.4", "description": "12cR2 (12.2.1.4) on JDK 8 on Oracle Linux 7", "value": "12.2.1.4" }, { "label": "14.1.1.0-8-ol8", "description": "14c (14.1.1.0.0) on JDK 8 on Oracle Linux 8", "value": "14.1.1.0-8-ol8" }, { "label": "14.1.1.0-11-ol8", "description": "14c (14.1.1.0.0) on JDK 11 on Oracle Linux 8", "value": "14.1.1.0-11-ol8" }, { "label": "12.2.1.4-ol8", "description": "12cR2 (12.2.1.4) on JDK 8 on Oracle Linux 8", "value": "12.2.1.4-ol8" }, { "label": "Others", "description": "Specify fully qualified Oracle Container Registry tag", "value": "others" } ], "required": true }, "visible": true }, { "name": "fromOracleImage", "type": "Microsoft.Common.TextBox", "visible": "[equals(steps('section_aks').imageInfo.oracleImageSelector, 'others')]", "label": "WebLogic Docker tag", "defaultValue": "14.1.1.0-slim-11", "toolTip": "Docker tag that comes after 'container-registry.oracle.com/middleware/weblogic:' in the fromOracleImage option to 'imagetool'.", "constraints": { "required": true, "validations": [ { "regex": "^[a-z0-9\\-\\.]+$", "message": "Must be a valid Docker tag for WebLogic on Oracle Container Registry" } ] } }, { "name": "unsupportedPlatformInfo1", "type": "Microsoft.Common.InfoBox", "visible": "[and(contains(steps('section_aks').clusterInfo.nodeVMSizeSelector,'p'), contains(parse('[\"14.1.1.0-11\", \"14.1.1.0-8\", \"14.1.1.0-slim-11\", \"14.1.1.0-slim-8\", \"12.2.1.4\", \"12.2.1.4-slim\"]'),if(equals(steps('section_aks').imageInfo.oracleImageSelector, 'others'), steps('section_aks').imageInfo.fromOracleImage, steps('section_aks').imageInfo.oracleImageSelector)))]", "options": { "icon": "Error", "text": "The selected image is not compatible with the ARM64 platform. Please choose a different image or select a different size from AKS -> Azure Kubernetes Service -> Node size. For more information, see the Azure documentation." } } ], "visible": true }, { "name": "jeeAppInfo", "type": "Microsoft.Common.Section", "label": "Application", "elements": [ { "name": "uploadAppPackage", "type": "Microsoft.Common.OptionsGroup", "label": "Deploy an application?", "defaultValue": "No", "toolTip": "Select 'Yes' to deploy your application.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "appInfoBox", "type": "Microsoft.Common.InfoBox", "options": { "icon": "Info", "text": "You must select the application files from Azure Storage Account.
    Follow the steps to upload your applications to an Azure Storage Account:
  • Create a Storage Account
  • Create a container and upload application files
  • " }, "visible": "[bool(steps('section_aks').jeeAppInfo.uploadAppPackage)]" }, { "name": "appPackageUrl", "type": "Microsoft.Common.FileUpload", "label": "Application package (.war,.ear,.jar)", "toolTip": "The application package to deploy.", "constraints": { "required": true, "accept": ".war,.ear,.jar" }, "options": { "multiple": true, "uploadMode": "url", "openMode": "binary" }, "visible": "[bool(steps('section_aks').jeeAppInfo.uploadAppPackage)]" }, { "name": "validateApplicationsInfo", "type": "Microsoft.Common.InfoBox", "visible": false, "options": { "icon": "Info", "text": "If checked, verify the deployed app reaches the ACTIVE state and fail the deployment if it does not. See the documentation link for more information.", "uri": "https://aka.ms/wls-aks-deployment-state" } }, { "name": "validateApplications", "type": "Microsoft.Common.CheckBox", "label": "Fail deployment if application does not become ACTIVE.", "toolTip": "If checked, verify the deployed app reaches the ACTIVE state and fail the deployment if it does not. See the documentation link for more information.", "visible": false }, { "name": "appReplicas", "type": "Microsoft.Common.TextBox", "label": "Number of WebLogic Managed Server replicas", "defaultValue": "2", "toolTip": "The number of WebLogic Managed Server replicas to deploy.", "constraints": { "required": true, "regex": "^(1|2|3|4|5){1}$", "validationMessage": "Number of WebLogic Managed Server replicas to deploy, limit 1-5." } } ], "visible": true }, { "name": "aksAdvancedConfig", "type": "Microsoft.Common.OptionsGroup", "label": "Show advanced configuration?", "defaultValue": "No", "toolTip": "Select 'Yes' to edit advanced configuration.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "aksAdvancedInfo", "type": "Microsoft.Common.Section", "label": "Advanced", "elements": [ { "name": "enableAzureMonitoringTextBlock", "type": "Microsoft.Common.TextBlock", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]", "options": { "icon": "Info", "text": "If checked, configure the necessary settings to integrate with Container insights. Container insights gives you performance visibility by collecting memory and processor metrics from controllers, nodes, and containers that are available in Kubernetes through the Metrics API. Container logs are also collected. Metrics are written to the metrics store and log data is written to the logs store associated with your Log Analytics workspace.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-container-insights" } } }, { "name": "enableAzureMonitoring", "type": "Microsoft.Common.CheckBox", "label": "Enable Container insights", "toolTip": "If checked, configure the necessary settings to integrate with Container insights.", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]" }, { "name": "enableAzureFileShareTextBlock", "type": "Microsoft.Common.TextBlock", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]", "options": { "icon": "Info", "text": "If checked, configure the necessary settings to mount a persistent volume to the nodes of the AKS cluster. This can be useful for storing log files outside of the AKS cluster, among other possible uses. An Azure Storage Account and an Azure Files share will be provisioned; static persistent volume with the Azure Files share will be mounted to the nodes of the AKS cluster.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-persistent-storage" } } }, { "name": "enableAzureFileShare", "toolTip": "If checked, configure the necessary settings to mount a persistent volume to the nodes of the AKS cluster.", "type": "Microsoft.Common.CheckBox", "label": "Create Persistent Volume using Azure File share service", "visible": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]" }, { "name": "useAcrImage", "type": "Microsoft.Common.CheckBox", "label": "Bring your own WebLogic Server Docker image from Azure Container Registry?", "toolTip": "Select 'Yes' to use a pre-existing Docker image, assumed to be a compatible WebLogic Server image, from the specified ACR instance. This allows the use of custom images, such as with a specific set of patches (PSUs)." }, { "name": "userProvidedAcrInfo", "type": "Microsoft.Common.InfoBox", "visible": "[bool(steps('section_aks').aksAdvancedInfo.useAcrImage)]", "options": { "icon": "Info", "text": "Make sure the Azure Container Registry has enabled the admin user.", "uri": "https://docs.microsoft.com/en-us/azure/container-registry/container-registry-authentication#admin-account" } }, { "name": "userProvidedAcrSelector", "type": "Microsoft.Solutions.ResourceSelector", "label": "Select existing ACR instance", "toolTip": "Select the existing ACR instance.", "resourceType": "Microsoft.ContainerRegistry/registries", "options": { "filter": { "subscription": "onBasics", "location": "onBasics" } }, "visible": "[bool(steps('section_aks').aksAdvancedInfo.useAcrImage)]" }, { "name": "userProvidedImagePath", "type": "Microsoft.Common.TextBox", "visible": "[bool(steps('section_aks').aksAdvancedInfo.useAcrImage)]", "label": "Please provide the image path", "toolTip": "Please provide the image path, the image must be stored in the selected ACR above", "defaultValue": "", "constraints": { "required": true, "regex": "[concat(coalesce(last(split(steps('section_aks').aksAdvancedInfo.userProvidedAcrSelector.id, '/')), ''), '.*$')]", "validationMessage": "The image must be stored in the selected ACR above" } } ], "visible": "[bool(steps('section_aks').aksAdvancedConfig)]" } ] }, { "name": "section_sslConfiguration", "type": "Microsoft.Common.Section", "label": "TLS/SSL", "elements": [ { "name": "sslConfigurationText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "Selecting 'Yes' here will cause the offer to configure WebLogic Server Administration Console, Remote Console and cluster to use HTTPS (Secure) ports, with your own TLS/SSL certificate.", "link": { "label": "Learn more", "uri": "https://aka.ms/arm-oraclelinux-wls-ssl-config" } } }, { "name": "enableCustomSSL", "type": "Microsoft.Common.OptionsGroup", "label": "Configure end to end TLS/SSL to WebLogic Server Administration Console and cluster on HTTPS (Secure) port, with your own certificate?", "defaultValue": "No", "toolTip": "Select 'Yes' to configure end to end TLS/SSL to WebLogic Server Administration Console and cluster on HTTPS (Secure) port, with your own certificate.", "constraints": { "allowedValues": [ { "label": "Yes", "value": true }, { "label": "No", "value": false } ], "required": false } }, { "name": "uploadedCustomSSLSettings", "type": "Microsoft.Common.Section", "visible": "[steps('section_sslConfiguration').enableCustomSSL]", "label": "TLS/SSL configuration settings", "elements": [ { "name": "sslKeystoreInfo0", "type": "Microsoft.Common.InfoBox", "visible": "true", "options": { "icon": "Info", "text": "You must provide different files for identity and trust KeyStores. Select here for more details.", "uri": "https://aka.ms/arm-oraclelinux-wls-ssl-configuration" } }, { "name": "uploadedCustomIdentityKeyStoreData", "type": "Microsoft.Common.FileUpload", "label": "Identity KeyStore Data file(.jks,.p12)", "toolTip": "Identity KeyStore for TLS/SSL configuration", "constraints": { "required": true, "accept": ".jks,.p12" }, "options": { "multiple": false, "uploadMode": "file", "openMode": "binary" }, "visible": true }, { "name": "uploadedCustomIdentityKeyStorePassphrase", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Password", "confirmPassword": "Confirm password" }, "toolTip": " The passphrase for the Identity KeyStore", "constraints": { "required": true, "regex": "^.{6,}$", "validationMessage": "Keypass must be at least 6 characters long." }, "options": { "hideConfirmation": false }, "visible": true }, { "name": "uploadedCustomIdentityKeyStoreType", "type": "Microsoft.Common.DropDown", "visible": "true", "label": "The Identity KeyStore type (JKS,PKCS12)", "defaultValue": "JKS", "toolTip": "One of the supported KeyStore types", "constraints": { "allowedValues": [ { "label": "JKS", "value": "JKS" }, { "label": "PKCS12", "value": "PKCS12" } ], "required": true } }, { "name": "uploadedPrivateKeyAlias", "type": "Microsoft.Common.TextBox", "visible": "true", "label": "The alias of the server's private key within the Identity KeyStore", "defaultValue": "", "toolTip": "Use only letters and numbers", "constraints": { "required": true, "regex": "^[a-z0-9A-Z]{1,30}$", "validationMessage": "The value must be 1-30 characters long and must only contain letters and numbers." } }, { "name": "uploadedPrivateKeyPassPhrase", "type": "Microsoft.Common.PasswordBox", "visible": "true", "label": { "password": "The passphrase for the server's private key within the Identity KeyStore", "confirmPassword": "Confirm passphrase" }, "toolTip": "Use only letters and numbers", "constraints": { "required": true, "regex": "^.{6,}$", "validationMessage": "Keypass must be at least 6 characters long." }, "options": { "hideConfirmation": false } }, { "name": "uploadedCustomTrustKeyStoreData", "type": "Microsoft.Common.FileUpload", "label": "Trust KeyStore Data file(.jks,.p12)", "toolTip": "Trust KeyStore for TLS/SSL configuration.", "constraints": { "required": true, "accept": ".jks,.p12" }, "options": { "multiple": false, "uploadMode": "file", "openMode": "binary" }, "visible": true }, { "name": "uploadedCustomTrustKeyStorePassPhrase", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Password", "confirmPassword": "Confirm password" }, "toolTip": " The passphrase for the Trust KeyStore", "constraints": { "required": true, "regex": "^.{6,}$", "validationMessage": "Keypass must be at least 6 characters long." }, "options": { "hideConfirmation": false }, "visible": true }, { "name": "uploadedCustomTrustKeyStoreType", "type": "Microsoft.Common.DropDown", "visible": "true", "label": "The Trust KeyStore type (JKS,PKCS12)", "defaultValue": "JKS", "toolTip": "One of the supported KeyStore types", "constraints": { "allowedValues": [ { "label": "JKS", "value": "JKS" }, { "label": "PKCS12", "value": "PKCS12" } ], "required": true } } ] } ] }, { "name": "section_appGateway", "type": "Microsoft.Common.Section", "label": "Load balancing", "subLabel": { "preValidation": "Provide required information for load balancing", "postValidation": "Done" }, "bladeTitle": "Load balancing", "elements": [ { "name": "connectToAGText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "This blade allows configuring options for load balancing and ingress controller." } }, { "name": "loadBalancingOptions", "type": "Microsoft.Common.OptionsGroup", "label": "Load Balancing Options", "defaultValue": "Application Gateway Ingress Controller", "toolTip": "Select load balancing option.", "constraints": { "allowedValues": [ { "label": "Application Gateway Ingress Controller", "value": "agic" }, { "label": "Standard Load Balancer Service", "value": "lbservice" }, { "label": "No Load Balancer", "value": "none" } ], "required": true }, "visible": true }, { "name": "appgwIngress", "type": "Microsoft.Common.Section", "label": "Application Gateway Ingress Controller", "elements": [ { "name": "enableAppGatewayText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "This option will cause the offer to configure an Application Gateway Ingress Controller", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-app-gateway-ingress-controller" } } }, { "name": "vnetInfo", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "Info", "text": "When creating a new virtual network, the subnet's address prefix is calculated automatically based on the virtual
    network's address prefix. When using an existing virtual network, a minimum virtual network size of /24 and a
    minimum subnet size of /24 are required. Additionally, the subnet must be dedicated only for use by the
    Application Gateway." } }, { "name": "vnetForApplicationGateway", "type": "Microsoft.Network.VirtualNetworkCombo", "label": { "virtualNetwork": "Virtual network", "subnets": "Subnets" }, "toolTip": { "virtualNetwork": "Select a virtual network in which to place the Application Gateway.", "subnets": "The subnet must be dedicated only for use by the Application Gateway." }, "defaultValue": { "name": "[concat('wlsaks-vnet',take(guid(), 8))]", "addressPrefixSize": "/24" }, "constraints": { "minAddressPrefixSize": "/24" }, "options": { "hideExisting": false }, "subnets": { "gatewaySubnet": { "label": "Subnet", "defaultValue": { "name": "wls-aks-gateway-subnet", "addressPrefixSize": "/24" }, "constraints": { "minAddressPrefixSize": "/24", "minAddressCount": 250, "requireContiguousAddresses": false } } }, "visible": true }, { "name": "appgwUsePrivateIP", "type": "Microsoft.Common.CheckBox", "label": "Configure frontend IP with private IP address", "toolTip": "If checked, expose WebLogic Server with private IP address.", "visible": false }, { "name": "sslCertText00", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "Choose an option for providing the TLS/SSL certificate:" } }, { "name": "sslCertText01", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "    ⁃ Upload a TLS/SSL certificate: Upload the pre-signed certificate now." } }, { "name": "sslCertText02", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "    ⁃ Generate a self-signed front-end certificate: Generate a self-signed front-end certificate and apply it during deployment.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-application-gateway-ssl-key-vault" } } }, { "name": "certificateOption", "type": "Microsoft.Common.OptionsGroup", "label": "Select desired TLS/SSL certificate option", "defaultValue": "Generate a self-signed front-end certificate", "toolTip": "Select desired TLS/SSL certificate option", "constraints": { "allowedValues": [ { "label": "Generate a self-signed front-end certificate", "value": "generateCert" }, { "label": "Upload a TLS/SSL certificate", "value": "haveCert" } ], "required": true }, "visible": true }, { "name": "appGatewaySSLCertData", "type": "Microsoft.Common.FileUpload", "label": "Front-End TLS/SSL certificate(.pfx)", "toolTip": "TLS/SSL certificate used for App Gateway", "constraints": { "required": true, "accept": ".pfx" }, "options": { "multiple": false, "uploadMode": "file", "openMode": "binary" }, "visible": "[equals(steps('section_appGateway').appgwIngress.certificateOption, 'haveCert')]" }, { "name": "appGatewaySSLCertPassword", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Password", "confirmPassword": "Confirm password" }, "toolTip": "Front-End TLS/SSL certificate password", "constraints": { "required": "[equals(steps('section_appGateway').appgwIngress.certificateOption, 'haveCert')]", "regex": "^((?=.*[0-9])(?=.*[a-z])|(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])|(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*])|(?=.*[0-9])(?=.*[A-Z])(?=.*[!@#$%^&*])|(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*])).{6,128}$", "validationMessage": "The password must contain at least 6 characters, with at least 1 uppercase letter, 1 lowercase letter and 1 number." }, "options": { "hideConfirmation": false }, "visible": "[equals(steps('section_appGateway').appgwIngress.certificateOption, 'haveCert')]" }, { "name": "uploadedSSLCertData", "type": "Microsoft.Common.FileUpload", "label": "Trusted root certificate(.cer, .cert)", "toolTip": "Trusted root certificate (CA certificate) used to set up end to end TLS/SSL", "constraints": { "required": true, "accept": ".cer, .cert" }, "options": { "multiple": false, "uploadMode": "file", "openMode": "binary" }, "visible": "[steps('section_sslConfiguration').enableCustomSSL]" }, { "name": "enableCookieBasedAffinity", "type": "Microsoft.Common.CheckBox", "label": "Disable cookie based affinity", "toolTip": "If checked, disable cookie based affinity", "visible": true }, { "name": "appgwForAdminServer", "type": "Microsoft.Common.OptionsGroup", "label": "Create ingress for Administration Console. Make sure no application with path /console*, it will cause conflict with Administration Console path.", "defaultValue": "No", "toolTip": "Select 'Yes' to Create ingress for Administration Console. Make sure no application with path /console*, it will cause conflict with Administration Console path.", "constraints": { "allowedValues": [ { "label": "Yes", "value": true }, { "label": "No", "value": false } ] }, "visible": true }, { "name": "appgwForAdminRemote", "type": "Microsoft.Common.OptionsGroup", "label": "Create ingress for WebLogic Remote Console. Make sure no application with path /remoteconsole*, it will cause conflict with WebLogic Remote Console path.", "defaultValue": "No", "toolTip": "Select 'Yes' to Create ingress for WebLogic Remote Console. Make sure no application with path /remoteconsole*, it will cause conflict with WebLogic Remote Console path.", "constraints": { "allowedValues": [ { "label": "Yes", "value": true }, { "label": "No", "value": false } ] }, "visible": true } ], "visible": "[equals(steps('section_appGateway').loadBalancingOptions, 'agic')]" }, { "name": "lbSVCInfo", "type": "Microsoft.Common.Section", "label": "Standard Load Balancer Service", "elements": [ { "name": "enableLBSVCText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "This option will cause the offer to provision the Azure Load Balancer service to expose the WebLogic Server Administration Console and the cluster.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-standard-load-balancer" } } }, { "name": "enableInternalLBText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "If checked, the offer will configure the load balancer as an internal load balancer.", "link": { "label": "Learn more", "uri": "https://aka.ms/wls-aks-internal-load-balancer" } } }, { "name": "enableInternalLB", "type": "Microsoft.Common.CheckBox", "label": "Use Internal Load Balancer", "toolTip": "If checked, the offer will configure the load balancer as an internal load balancer.", "visible": true }, { "name": "infoBoxForLbSvc", "type": "Microsoft.Common.InfoBox", "visible": true, "options": { "icon": "info", "text": "There must be at least one and at most two entries." } }, { "name": "lbSVC", "type": "Microsoft.Common.EditableGrid", "ariaLabel": "Enter information", "label": "Standard Load Balancer service", "toolTip": "Create Azure Standard Load Balancer service for Administration Console and cluster.", "visible": true, "constraints": { "width": "Full", "rows": { "count": { "min": 1, "max": 2 } }, "columns": [ { "id": "colName", "header": "Service name prefix", "width": "2fr", "element": { "type": "Microsoft.Common.TextBox", "placeholder": "Input a prefix...", "toolTip": "Input a prefix for service name. For example, inputing 'domain1-admin-server' will cause provisioning a Load Balancer service named with 'domain1-admin-server*' and exposing the Oracle WebLogic Administration Server to Internet.", "constraints": { "required": true, "validations": [ { "isValid": "[lessOrEquals(length(filter(steps('section_appGateway').lbSVCInfo.lbSVC, (item) => equals(item.colName, last(take(steps('section_appGateway').lbSVCInfo.lbSVC, $rowIndex)).colName))),1)]", "message": "You can not input the same service prefix repeadly, please change any of the value." }, { "regex": "^(?=.{3,20}$)[a-zA-Z](?!.*--)[a-zA-Z0-9-]*[a-zA-Z0-9]$", "message": "The prefix must be between 3 and 20 characters long and contain letters, numbers and hyphens(-). The name must begin with a letter, end with a letter or digit, and not contain consecutive hyphens." } ] } } }, { "id": "colTarget", "header": "Target", "width": "2fr", "element": { "type": "Microsoft.Common.DropDown", "placeholder": "Select a target...", "toolTip": "Create Azure Standard Load Balancer Servicer for the selected target.", "constraints": { "allowedValues": [ { "label": "admin-server", "value": "adminServer" }, { "label": "cluster-1", "value": "cluster1" } ], "required": true } } }, { "id": "colPort", "header": "Port", "width": "1fr", "element": { "type": "Microsoft.Common.TextBox", "placeholder": "Input a port...", "toolTip": "Public port for the target service, it's suggested to use 7001 for Oracle WebLogic Administration Server, and 8001 for cluster.", "constraints": { "required": true, "validations": [ { "isValid": "[lessOrEquals(length(filter(steps('section_appGateway').lbSVCInfo.lbSVC, (item) => equals(item.colTarget, last(take(steps('section_appGateway').lbSVCInfo.lbSVC, $rowIndex)).colTarget))),1)]", "message": "You can not select the same target repeatedly." }, { "regex": "^()([1-9]|[1-5]?[0-9]{2,4}|6[1-4][0-9]{3}|65[1-4][0-9]{2}|655[1-2][0-9]|6553[1-5])$", "message": "Only numbers are allowed, and the value must be 1-65535." } ] } } } ] } } ], "visible": "[equals(steps('section_appGateway').loadBalancingOptions, 'lbservice')]" } ] }, { "name": "section_dnsConfiguration", "type": "Microsoft.Common.Section", "label": "DNS", "elements": [ { "name": "dnsConfigurationText", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "Selecting 'Yes' here will cause the offer to provision Oracle WebLogic Server Administration Console, cluster, and Remote Console using custom DNS Name (example: admin.contoso.com)", "link": { "label": "Learn more", "uri": "https://aka.ms/arm-oraclelinux-wls-dns" } } }, { "name": "enableDNSConfiguration", "type": "Microsoft.Common.OptionsGroup", "label": "Custom DNS Alias", "defaultValue": "No", "toolTip": "Select 'Yes' to configure Custom DNS Alias.", "constraints": { "allowedValues": [ { "label": "Yes", "value": true }, { "label": "No", "value": false } ], "required": false } }, { "name": "bringDNSZone", "type": "Microsoft.Common.OptionsGroup", "label": "Use an existing Azure DNS Zone", "defaultValue": "No", "toolTip": "Select 'Yes' to configure Custom DNS Alias based on an existing Azure DNS Zone. Select 'No' to create an Azure DNS Zone and Custom DNS Alias.", "constraints": { "allowedValues": [ { "label": "Yes", "value": true }, { "label": "No", "value": false } ] }, "visible": "[steps('section_dnsConfiguration').enableDNSConfiguration]" }, { "name": "dnszoneName", "type": "Microsoft.Common.TextBox", "label": "DNS Zone Name", "defaultValue": "", "toolTip": "Each label must only contain letters, numbers, underscores, and dashes. Use periods to separate Domains", "constraints": { "required": true, "regex": "^([0-9a-zA-Z_-]{1,63}\\.){1,33}[0-9a-zA-Z_-]{1,63}$", "validationMessage": "There must be between 2 and 34 labels. For example, \"contoso.com\" has 2 labels. Each label must contain between 1 and 63 characters. Each label must only contain letters, numbers, underscores, and dashes." }, "visible": "[steps('section_dnsConfiguration').enableDNSConfiguration]" }, { "name": "dnsZoneResourceGroup", "type": "Microsoft.Common.TextBox", "label": "Name of the resource group contains the DNS Zone in current subscription", "defaultValue": "", "toolTip": "Name of the resource group which contains the DNS Zone in current subscription", "constraints": { "required": true, "regex": "^[a-z0-9A-Z.\\-_()]{0,89}([a-z0-9A-Z\\-_()]{1}){3,63}$", "validationMessage": "[if(greater(length(steps('section_dnsConfiguration').dnsZoneResourceGroup), 90),'Resource group names only allow up to 90 characters.', 'Resource group names only allow alphanumeric characters, periods, underscores, hyphens and parenthesis and cannot end in a period.')]" }, "visible": "[and(steps('section_dnsConfiguration').enableDNSConfiguration,steps('section_dnsConfiguration').bringDNSZone)]" }, { "name": "dnszoneAdminConsoleLabel", "type": "Microsoft.Common.TextBox", "label": "Label for Oracle WebLogic Server Administration Console", "defaultValue": "admin", "toolTip": "Specify a label to generate subdomain of Oracle WebLogic Server Administration Console", "constraints": { "required": true, "validations": [ { "regex": "^([0-9a-zA-Z_-]{1,63}\\.){0,33}[0-9a-zA-Z_-]{1,63}$", "message": "Each label must contain between 1 and 63 characters. Each label must only contain letters, numbers, underscores, and dashes." }, { "isValid": "[less(sub(length(concat(steps('section_dnsConfiguration').dnszoneAdminConsoleLabel,'.',steps('section_dnsConfiguration').dnszoneName)),length(replace(concat(steps('section_dnsConfiguration').dnszoneAdminConsoleLabel,'.',steps('section_dnsConfiguration').dnszoneName), '.', ''))),34)]", "message": "Subdomain must be between 2 and 34 labels. For example, \"admin.contoso.com\" has 3 labels." } ] }, "visible": "[and(steps('section_dnsConfiguration').enableDNSConfiguration, not(equals(steps('section_appGateway').loadBalancingOptions,'none')))]" }, { "name": "dnszoneAdminT3ChannelLabel", "type": "Microsoft.Common.TextBox", "label": "Label for Oracle WebLogic Administration Server T3 channel", "defaultValue": "admin-t3", "toolTip": "Specify a label to generate subdomain of Oracle WebLogic Administration Server T3 channel", "constraints": { "required": true, "validations": [ { "regex": "^([0-9a-zA-Z_-]{1,63}\\.){0,33}[0-9a-zA-Z_-]{1,63}$", "message": "Each label must contain between 1 and 63 characters. Each label must only contain letters, numbers, underscores, and dashes." }, { "isValid": "[less(sub(length(concat(steps('section_dnsConfiguration').dnszoneAdminT3ChannelLabel,'.',steps('section_dnsConfiguration').dnszoneName)),length(replace(concat(steps('section_dnsConfiguration').dnszoneAdminT3ChannelLabel,'.',steps('section_dnsConfiguration').dnszoneName), '.', ''))),34)]", "message": "Subdomain must be between 2 and 34 labels. For example, \"admin-t3.contoso.com\" has 3 labels." } ] }, "visible": "[and(steps('section_dnsConfiguration').enableDNSConfiguration,basics('basicsOptional').enableAdminT3Tunneling, equals(steps('section_appGateway').loadBalancingOptions,'lbservice'))]" }, { "name": "dnszoneGatewayLabel", "type": "Microsoft.Common.TextBox", "label": "Label for WebLogic Cluster", "defaultValue": "www", "toolTip": "Specify a label to generate subdomain of WebLogic Cluster", "constraints": { "required": true, "validations": [ { "regex": "^([0-9a-zA-Z_-]{1,63}\\.){0,33}[0-9a-zA-Z_-]{1,63}$", "message": "Each label must contain between 1 and 63 characters. Each label must only contain letters, numbers, underscores, and dashes." }, { "isValid": "[less(sub(length(concat(if(empty(steps('section_dnsConfiguration').dnszoneGatewayLabel), '', steps('section_dnsConfiguration').dnszoneGatewayLabel),'.',steps('section_dnsConfiguration').dnszoneName)),length(replace(concat(if(empty(steps('section_dnsConfiguration').dnszoneGatewayLabel), '', steps('section_dnsConfiguration').dnszoneGatewayLabel),'.',steps('section_dnsConfiguration').dnszoneName), '.', ''))),34)]", "message": "Subdomain must be between 2 and 34 labels. For example, \"applications.contoso.com\" has 3 labels." } ] }, "visible": "[and(steps('section_dnsConfiguration').enableDNSConfiguration, not(equals(steps('section_appGateway').loadBalancingOptions,'none')))]" }, { "name": "dnszoneClusterT3ChannelLabel", "type": "Microsoft.Common.TextBox", "label": "Label for Oracle WebLogic cluster T3 channel", "defaultValue": "cluster-t3", "toolTip": "Specify a label to generate subdomain of Oracle WebLogic cluster T3 channel", "constraints": { "required": true, "validations": [ { "regex": "^([0-9a-zA-Z_-]{1,63}\\.){0,33}[0-9a-zA-Z_-]{1,63}$", "message": "Each label must contain between 1 and 63 characters. Each label must only contain letters, numbers, underscores, and dashes." }, { "isValid": "[less(sub(length(concat(steps('section_dnsConfiguration').dnszoneClusterT3ChannelLabel,'.',steps('section_dnsConfiguration').dnszoneName)),length(replace(concat(steps('section_dnsConfiguration').dnszoneClusterT3ChannelLabel,'.',steps('section_dnsConfiguration').dnszoneName), '.', ''))),34)]", "message": "Subdomain must be between 2 and 34 labels. For example, \"application-t3.contoso.com\" has 3 labels." } ] }, "visible": "[and(steps('section_dnsConfiguration').enableDNSConfiguration,basics('basicsOptional').enableClusterT3Tunneling, equals(steps('section_appGateway').loadBalancingOptions,'lbservice'))]" } ] }, { "name": "section_database", "type": "Microsoft.Common.Section", "label": "Database", "subLabel": { "preValidation": "Configure integrations to database", "postValidation": "Done" }, "bladeTitle": "Database", "elements": [ { "name": "aboutDatabase", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "Selecting 'Yes' here and providing the configuration will cause the offer to configure the WebLogic Server to connect to the desired pre-existing database. The database must be network accessible to the VNET and subnets created by the offer." } }, { "name": "enableDB", "type": "Microsoft.Common.OptionsGroup", "label": "Connect to database?", "defaultValue": "No", "toolTip": "Select 'Yes' and provide required info to configure the connection to a database.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "databaseConnectionInfo", "type": "Microsoft.Common.Section", "label": "Connection settings", "elements": [ { "name": "databaseType", "type": "Microsoft.Common.DropDown", "label": "Choose database type", "toolTip": "Choose database type", "defaultValue": "Oracle database", "constraints": { "allowedValues": [ { "label": "PostgreSQL (Supports passwordless connection)", "value": "postgresql" }, { "label": "Oracle database", "value": "oracle" }, { "label": "Microsoft SQL Server (Supports passwordless connection)", "value": "sqlserver" }, { "label": "MySQL (Supports passwordless connection)", "value": "mysql" }, { "label": "Other", "value": "otherdb" } ], "required": true }, "visible": true }, { "name": "mysqlJDBCDriverInfo", "type": "Microsoft.Common.InfoBox", "visible": "[and(bool(steps('section_database').enableDB),equals(steps('section_database').databaseConnectionInfo.databaseType, 'mysql'))]", "options": { "icon": "Info", "text": "To support passwordless connection and various functionalities, the offer will upgrade the
    Oracle WebLogic Server MySQL driver with recent MySQL Connector Java driver." } }, { "name": "jdbcDataSourceName", "type": "Microsoft.Common.TextBox", "label": "JNDI Name", "toolTip": "The JNDI name for the database JDBC connection", "defaultValue": "", "constraints": { "required": true, "regex": "^[a-zA-Z0-9./_-]{1,30}$", "validationMessage": "The value must be 1-30 characters long and must only contain letters, numbers, hyphens (-), underscores (_), periods (.) and slashes (/)." }, "visible": true }, { "name": "dsConnectionURL", "type": "Microsoft.Common.TextBox", "label": "DataSource Connection String", "toolTip": "The JDBC connection string for the database", "defaultValue": "", "constraints": { "required": true, "validations": [ { "regex": "^jdbc:.*$", "message": "A valid JDBC URL must start with 'jdbc:'." }, { "isValid": "[startsWith(steps('section_database').databaseConnectionInfo.dsConnectionURL, concat('jdbc:', steps('section_database').databaseConnectionInfo.databaseType))]", "message": "A valid JDBC URL for the chosen database type must be provided." }, { "isValid": "[if(and(bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection), equals(steps('section_database').databaseConnectionInfo.databaseType, 'mysql')), and(not(contains(steps('section_database').databaseConnectionInfo.dsConnectionURL, 'defaultAuthenticationPlugin')),not(contains(steps('section_database').databaseConnectionInfo.dsConnectionURL, 'authenticationPlugins')), not(contains(steps('section_database').databaseConnectionInfo.dsConnectionURL, 'azure.clientId'))), 'true')]", "message": "The offer will append defaultAuthenticationPlugin, authenticationPlugins with Azure provided plugins, and append azure.clientId with your managed identity client ID automatically, please do not specify them in your connection string." }, { "isValid": "[if(and(bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection), equals(steps('section_database').databaseConnectionInfo.databaseType, 'postgresql')), and(not(contains(steps('section_database').databaseConnectionInfo.dsConnectionURL, 'authenticationPluginClassName')),not(contains(steps('section_database').databaseConnectionInfo.dsConnectionURL, 'azure.clientId'))), 'true')]", "message": "The offer will append authenticationPluginClassName with Azure provided plugins, and append azure.clientId with your managed identity client ID automatically, please do not specify them in your connection string." }, { "isValid": "[if(and(bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection0),equals(steps('section_database').databaseConnectionInfo.databaseType, 'sqlserver')), greater(length(steps('section_database').databaseConnectionInfo.dbIdentity.userAssignedIdentities),0), bool('true'))]", "message": "You must select at least one managed identity that has access to your database." } ] }, "visible": "[and(bool(steps('section_database').enableDB), not(equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb')))]" }, { "name": "dsConnectionURL2", "type": "Microsoft.Common.TextBox", "label": "DataSource Connection String", "toolTip": "The JDBC connection string for the database", "defaultValue": "", "constraints": { "required": true, "regex": "^jdbc:.*$", "validationMessage": "A valid JDBC URL for the chosen database type must be provided" }, "visible": "[and(bool(steps('section_database').enableDB), equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb'))]" }, { "name": "dbGlobalTranPro", "type": "Microsoft.Common.DropDown", "label": "Global transactions protocol", "defaultValue": "OnePhaseCommit", "multiLine": true, "toolTip": "Determines the transaction protocol (global transaction processing behavior) for the data source.", "constraints": { "allowedValues": [ { "label": "TwoPhaseCommit", "description": "Standard XA transaction processing. Requires an XA driver.", "value": "TwoPhaseCommit" }, { "label": "LoggingLastResource", "description": "A performance enhancement for one non-XA resource.", "value": "LoggingLastResource" }, { "label": "EmulateTwoPhaseCommit", "description": "Enables one non-XA resource to participate in a global transaction, but has some risk to data.", "value": "EmulateTwoPhaseCommit" }, { "label": "OnePhaseCommit", "description": "One-phase XA transaction processing using a non-XA driver. This is the default setting.", "value": "OnePhaseCommit" }, { "label": "None", "description": "Support for local transactions only.", "value": "None" } ], "required": true }, "visible": true }, { "name": "enablePswlessConnection0", "type": "Microsoft.Common.CheckBox", "label": "Use passwordless datasource connection", "toolTip": "Use passwordless datasource connection.", "visible": "[and(bool(steps('section_database').enableDB),equals(steps('section_database').databaseConnectionInfo.databaseType, 'sqlserver'))]" }, { "name": "dbUser", "type": "Microsoft.Common.TextBox", "label": "Database username", "toolTip": "Use only letters and numbers", "defaultValue": "", "constraints": { "required": true, "validations": [ { "regex": "^(?=.{1,128}$)[a-zA-Z](?!.*--)(?!.*@@)(?!.*-@)(?!.*@-)[a-zA-Z0-9-@]*[a-zA-Z0-9]$", "message": "The value must be 1-128 characters long and must only contain letters, numbers, hyphen(-) and the at sign, no hyphen allowed at the beginning and the end of database username." }, { "isValid": "[if(bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection), greater(length(steps('section_database').databaseConnectionInfo.dbIdentity.userAssignedIdentities),0), bool('true'))]", "message": "You must select at least one managed identity that has access to your database." } ] }, "visible": "[and(bool(steps('section_database').enableDB), not(and(steps('section_database').databaseConnectionInfo.enablePswlessConnection0, equals(steps('section_database').databaseConnectionInfo.databaseType, 'sqlserver'))))]" }, { "name": "enablePswlessConnection", "type": "Microsoft.Common.CheckBox", "label": "Use passwordless datasource connection", "toolTip": "Use passwordless datasource connection.", "visible": "[and(bool(steps('section_database').enableDB),or(equals(steps('section_database').databaseConnectionInfo.databaseType, 'mysql'),equals(steps('section_database').databaseConnectionInfo.databaseType, 'postgresql')))]" }, { "name": "dbPassword", "type": "Microsoft.Common.PasswordBox", "label": { "password": "Database Password", "confirmPassword": "Confirm password" }, "toolTip": "Database Password", "constraints": { "required": true, "regex": "^((?=.*[0-9])(?=.*[a-zA-Z!@#$%^&*])).{6,128}$", "validationMessage": "The password must be between 6 and 128 characters long and have at least one number." }, "options": { "hideConfirmation": false }, "visible": "[and(bool(steps('section_database').enableDB), not(or(steps('section_database').databaseConnectionInfo.enablePswlessConnection, steps('section_database').databaseConnectionInfo.enablePswlessConnection0)))]" }, { "name": "dbIdentity", "type": "Microsoft.ManagedIdentity.IdentitySelector", "label": "Connect database with Managed Identity", "toolTip": { "userAssignedIdentity": "Select a user assigned identity that has access to your database. For how to create a database user for your managed identity, see https://aka.ms/javaee-db-identity." }, "defaultValue": { "systemAssignedIdentity": "Off" }, "options": { "hideSystemAssignedIdentity": true, "hideUserAssignedIdentity": false }, "visible": "[and(bool(steps('section_database').enableDB), or(steps('section_database').databaseConnectionInfo.enablePswlessConnection, steps('section_database').databaseConnectionInfo.enablePswlessConnection0))]" }, { "name": "dbDriverLibraries", "type": "Microsoft.Common.FileUpload", "label": "DataSource driver (.jar)", "toolTip": "The datasource driver jar package for the specified database.", "constraints": { "required": true, "accept": ".jar" }, "options": { "multiple": true, "uploadMode": "url", "openMode": "binary" }, "visible": "[and(bool(steps('section_database').enableDB), equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb'))]" }, { "name": "dbDriverInfoBox", "type": "Microsoft.Common.InfoBox", "options": { "icon": "Info", "text": "WebLogic Server provides support for application data access to any database using a JDBC-compliant driver.
    Select here for more details.", "uri": "https://aka.ms/wls-aks-dbdriver" }, "visible": "[and(bool(steps('section_database').enableDB), equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb'))]" }, { "name": "dbDriverName", "type": "Microsoft.Common.TextBox", "label": "DataSource driver name", "toolTip": "The driver name for the database", "placeholder": "com.informix.jdbc.IfxDriver", "constraints": { "required": true, "regex": "^[a-zA-Z_][a-zA-Z0-9_]+(\\.[a-zA-Z_][a-zA-Z0-9_]+){1,50}$", "validationMessage": "A valid driver name for the chosen database type must be provided" }, "visible": "[and(bool(steps('section_database').enableDB), equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb'))]" }, { "name": "dbTestTableName", "type": "Microsoft.Common.TextBox", "label": "Test table name", "toolTip": "The name of the database table to use when testing physical database connections. ", "constraints": { "required": true, "regex": "^.*$", "validationMessage": "A test table name for the chosen database type must be provided" }, "visible": "[and(bool(steps('section_database').enableDB), equals(steps('section_database').databaseConnectionInfo.databaseType, 'otherdb'))]" } ], "visible": "[bool(steps('section_database').enableDB)]" } ] }, { "name": "section_autoScaling", "type": "Microsoft.Common.Section", "label": "Autoscaling", "subLabel": { "preValidation": "Configure Horizontal Autoscaling", "postValidation": "Done" }, "bladeTitle": "Horizontal Autoscaling", "elements": [ { "name": "aboutAutoscaling", "type": "Microsoft.Common.TextBlock", "visible": true, "options": { "text": "Selecting 'Yes' here and providing the configuration will cause the offer configure metric to scale the WebLogic cluster." } }, { "name": "enableAutoscaling", "type": "Microsoft.Common.OptionsGroup", "label": "Provision resources for horizontal autoscaling?", "defaultValue": "No", "toolTip": "Select 'Yes' and provide required info to configure horizontal autoscaling.", "constraints": { "allowedValues": [ { "label": "Yes", "value": "true" }, { "label": "No", "value": "false" } ], "required": true } }, { "name": "autoScalingInfo", "type": "Microsoft.Common.Section", "label": "Horizontal autoscaling settings", "elements": [ { "name": "metricSource", "type": "Microsoft.Common.OptionsGroup", "label": "Select autoscaling option. ", "defaultValue": "Kubernetes Metrics Server (simple autoscaling)", "toolTip": "If you select Kubernetes Metrics Server, this offer configures WebLogic Server to scale based on CPU or memory utilization. If you select WebLogic Monitoring Exporter, this offer configures WebLogic Monitoring Exporter to scrape WebLogic Server metrics and feed them to Azure Monitor Managed Service for Prometheus; integrates KEDA with your AKS cluster to monitor Azure Monitor workspace and feed data to AKS. You can create KEDA scaler based on Java metrics from Azure Monitor workspace", "constraints": { "allowedValues": [ { "label": "Kubernetes Metrics Server (simple autoscaling)", "value": "kms" }, { "label": "WebLogic Monitoring Exporter (advanced autoscaling)", "value": "wme" } ], "required": true }, "visible": true }, { "name": "infoKms", "type": "Microsoft.Common.InfoBox", "visible": "[equals(steps('section_autoScaling').autoScalingInfo.metricSource, 'kms')]", "options": { "icon": "None", "text": "This option configures and runs Kubernetes Horizontal Pod Autoscaler (HPA) to scale a WebLogic cluster, based on the CPU or memory utilization. The HPA autoscales WebLogic Server instances from a minimum of 1 cluster members up to maximum of cluster members, and the scale up or down action occur when the average CPU/memory is consistently over the utilization.
  • Default maximum of cluster member is 5. You can set it from Basics -> Optional Basic Configuration -> Maximum dynamic cluster size.
  • Default CPU request is 200m.
  • Default memory request is 1.5Gi.
  • ", "uri": "https://aka.ms/wlsoperator-autoscaling-hpa" } }, { "name": "infoWme", "type": "Microsoft.Common.InfoBox", "visible": "[equals(steps('section_autoScaling').autoScalingInfo.metricSource, 'wme')]", "options": { "icon": "None", "text": "This option installs all the software necessary to allow you to create Java metric aware KEDA scaling rules.
    The offer provisions the following deployments. Right-click and select Open Link in New Tab to follow links:
    After the provisioning is completed, you can create KEDA scaling rules. A sample rule is provided in the deployment outputs. The following steps show how to see the sample rule.", "uri": "https://aka.ms/wls-aks-keda-scaler" } }, { "name": "kmsMetrics", "type": "Microsoft.Common.OptionsGroup", "label": "Select metric. ", "defaultValue": "Average CPU Utilization", "toolTip": "Select metric.", "constraints": { "allowedValues": [ { "label": "Average CPU Utilization", "value": "cpu" }, { "label": "Average Memory Utilization", "value": "memory" } ], "required": true }, "visible": "[equals(steps('section_autoScaling').autoScalingInfo.metricSource, 'kms')]" }, { "name": "averageCpuUtilization", "type": "Microsoft.Common.Slider", "min": 10, "max": 100, "label": "Average CPU Utilization", "subLabel": "Percent", "defaultValue": 60, "showStepMarkers": false, "toolTip": "Pick Average CPU Utilization in Percent", "constraints": { "required": false }, "visible": "[equals(steps('section_autoScaling').autoScalingInfo.kmsMetrics, 'cpu')]" }, { "name": "averageMemoryUtilization", "type": "Microsoft.Common.Slider", "min": 10, "max": 100, "label": "Average Memory Utilization", "subLabel": "Percent", "defaultValue": 60, "showStepMarkers": false, "toolTip": "Pick Average Memory Utilization in Percent", "constraints": { "required": false }, "visible": "[equals(steps('section_autoScaling').autoScalingInfo.kmsMetrics, 'memory')]" } ], "visible": "[bool(steps('section_autoScaling').enableAutoscaling)]" } ] }, { "name": "tags", "label": "Tags", "elements": [ { "name": "tagsByResource", "type": "Microsoft.Common.TagsByResource", "resources": [ "${identifier.managedClusters}", "${identifier.applicationGateways}", "${identifier.registries}", "${identifier.virtualMachines}", "${identifier.virtualMachinesExtensions}", "${identifier.virtualNetworks}", "${identifier.networkInterfaces}", "${identifier.networkSecurityGroups}", "${identifier.publicIPAddresses}", "${identifier.storageAccounts}", "${identifier.vaults}", "${identifier.userAssignedIdentities}", "${identifier.dnszones}", "${identifier.workspaces}", "${identifier.accounts}", "${identifier.deploymentScripts}" ], "toolTip": "Tags help you organize your resources and categorize them for billing or management purposes. You can apply tags to resources deployed by the offer." } ] } ], "outputs": { "acrName": "[last(split(steps('section_aks').imageInfo.oracleAcrSelector.id, '/'))]", "acrResourceGroupName": "[last(take(split(steps('section_aks').imageInfo.oracleAcrSelector.id, '/'),5))]", "aksAgentPoolNodeCount": "[steps('section_aks').clusterInfo.aksNodeCount]", "aksAgentPoolNodeMaxCount": "[steps('section_aks').clusterInfo.aksNodeMaxCount]", "aksClusterName": "[last(split(steps('section_aks').clusterInfo.aksClusterSelector.id, '/'))]", "aksClusterRGName": "[last(take(split(steps('section_aks').clusterInfo.aksClusterSelector.id, '/'), 5))]", "appGatewayCertificateOption": "[steps('section_appGateway').appgwIngress.certificateOption]", "appGatewaySSLBackendRootCertData": "[steps('section_appGateway').appgwIngress.uploadedSSLCertData]", "appGatewaySSLCertData": "[steps('section_appGateway').appgwIngress.appGatewaySSLCertData]", "appGatewaySSLCertPassword": "[steps('section_appGateway').appgwIngress.appGatewaySSLCertPassword]", "appgwForAdminServer": "[steps('section_appGateway').appgwIngress.appgwForAdminServer]", "appgwForRemoteConsole": "[steps('section_appGateway').appgwIngress.appgwForAdminRemote]", "appgwUsePrivateIP": "[steps('section_appGateway').appgwIngress.appgwUsePrivateIP]", "appPackageUrls": "[steps('section_aks').jeeAppInfo.appPackageUrl]", "appReplicas": "[int(steps('section_aks').jeeAppInfo.appReplicas)]", "averageCpuUtilization": "[steps('section_autoScaling').autoScalingInfo.averageCpuUtilization]", "averageMemoryUtilization": "[steps('section_autoScaling').autoScalingInfo.averageMemoryUtilization]", "createACR": "[bool(steps('section_aks').imageInfo.oracleCreateACR)]", "createAKSCluster": "[bool(steps('section_aks').clusterInfo.createAKSCluster)]", "createDNSZone": "[not(bool(steps('section_dnsConfiguration').bringDNSZone))]", "dbDriverLibrariesUrls": "[steps('section_database').databaseConnectionInfo.dbDriverLibraries]", "dbDriverName": "[steps('section_database').databaseConnectionInfo.dbDriverName]", "dbGlobalTranPro": "[steps('section_database').databaseConnectionInfo.dbGlobalTranPro]", "dbIdentity": "[steps('section_database').databaseConnectionInfo.dbIdentity]", "dbPassword": "[steps('section_database').databaseConnectionInfo.dbPassword]", "dbTestTableName": "[steps('section_database').databaseConnectionInfo.dbTestTableName]", "dbUser": "[steps('section_database').databaseConnectionInfo.dbUser]", "databaseType": "[steps('section_database').databaseConnectionInfo.databaseType]", "dnszoneAdminConsoleLabel": "[steps('section_dnsConfiguration').dnszoneAdminConsoleLabel]", "dnszoneAdminT3ChannelLabel": "[steps('section_dnsConfiguration').dnszoneAdminT3ChannelLabel]", "dnszoneClusterLabel": "[steps('section_dnsConfiguration').dnszoneGatewayLabel]", "dnszoneClusterT3ChannelLabel": "[steps('section_dnsConfiguration').dnszoneClusterT3ChannelLabel]", "dnszoneName": "[steps('section_dnsConfiguration').dnszoneName]", "dnszoneRGName": "[steps('section_dnsConfiguration').dnsZoneResourceGroup]", "dsConnectionURL": "[coalesce(steps('section_database').databaseConnectionInfo.dsConnectionURL, steps('section_database').databaseConnectionInfo.dsConnectionURL2, 'null')]", "enableAppGWIngress": "[equals(steps('section_appGateway').loadBalancingOptions, 'agic')]", "enableAutoscaling": "[bool(steps('section_autoScaling').enableAutoscaling)]", "enableAzureMonitoring": "[bool(steps('section_aks').aksAdvancedInfo.enableAzureMonitoring)]", "enableAzureFileShare": "[bool(steps('section_aks').aksAdvancedInfo.enableAzureFileShare)]", "enableCookieBasedAffinity": "[not(bool(steps('section_appGateway').appgwIngress.enableCookieBasedAffinity))]", "enableCustomSSL": "[bool(steps('section_sslConfiguration').enableCustomSSL)]", "enableDB": "[bool(steps('section_database').enableDB)]", "enableDNSConfiguration": "[bool(steps('section_dnsConfiguration').enableDNSConfiguration)]", "enableAdminT3Tunneling": "[basics('basicsOptional').enableAdminT3Tunneling]", "enableClusterT3Tunneling": "[basics('basicsOptional').enableClusterT3Tunneling]", "enablePswlessConnection": "[or(bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection), bool(steps('section_database').databaseConnectionInfo.enablePswlessConnection0))]", "jdbcDataSourceName": "[steps('section_database').databaseConnectionInfo.jdbcDataSourceName]", "isSSOSupportEntitled": "[bool(steps('section_aks').imageInfo.isSSOSupportEntitled)]", "lbSvcValues": "[if(not(empty(first(if(empty(steps('section_appGateway').lbSVCInfo.lbSVC),parse('[{\"colName\":\"\"}]'), steps('section_appGateway').lbSVCInfo.lbSVC)).colName)),steps('section_appGateway').lbSVCInfo.lbSVC, parse('[]'))]", "location": "[location()]", "hpaScaleType": "[steps('section_autoScaling').autoScalingInfo.kmsMetrics]", "managedServerPrefix": "[basics('basicsOptional').managedServerPrefix]", "newOrExistingVnetForApplicationGateway": "[steps('section_appGateway').appgwIngress.vnetForApplicationGateway.newOrExisting]", "ocrSSOPSW": "[steps('section_aks').imageInfo.ocrSSOPassword]", "ocrSSOUser": "[steps('section_aks').imageInfo.ocrSSOUserName]", "sslUploadedCustomIdentityKeyStoreData": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomIdentityKeyStoreData]", "sslUploadedCustomIdentityKeyStorePassphrase": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomIdentityKeyStorePassphrase]", "sslUploadedCustomIdentityKeyStoreType": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomIdentityKeyStoreType]", "sslUploadedCustomTrustKeyStoreData": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomTrustKeyStoreData]", "sslUploadedCustomTrustKeyStorePassPhrase": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomTrustKeyStorePassPhrase]", "sslUploadedCustomTrustKeyStoreType": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedCustomTrustKeyStoreType]", "sslUploadedPrivateKeyAlias": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedPrivateKeyAlias]", "sslUploadedPrivateKeyPassPhrase": "[steps('section_sslConfiguration').uploadedCustomSSLSettings.uploadedPrivateKeyPassPhrase]", "useHpa": "[if(equals(steps('section_autoScaling').autoScalingInfo.metricSource, 'kms'), true, false)]", "useInternalLB": "[bool(steps('section_appGateway').lbSVCInfo.enableInternalLB)]", "useOracleImage": "[if(bool(steps('section_aks').aksAdvancedInfo.useAcrImage), false, true)]", "userProvidedAcr": "[last(split(steps('section_aks').aksAdvancedInfo.userProvidedAcrSelector.id, '/'))]", "userProvidedAcrRgName": "[last(take(split(steps('section_aks').aksAdvancedInfo.userProvidedAcrSelector.id, '/'),5))]", "userProvidedImagePath": "[steps('section_aks').aksAdvancedInfo.userProvidedImagePath]", "validateApplications": true, "vnetForApplicationGateway": "[steps('section_appGateway').appgwIngress.vnetForApplicationGateway]", "vnetRGNameForApplicationGateway": "[steps('section_appGateway').appgwIngress.vnetForApplicationGateway.resourceGroup]", "vmSize": "[steps('section_aks').clusterInfo.nodeVMSizeSelector]", "wdtRuntimePassword": "[basics('basicsRequired').wdtRuntimePassword]", "wlsClusterSize": "[basics('basicsOptional').wlsClusterSize]", "wlsDomainName": "[basics('basicsOptional').wlsDomainName]", "wlsDomainUID": "[basics('basicsOptional').wlsDomainUID]", "wlsImageTag": "[if(equals(steps('section_aks').imageInfo.oracleImageSelector, 'others'), steps('section_aks').imageInfo.fromOracleImage, steps('section_aks').imageInfo.oracleImageSelector)]", "wlsJavaOption": "[basics('basicsOptional').wlsJavaOption]", "wlsPassword": "[basics('basicsRequired').wlsPassword]", "wlsUserName": "[basics('basicsRequired').wlsUserName]", "tagsByResource": "[steps('tags').tagsByResource]" } } }