Oracle Siebel Support for MintPress
Supported Instllation Methods
This controller supports installing from both traditional (17.x through 20.x) and new style (21.x) insatllation mechanisms. Note that, for the traditional siebel installation method, it is expected that the user has already run the snic.sh
tool in order to generate a useful media set. This step should only have to be performed once, and the result can be kept on your stage disk nas share (/oracle/stage for the examples in this file).
Note that, to install a 18.x, 19.x, or 20.x release, you must generally install 17.x first, and then do an upgrade installation. This is not required for 21.x. We supply the properties ‘upgrade_version’ and ‘upgrade_stage’ to automate this, as well as providing an upgrade
method on installation.
Additionally, migrating from a pre-17 version of siebel will require a migration rather than an upgrade installation. Automation of this migration is currently not supported.
Requirements
-
The biggest pre-requisite, is that you must arrange for a 32bit oracle client to be on the system - you can install this using mintpress via the usual mechanisms, however it MUST be the 32bit version - certain functionality will not work unless it is. In particular, you will fail to set up the siebel enterprise if this is missing. ORACLE_HOME must be set to this location prior to installation. The controller will arrange for that to be the case as long as you specify client_oracle_home in your installations.
-
The environment variable "RESOLV_MULTI" must be set to "off" whenever interacting with siebel. This controller arranges for that to be added to your ~/.bashrc, however if your shell is not bash, you may need to seperatly arrange this.
Structure
Fundamentally, mintpress replicates the structure of the siebel application interface as a tree - There are two primary namespaces:
-
MintPress::Siebel - basic infrastructure items such as installations, as well as the pointer to the current application interface
-
Installation - a siebel installation
-
SecurityProfile - a siebel security profile
-
DBDatastore - a database datastore for a security profile
-
LdapDatastore - an LDAP datastore for a security profile
-
Gateway - a siebel gateway server
-
Database - the details of a siebel database, potentially to load with data
-
ApplicationInterface - a pointed to the currently deployed siebel application interface
-
ServerInstance - an instance pointer to an installation of the sieble server component. This exists primarily to allow control i.e. start/stop, as well as to allow for scaleout installations via the JSON model (where installations are singular items, so you require an instance to do that type of scaleout). If using the SDK, it’s not actually required in order to have a valid configuration.
-
-
MintPress::SiebelApi - deployable siebel components, such as enterprises and servers. These are derived from the siebel API product specs. All of the
profile
versions of these have a matching ‘deployment version. -
GatewayclusterProfile - a siebel gateway cluster (the peer is GatewayclusterDeployment)
-
ApplicationInterfaceProfile - a siebel application interface (the peer is ApplicationInterfaceDeployment)
-
EnterpriseProfile - a siebel eneterprise (the peer is EnterpriseDeployment)
-
ServerProfile - a siebel server (the peer is ServerDeployment)
-
ConstraintEngineProfile - a constraint enging instance (The peer is ConstraintEngingDeployment)
-
CacheserverProfile / CacheclientProfile - a siebel cache server/client set (The peer is CacheserverDeployment)
-
MigrationProfile - a siebel migration (The peer is MigrationDeployment).
(Within the json model, these are all represented as instances - see the “Building from JSON” section for more detail)
Within the API, arrays of objects are represented as child object - within the model, generally you can just places hashes in there and it will create the objects themselves automatically.
All of the Profile Api set of functions implement: * create - create the profile * update - update the profile * delete - remove the profile * deploy - dpeloy all children of the profile * exists? - true/false if this profile exists
While Deployment Api set implement: * stage - stage the deployment * deploy - deploy the deployment * deployed? - is the deployment succefully deployed (deploy won’t return until this is true) * deploy_failed? - is this a failed deployment? (deploy will raise exception in this case!)
The properties taken for each of these are documented in the mintpress refernece documentation at docs.limepoint.com/reference/ruby
A note about keystores
Siebel has quite specific requirements around the naming of keystores - this is documented in the siebel installation guide, however for a development installation the following commands will generate a set of self signed keys:
keytool -genkey -alias siebel -keystore siebelkeystore.jks -keyalg RSA -keysize 2048 -validity 1825 -dname "cn=siebeltest1.mintpress.io"
keytool -certreq -alias siebel -keystore siebelkeystore.jks -file siebel.csr
openssl req -newkey rsa:2048 -keyout ca_key.pem -out ca_req.pem -subj "/CN=a-demo-ca"
v3.txt
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer
basicConstraints = critical, CA:true
keyUsage = keyCertSign, cRLSign
openssl x509 -signkey ca_key.pem -req -days 3650 -in ca_req.pem -out ca_root.cer -extfile v3.txt
extfile.txt:
basicConstraints=CA:FALSE
subjectAltName=@alt_names
[alt_names]
DNS.1 = siebeltest1.mintpress.io
DNS.2 = siebeltest1
openssl x509 -CA ca_root.cer -CAkey ca_key.pem -CAcreateserial -req -in siebel.csr -out siebel.cer -days 365 -extfile extfile.txt
keytool -import -alias a_demo_ca -file ca_root.cer -keystore siebelkeystore.jks
keytool -import -alias siebel -keystore siebelkeystore.jks -file siebel.cer
keytool -import -alias siebeltest1 -keystore siebelkeystore.jks -file siebel.cer
keytool -import -alias siebeltest1..mintpress.io -keystore siebelkeystore.jks -file siebel.cer
keytool -import -alias a-demo-ca -file ca_root.cer -keystore truststore.jks
Building from SDK
Note that if you’re trying to build from mintpress runtime/console, you should mostly skip to the next section.
require 'oracle-siebel'
require 'mintpress-infrastructure'
# Install an instance that will be used for the ApplicationInstance
# Note the use of upgrade_version/upgrade_stage here ot install a v20.10 instance. For v21 and higher, this isn't needed
host1 = MintPress::Infrastructure::Host.new(name: 'jjwork4.mintpress.io', connect_user: 'root', final_user: 'oracle', keys: ['~/.ssh/id_dsa'])
java_opts={
version: '1.8.0_172',
java_home: "/oracle/app/xxx/java",
owner: 'oracle',
group: 'oinstall',
software_stage: '/oracle/stage/jdk/jdk-8u172-linux-x64.tar.gz'
}
java_installation1 = MintPress::OracleJava::Installation.new(java_opts.merge({host: host1}))
ai_installation = MintPress::Siebel::Installation.new(install_type: 'New Installation',
oracle_home: '/oracle/app/siebelai',
inventory_location: '/oracle/app/orainv',
version: '17.0',
upgrade_version: '20.10',
upgrade_stage: '/oracle/stage/siebel/20.10/20.10.0.0.update/Linux/Server/Siebel_Enterprise_Server/'
host: host1,
java: java_installation1,
software_stage: '/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server',
ec_keystore_path: '/home/oracle/pki/keystore.jks',
ec_keystore_password: 'welcome1',
ec_truststore_path: '/home/oracle/pki/truststore.jks',
ec_truststore_password: 'welcome1',
ai_http_connection_port: 8400,
ai_https_redirect_port: 8443,
ai_shutdown_port: 8402,
client_oracle_home: '/oracle/app/xxx/client32/',
application_interface_container_configuration: true,
enterprise_container_configuration: false,
ai_keystore_path: '/home/oracle/pki/keystore.jks',
ai_keystore_password: 'welcome1',
ai_truststore_path: '/home/oracle/pki/truststore.jks',
ai_truststore_password: 'welcome1')
ai_installation.install
# Install siebel SES on 4 servers. We're going to take the default
# object set of gateway/server for now.
ec_installation = []
4.times do |ec|
ihost = MintPress::Infrastructure::Host.new(name: "jjwork#{ec+1}.mintpress.io", connect_user: 'root', final_user: 'oracle', keys: ['~/.ssh/id_dsa'])
ijava = MintPress::OracleJava::Installation.new(java_opts.merge({host: ihost}))
ec_installation << MintPress::Siebel::Installation.new(install_type: 'New Installation',
oracle_home: '/oracle/app/siebelses',
ec_http_connection_port: 8100,
ec_https_redirect_port: 8101,
ec_shutdown_port: 8102,
client_oracle_home: '/oracle/app/xxx/client32/',
inventory_location: '/oracle/app/orainv',
version: '17.0',
host: ihost,
java: ijava,
software_stage: '/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server',
ec_keystore_path: '/home/oracle/pki/keystore.jks',
ec_keystore_password: 'welcome1',
ec_truststore_path: '/home/oracle/pki/truststore.jks',
ec_truststore_password: 'welcome1',
application_interface_container_configuration: false,
enterprise_container_configuration: true,
ai_keystore_path: '/home/oracle/pki/keystore.jks',
ai_keystore_password: 'welcome1',
ai_truststore_path: '/home/oracle/pki/truststore.jks',
ai_truststore_password: 'welcome1')
# Here's a sample of doing the ugprade directly
ec_installation[-1].install
ec_installation[-1][:version] = '20'
ec_installation[-1][:software_stage] = '/oracle/stage/siebel/20.10/20.10.0.0.update/Linux/Server/Siebel_Enterprise_Server/'
puts ec_installation[-1].installed_version
ec_installation[-1].upgrade
end
# Point to our application instance - the primary reason for this, is to encapsulate the password
ai_instance = MintPress::Siebel::ApplicationInterface.new(installation: ai_installation, password: 'Siebel123')
# Create a siebel gateway
gateway = MintPress::Siebel::Gateway.new(installation: ec_installation[-1], application_instance: ai_instance, tls_port: 4444, client_oracle_home: '/oracle/app/xxx/client32/', registry_username: 'SADMIN', registry_password: 'Siebel123', registry_port: 23202)
gateway.configure
# Define a security profile and create it
# Note that on a new install, this will also bootstrap the gateway by calling CGBootstrap
siebel_ds = MintPress::Siebel::DBDatasource.new(advanced: false,
db_host: 'jjwork3.mintpress.io',
db_port: 1521,
application_instance: ai_instance,
db_service_name: 'FOODB',
name: 'jjdb')
security_profile = MintPress::Siebel::SecurityProfile.new(name: "Gateway",
mode: 'DB',
test_user_name: 'SADMIN',
test_user_password: 'Siebel123',
application_instance: ai_instance,
data_sources: siebel_ds
)
security_profile.create
# Define an application instance and deploy it
a = MintPress::SiebelApi::ApplicationInterfaceProfile.new(name: 'somedebug9',
application_interface: ai_instance,
language: 'enu',
max_query_string_length: '-1',
allow_stats: 'true',
session_monitor: 'false',
ui_log_level: 'ALL',
rest_in_bound_log_level: 'ALL',
rest_in_bound_RestAuthenticationProperties_anon_username: 'GUESTCST',
rest_in_bound_RestAuthenticationProperties_anon_password: 'Siebel123',
rest_in_bound_RestAuthenticationProperties_authentication_type: 'Basic',
rest_in_bound_RestAuthenticationProperties_sess_keep_alive: '10',
rest_in_bound_RestAuthenticationProperties_validate_certificate: 'false',
rest_in_bound_object_manager: 'ecommunicationsobjmgr_enu',
rest_in_bound_baseuri: 'http://<hostname>/siebel/v1.0/',
rest_in_bound_max_connections: 20,
rest_in_bound_min_connections: 10,
eai_log_level: 'ALL',
dav_log_level: 'ALL',
defaults_fqdn: 'jjwork4.mintpress.io',
defaults_AuthenticationProperties_AnonUsername: 'GUESTCST',
defaults_AuthenticationProperties_AnonPassword: 'Siebel123',
defaults_authentication_properties_session_timeout: '900',
defaults_authentication_properties_guest_session_timeout: '300',
defaults_authentication_properties_SessionTimeoutWLMethod: 'HeartBeat',
defaults_authentication_session_timeout_wl_commnad: 'UpdatePrefMsg',
defaults_authentication_session_token_max_age: '2880',
defaults_authentication_session_token_timeout: '900',
defaults_authentication_single_sign_on: 'false',
defaults_do_compression: 'true',
defaults_enable_fqdn: 'true',
defaults_fqdn: 'jjwork4.mintpress.io',
)
a.applications << MintPress::SiebelApi::ApplicationInterfaceProfileApplications.new({ name: 'ecomm',
object_manager: 'ecommunicationsobjmgr_enu',
language: 'enu',
start_command: '',
authentication_properties_session_timeout: '900',
authentication_properties_guest_session_timeout: '300',
authentication_properties_anon_username: 'GUESTCST',
authentication_properties_anon_password: 'Siebel123',
authentication_properties_session_timeout_wl_method: 'HeartBeat',
authentication_properties_session_timeout_wl_command: 'UpdatePrefMsg',
authentication_properties_session_token_max_age: '2800',
authentication_properties_session_token_timeout: '900',
authentication_properties_signle_sign_on: 'false'
})
d = MintPress::SiebelApi::ApplicationInterfaceDeployment.new(application_instance: ai_instance,
application_interface_profile: a,
physical_host_ip: 'jjwork4.mintpress.io:8101',
name: 'ecomm')
a.create
d.deploy
# Create an enterprise and deploy it
e = MintPress::SiebelApi::EnterpriseProfile.new(application_interface: ai_instance, name: 'jjprofile4',
username: 'sadmin',
password: 'Siebel123',
database_platform: 'Oracle',
db_connect_string: 'jjwork3.mintpress.io:1521/FOODB',
table_owner: 'SIEBEL',
db_username: 'SIEBEL',
db_password: 'Siebel123',
primary_langauge: 'enu',
primary_siebel_fs: '/oracle/app/siebelfs',
sec_adpt_profile_name: 'Gateway',
peer_auth: "false",
peer_cert_validation: "false",
encryption_type: 'SISNAPI')
d = MintPress::SiebelApi::EnterpriseDeployment.new(enterprise_profile: e,
action: 'Deploy',
name: "jjent",
description: "jj enterprise yo")
e.create
d.deploy
# Create a server set and deploy them
4.times do |esrver|
s = MintPress::SiebelApi::ServerProfile.new(application_interface: ai_instance, name: 'jjserver#{sid}',
'encryption_type': 'SISNAPI',
'username': 'siebel',
'password': 'Siebel123',
'anon_login_username': 'GUESTCST',
'anon_login_password': 'Siebel123',
'enable_comp_groups_sia': 'adm,eai',
'siebel_enterprise': 'jjent',
'local_synch_mgr_port': 40400,
'clustering_environment_setup': 'NotClustered',
'scb_port': 3320,
'nameserver_host_name': 'jjwork4',
'use_oracle_connector': 'true',
'namesrvr_port': 4444)
d = MintPress::SiebelApi::ServerDeployment.new(server_profile: s,
name: 'jjdep#{sid}',
physical_host_ip: "jjwork#{sid}.mintpress.io:8101",
description: "jjserver")
s.create
d.deploy
end
# Lets create a gateway cluster as well
gwc = MintPress::SiebelApi::GatewayclusterProfile.new(application_interface: ai_instance, name: 'jjgwcluster',
client_port: 23202)
include MintPress::SiebelApi
gwd = MintPress::SiebelApi::GatewayclusterDeployment.new(gatewaycluster_profile: gwc,
application_interface: ai_instance,
gateway_cluster_node_registry_list: [
GatewayclusterDeploymentGatewayClusterNodeRegistryList.new(physical_host_ip: "jjwork4.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeRegistryList.new(physical_host_ip: "jjwork1.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeRegistryList.new(physical_host_ip: "jjwork2.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeRegistryList.new(physical_host_ip: "jjwork3.mintpress.io:8101")],
gateway_cluster_node_eervice_list: [
GatewayclusterDeploymentGatewayClusterNodeServiceList.new(physical_host_ip: "jjwork4.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeServiceList.new(physical_host_ip: "jjwork1.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeServiceList.new(physical_host_ip: "jjwork2.mintpress.io:8101"),
GatewayclusterDeploymentGatewayClusterNodeServiceList.new(physical_host_ip: "jjwork3.mintpress.io:8101")
]
)
gwc.create
gwd.deploy
Building with scaleout
The siebel control supports scaling out via the JSON model, however it should be noted that “one and only one” components MUST be annotated with the attribute scaleout
set to false
- this particularly applies to any Profile sections (but not deployments) as well as Gateway and Database sections.
In order to support this model, we added the ServerInstance object, which allows you to say “this host contains some kind of siebel server item, yet to be defined”, as well as a singular way to exercise the control items.
Building from JSON
Siebel objects for installation are represented as instanceList items - an example json for building siebel 17 is presented below:
A couple of things to note:
-
In a production situation, you’d of course want to have multiple hosts, rather than a single host as specified here - and for siebel 17, seperate installations for gateway/server/enterprisecache items
-
This json shows a simplified model by having deployments be children of the profiles - if you want to use the scaleout functionality of mintpress to scale out your siebel deployment, you may wish to seperate these. An example of doing this will follow.
{
"internalVariables":
{
"environmentName": "dev",
"assetCode": "siebel",
"defaultHostTargetUsername": "oracle",
"defaultHostTargetPassword": "oinstall",
"stageRootDir": "/oracle/stage"
},
"projectName": "siebtest_${uniquifier}_$(Time.now.to_i)",
"uniquifier": "x2",
"site": {
"hostList": [
{
"id": "siebelhost1",
"user": "${defaultHostTargetUsername}",
"password": "${defaultHostTargetPassword}",
"address": "jjwork4.mintpress.io",
"properties": [
{
"name": "targetTempDir",
"value": "${defaultHostTargetTmpDirectory}",
"target": "target.tmp.dir"
}
]
}
],
"installationList": [
{
"name": "sunjdk",
"product": "OracleJava",
"version": "1.8.0_192",
"installPath": "/oracle/app/java8",
"softwareStage": "${stageRootDir}/jdk/jdk-8u192-linux-x64.tar.gz",
"attributes": {
"newworld": "true"
}
},
{
"name": "siebel_ai",
"product": "Siebel",
"version": "17.0",
"installPath": "/oracle/app/siebelai",
"softwareStage": "/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server",
"dependsonList": [
"sunjdk"
],
"attributes": {
"newworld": "true",
"Siebel": {
"ai_http_connection_port": 8400,
"ai_https_redirect_port": 8443,
"ai_shutdown_port": 8402,
"client_oracle_home": "/oracle/app/xxx/client32",
"application_interface_container_configuration": true,
"enterprise_container_configuration": false,
"ai_keystore_path": "/home/oracle/pki/keystore.jks",
"ai_keystore_password": "welcome1",
"ai_truststore_path": "/home/oracle/pki/truststore.jks",
"ai_truststore_password": "welcome1",
"oracle_home": "/oracle/app/siebelai",
"install_type": "New Installation"
}
}
},
{
"name": "siebel_ses",
"product": "Siebel",
"version": "17.0",
"installPath": "/oracle/app/siebelses",
"softwareStage": "/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server",
"dependsonList": [
"sunjdk"
],
"attributes": {
"newworld": "true",
"Siebel": {
"ec_http_connection_port": 8100,
"ec_https_redirect_port": 8101,
"ec_shutdown_port": 8102,
"application_interface_container_configuration": false,
"enterprise_container_configuration": true,
"client_oracle_home": "/oracle/app/xxx/client32",
"ec_keystore_path": "/home/oracle/pki/keystore.jks",
"ec_keystore_password": "welcome1",
"ec_truststore_path": "/home/oracle/pki/truststore.jks",
"ec_truststore_password": "welcome1",
"oracle_home": "/oracle/app/siebelses",
"install_type": "New Installation"
}
}
}
],
"environmentList": [
{
"name": "dev",
"mwTopologyList": [
{
"name": "siebtest",
"description": "siebtest Environment",
"hostInstallationList": [
{
"installationName": "siebel_ai",
"hostIdentifierList": ["siebelhost1"]
},
{
"installationName": "siebel_ses",
"hostIdentifierList": ["siebelhost1"]
}
],
"instanceList": [
{
"name": "application_interface",
"type": "MintPress::Siebel::ApplicationInterface",
"installationName": "siebel_ai",
"hostIdentifier": "siebelhost1",
"attributes": {
"has_control": "true",
"newworld": "true",
"scaleout": "false",
"MintPress::Siebel::ApplicationInterface": {
"password": "Siebel123"
}
}
},
{
"name": "siebel_database",
"type": "MintPress::Siebel::Database",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"scaleout": "false",
"has_control": "false",
"MintPress::Siebel::Database": {
"client_oracle_home": "/oracle/app/xxx/client32/",
"db_host": "jjwork3.mintpress.io",
"db_port": 1521,
"sysdba_username": "sys",
"sysdba_password": "Welcome1",
"db_service_name": "FOODB",
"use_development_settings": true,
"connect_string": "jjwork3.mintpress.io:1521/FOODB"
}
}
},
{
"name": "siebel_gateway",
"type": "MintPress::Siebel::Gateway",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"scaleout": "true",
"has_control": "true",
"MintPress::Siebel::Gateway": {
"application_interface": "application_interface",
"tls_port": 4444,
"client_oracle_home": "/oracle/app/xxx/client32/",
"registry_username": "SADMIN",
"registry_password": "Siebel123"
}
}
},
{
"name": "siebel_datasource",
"type": "MintPress::Siebel::DBDatasource",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"MintPress::Siebel::DBDatasource": {
"advanced": false,
"db_host": "jjwork3.mintpress.io",
"db_port": 1521,
"db_service_name": "FOODB"
}
}
},
{
"name": "Gateway",
"type": "MintPress::Siebel::SecurityProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"MintPress::Siebel::SecurityProfile": {
"mode": "DB",
"test_user_name": "SADMIN",
"test_user_password": "Siebel123",
"application_interface": "application_interface",
"data_sources": "siebel_datasource"
}
}
},
{
"name": "siebel_enterprise_profile",
"type": "MintPress::SiebelApi::EnterpriseProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false"
"MintPress::SiebelApi::EnterpriseProfile": {
"application_interface": "application_interface",
"username": "sadmin",
"password": "Siebel123",
"db_connect_string": "jjwork3.mintpress.io:1521/FOODB",
"db_username": "SADMIN",
"db_password": "Siebel123",
"table_owner": "SIEBEL",
"sec_adpt_profile_name": "Gateway",
"encryption_type": "SISNAPI",
"enterprise_deployments": {
"SBA_82": {
"enterprise_desc": "SBA_82 Enterprise"
}
}
}
}
},
{
"name": "siebel_server_profile",
"type": "MintPress::SiebelApi::ServerProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"MintPress::SiebelApi::ServerProfile": {
"application_interface": "application_interface",
"username": "SADMIN",
"password": "Siebel123",
"anon_login_password": "Siebel123",
"enable_comp_groups_sia": "adm,eai",
"server_deployments": {
"siebelserver1": {
"description": "siebelserver1 Server",
"physical_host_ip": "jjwork4.mintpress.io:8101"
}
}
}
}
}
]
}
]
}
]
}
}
Building JSON for scaleout
As mentioned above, this is a more complicated representation, however will mesh better with scaleout type functionlaity - the major difference is the deployment objects are seperated out from the profile objects, so you can scale those out to multiple servers.
{
"internalVariables":
{
"environmentName": "dev",
"assetCode": "siebel",
"defaultHostTargetUsername": "oracle",
"defaultHostTargetPassword": "oinstall",
"stageRootDir": "/oracle/stage"
},
"projectName": "siebtest_${uniquifier}_$(Time.now.to_i)",
"uniquifier": "x2",
"site": {
"hostList": [
{
"id": "siebelhost1",
"user": "${defaultHostTargetUsername}",
"password": "${defaultHostTargetPassword}",
"address": "jjwork4.mintpress.io",
"properties": [
{
"name": "targetTempDir",
"value": "${defaultHostTargetTmpDirectory}",
"target": "target.tmp.dir"
}
]
}
],
"installationList": [
{
"name": "sunjdk",
"product": "OracleJava",
"version": "1.8.0_192",
"installPath": "/oracle/app/java8",
"softwareStage": "${stageRootDir}/jdk/jdk-8u192-linux-x64.tar.gz",
"attributes": {
"newworld": "true"
}
},
{
"name": "siebel_ai",
"product": "Siebel",
"version": "17.0",
"installPath": "/oracle/app/siebelai",
"softwareStage": "/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server",
"dependsonList": [
"sunjdk"
],
"attributes": {
"newworld": "true",
"Siebel": {
"ai_http_connection_port": 8400,
"ai_https_redirect_port": 8443,
"ai_shutdown_port": 8402,
"client_oracle_home": "/oracle/app/xxx/client32",
"application_interface_container_configuration": true,
"enterprise_container_configuration": false,
"ai_keystore_path": "/home/oracle/pki/keystore.jks",
"ai_keystore_password": "welcome1",
"ai_truststore_path": "/home/oracle/pki/truststore.jks",
"ai_truststore_password": "welcome1",
"oracle_home": "/oracle/app/siebelai",
"install_type": "New Installation"
}
}
},
{
"name": "siebel_ses",
"product": "Siebel",
"version": "17.0",
"installPath": "/oracle/app/siebelses",
"softwareStage": "/oracle/stage/siebel/17/install_image/17.0.0.0/Linux/Server/Siebel_Enterprise_Server",
"dependsonList": [
"sunjdk"
],
"attributes": {
"newworld": "true",
"Siebel": {
"ec_http_connection_port": 8100,
"ec_https_redirect_port": 8101,
"ec_shutdown_port": 8102,
"application_interface_container_configuration": false,
"enterprise_container_configuration": true,
"client_oracle_home": "/oracle/app/xxx/client32",
"ec_keystore_path": "/home/oracle/pki/keystore.jks",
"ec_keystore_password": "welcome1",
"ec_truststore_path": "/home/oracle/pki/truststore.jks",
"ec_truststore_password": "welcome1",
"oracle_home": "/oracle/app/siebelses",
"install_type": "New Installation"
}
}
}
],
"environmentList": [
{
"name": "dev",
"mwTopologyList": [
{
"name": "siebtest",
"description": "siebtest Environment",
"hostInstallationList": [
{
"installationName": "siebel_ai",
"hostIdentifierList": ["siebelhost1"]
},
{
"installationName": "siebel_ses",
"hostIdentifierList": ["siebelhost1"]
}
],
"instanceList": [
{
"name": "application_interface",
"type": "MintPress::Siebel::ApplicationInterface",
"installationName": "siebel_ai",
"hostIdentifier": "siebelhost1",
"attributes": {
"has_control": "true",
"newworld": "true",
"scaleout": "false",
"MintPress::Siebel::ApplicationInterface": {
"password": "Siebel123"
}
}
},
{
"name": "server_instance_1",
"type": "MintPress::Siebel::ServerInstance",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"has_control": "true",
"newworld": "true",
"scaleout": "true",
"MintPress::Siebel::ServerInstance": {
}
}
},
{
"name": "siebel_database",
"type": "MintPress::Siebel::Database",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"scaleout": "false",
"has_control": "false",
"MintPress::Siebel::Database": {
"client_oracle_home": "/oracle/app/xxx/client32/",
"db_host": "jjwork3.mintpress.io",
"db_port": 1521,
"sysdba_username": "sys",
"sysdba_password": "Welcome1",
"db_service_name": "FOODB",
"use_development_settings": true,
"connect_string": "jjwork3.mintpress.io:1521/FOODB"
}
}
},
{
"name": "siebel_gateway",
"type": "MintPress::Siebel::Gateway",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"scaleout": "false",
"has_control": "true",
"MintPress::Siebel::Gateway": {
"application_interface": "application_interface",
"tls_port": 4444,
"client_oracle_home": "/oracle/app/xxx/client32/",
"registry_username": "SADMIN",
"registry_password": "Siebel123"
}
}
},
{
"name": "siebel_datasource",
"type": "MintPress::Siebel::DBDatasource",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"scaleout": "false",
"has_control": "false",
"MintPress::Siebel::DBDatasource": {
"advanced": false,
"db_host": "jjwork3.mintpress.io",
"db_port": 1521,
"db_service_name": "FOODB"
}
}
},
{
"name": "Gateway",
"type": "MintPress::Siebel::SecurityProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false",
"MintPress::Siebel::SecurityProfile": {
"mode": "DB",
"test_user_name": "SADMIN",
"test_user_password": "Siebel123",
"application_interface": "application_interface",
"data_sources": "siebel_datasource"
}
}
},
{
"name": "siebel_enterprise_profile",
"type": "MintPress::SiebelApi::EnterpriseProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false"
"MintPress::SiebelApi::EnterpriseProfile": {
"application_interface": "application_interface",
"username": "sadmin",
"password": "Siebel123",
"db_connect_string": "jjwork3.mintpress.io:1521/FOODB",
"db_username": "SADMIN",
"db_password": "Siebel123",
"table_owner": "SIEBEL",
"sec_adpt_profile_name": "Gateway",
"encryption_type": "SISNAPI",
"enterprise_deployments": {
"SBA_82": {
"enterprise_desc": "SBA_82 Enterprise"
}
}
}
}
},
{
"name": "siebel_server_profile",
"type": "MintPress::SiebelApi::ServerProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false",
"MintPress::SiebelApi::ServerProfile": {
"application_interface": "application_interface",
"username": "SADMIN",
"password": "Siebel123",
"anon_login_password": "Siebel123",
"enable_comp_groups_sia": "adm,eai",
}
}
}
},
{
"name": "siebel_server_deployment_1",
"type": "MintPress::SiebelApi::ServerProfile",
"installationName": "siebel_ses",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "true",
"MintPress::SiebelApi::ServerDeployment": {
"server_profile": "siebel_server_profile",
"description": "siebelserver1 Server",
""physical_host_ip": "${/host.address}:8101"
}
}
]
}
]
}
]
}
}
About Gateway clusters in JSON format
It is supported from siebel v20 and higher to specify a gateway cluster in the JSON format, however you’ll need to directly specify your nodes - the following is a version statically specified:
{
"name": "siebel_gateway_cluster_profile",
"type": "MintPress::SiebelApi::GatewayclusterProfile",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false",
"MintPress::SiebelApi::GatewayclusterProfile": {
"client_port": 23202,
"application_interface": "application_interface",
"gatewaycluster_deployments": {
"cluster_a": {
"application_interface": "application_interface",
"gateway_cluster_node_registry_list": [
{ "physical_host_ip": "siebel1.mintpress.io:8101" },
{ "physical_host_ip": "siebel2.mintpress.io:8101" },
{ "physical_host_ip": "siebel3.mintpress.io:8101" },
{ "physical_host_ip": "siebel4.mintpress.io:8101" }
],
"gateway_cluster_node_service_list": [
{ "physical_host_ip": "siebel1.mintpress.io:8101" },
{ "physical_host_ip": "siebel2.mintpress.io:8101" },
{ "physical_host_ip": "siebel3.mintpress.io:8101" },
{ "physical_host_ip": "siebel4.mintpress.io:8101" }
]
}
}
}
}
},
however, if you’re using the mintpress scaleout functionality to generate these jsons, you’re going either need to pass in your list of hosts, or use teh hostList
variable to specify them - an example configuration for the latter looks like this:
{
"name": "siebel_gateway_cluster_profile",
"type": "MintPress::SiebelApi::GatewayclusterProfile",
"hostIdentifier": "siebelhost1",
"attributes": {
"newworld": "true",
"has_control": "false",
"scaleout": "false",
"MintPress::SiebelApi::GatewayclusterProfile": {
"client_port": 23202,
"application_interface": "application_interface",
"gatewaycluster_deployments": {
"cluster_a": {
"application_interface": "application_interface",
"gateway_cluster_node_registry_list": [
<% hostList.each do |h| %>
{ "physical_host_ip": "<%= h %>:8101" },
<% end %>
],
"gateway_cluster_node_service_list": [
<% hostList.each do |h| %>
{ "physical_host_ip": "<%= h %>:8101" },
<% end %>
]
}
}
}
}
},