biemond / biemond-orawls Goto Github PK
View Code? Open in Web Editor NEWPuppet 3/4 module for WebLogic provisioning module ( Linux & Solaris )
License: Apache License 2.0
Puppet 3/4 module for WebLogic provisioning module ( Linux & Solaris )
License: Apache License 2.0
Hi, we are encountering an issue when running a puppet agent run against an open source master using the orawls module. It doesn't appear to be version specific. I've ran multiple different versions including the latest. We get the following error appearing on the master and agent.
Sep 24 17:30:46 localhost puppet-master[3041]: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type
Sep 24 17:30:46 localhost puppet-master[3041]: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type on node rhtest
Sep 24 17:30:46 localhost puppet-master[3041]: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type on node rhtest
Sep 24 17:30:46 localhost puppet-master[3041]: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type on node rhtest
Sep 24 17:32:59 localhost puppet-master[3072]: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type
We have the easy_type module installed and available to the puppet master. This doesn't appear to effect local puppet apply scenarios. I was wondering if you've seen this before?
All the types & provider files used within the module appear to be pluginsynced across to the agent, I can see the relevant files in /var/lib/puppet/lib/puppet/type
Currently we are running Puppet version 3.6.2. I've built another master using a vagrant setup and run into the same problem. It also occurs when attempting the puppet agent run from other hosts.
We are currently running all our nodes on Centos version 6.5.
Some more detailed output from the puppet agent -t --trace command
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/user_home_path.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/facter_dot_d.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/pe_version.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/gemhome.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/root_home.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/systemroot.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb
Sep 23 15:57:51 rh-test01 puppet-agent[5193]: Loading facts in /var/lib/puppet/lib/facter/orawls.rb
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not autoload puppet/type/wls_setting: no such file to load -- easy_type on node rh-test01
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:207:in is_http_200?' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:100:in
find'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:201:in find' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:256:in
retrieve_new_catalog'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:327:in thinmark' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/1.8/benchmark.rb:308:in
realtime'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:326:in thinmark' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:255:in
retrieve_new_catalog'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:60:in retrieve_catalog' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:103:in
prepare_and_retrieve_catalog'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:170:in run' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:47:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent/locker.rb:20:in lock' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:47:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:117:in with_client' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:44:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:82:in run_in_fork' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:43:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:179:in call' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:179:in
controlled_run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:41:in run' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:355:in
onetime'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:321:in run_command' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:371:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:477:in plugin_hook' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:371:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:479:in exit_on_fail' Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:371:in
run'
Sep 23 15:57:53 rh-test01 puppet-agent[5193]: /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:137:in `run'
Hi Edwin,
We have two SOA Suite domains (e.g. soa1domain, soa2domain) co-located on two machines . During each auto build, the only repeatable issue is that every time the second managed server (soa2_ms2) in the second domain (soa2domain) fails on first start.
Machine 1: Admin(soa1), Admin(soa2), soa1_ms1, soa2_ms2
Machine 2: soa1_ms2, soa2_ms2
The current workaround is manually start at command line and enter credentials when prompted. The server will eventually stop automatically and request to restart via node manager (requirement for consensus migration basis). Restart Node Manager and then start the managed server from the Weblogic console.
<18-Jun-2014 05:56:07 o'clock BST> <Could not decrypt the username attribute value of {AES}246rovWvZxqSyhCS4XAWfoREUsX/DwWJO77hHfM8TMg= from the file /
u01/app/oracle/admin/domains/ipt_cdp_domain/servers/cdp_server2/data/nodemanager/boot.properties. If you have copied an encrypted attribute from boot.properties from another domain into
/u01/app/oracle/admin/domains/ipt_cdp_domain/servers/cdp_server2/data/nodemanager/boot.properties, change the encrypted attribute to its cleartext value then reboot the server. The attri
bute will be re-encrypted. Otherwise, change all encrypted attributes to their cleartext values, then reboot the server. All encryptable attributes will be re-encrypted. The decryption f
ailed with the exception weblogic.security.internal.encryption.EncryptionServiceException.>
Please advise. Many thanks, Jason
Hi Biemond,
Please advise. I've successfully created a two soa cluster (on two machines) and have updated my hiera config. to build from scratch a multi-domain SOA Suite cluster co-located on the same machines.
The error states fmwcluster.pp is failing due to duplicate declaration using the same 'title' when instantiating/referencing the Control shutdown and startup scripts.
fmwcluster.pp (line 123)
orawls::control{'ShutdownAdminServerForSoa':
fmw_cluster_instances:
'SoaCluster2':
domain_name: 'dev1_domain'
adminserver_name: 'AdminServer1'
adminserver_address: 'soa01'
adminserver_port: 7001
soa_cluster_name: 'dev1_cluster'
log_output: *logoutput
bpm_enabled: true
bam_enabled: false
soa_enabled: true
osb_enabled: false
repository_prefix: 'DEV'
'SoaCluster1':
domain_name: 'dev2_domain'
adminserver_name: 'AdminServer2'
adminserver_address: 'soa01'
adminserver_port: 7101
soa_cluster_name: dev2_cluster'
log_output: *logoutput
bpm_enabled: true
bam_enabled: false
soa_enabled: true
osb_enabled: false
repository_prefix: 'STG'
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Duplicate declaration: Orawls::Control[ShutdownAdminServerForSoa] is already declared in file /etc/puppetlabs/puppet/modules/orawls/manifests/utils/fmwcluster.pp:123; cannot redeclare at /etc/puppetlabs/puppet/modules/orawls/manifests/utils/fmwcluster.pp:123 on node soa1.test.local
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
Please include as a fix at your earliest convenience.
Many thanks, Jason
Is this module also Apache 2 license like the rest of the puppet modules?
When an emtpy bsu_patch
is given:
bsu_patch{$wls_patches:
ensure => 'present',
}
The a raw error is given instead of being nicely handled.
Error: /Stage[main]/Wls::Instance/Bsu_patch[YVDZ]: Could not evaluate: undefined method `+' for nil:NilClass
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/provider/bsu_patch/bsu_patch.rb:40:in `bsu_status'
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/provider/bsu_patch/bsu_patch.rb:65:in `status'
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/type/bsu_patch.rb:20:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1021:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1049:in `retrieve_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:32:in `perform_changes'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:138:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:161:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:174:in `eval_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `call'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:354:in `thinmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:353:in `thinmark'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/graph/relationship_graph.rb:118:in `traverse'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:95:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/resource/catalog.rb:164:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/util/log.rb:147:in `with_destination'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/report.rb:108:in `as_logging_destination'
/usr/lib/ruby/site_ruby/1.8/puppet/resource/catalog.rb:163:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:125:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:182:in `benchmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:181:in `benchmark'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:124:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:190:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:273:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:223:in `main'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:151:in `run_command'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:457:in `plugin_hook'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:511:in `exit_on_fail'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:132:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:86:in `execute'
/usr/bin/puppet:4
Error: /Stage[main]/Wls::Instance/Bsu_patch[MASJ]: Could not evaluate: undefined method `+' for nil:NilClass
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/provider/bsu_patch/bsu_patch.rb:40:in `bsu_status'
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/provider/bsu_patch/bsu_patch.rb:65:in `status'
/vagrant/puppet-conf/etc/puppet/modules/orawls/lib/puppet/type/bsu_patch.rb:20:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1021:in `retrieve'
/usr/lib/ruby/site_ruby/1.8/puppet/type.rb:1049:in `retrieve_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:32:in `perform_changes'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/resource_harness.rb:138:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:161:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:174:in `eval_resource'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `call'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:354:in `thinmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:353:in `thinmark'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:104:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/graph/relationship_graph.rb:118:in `traverse'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction.rb:95:in `evaluate'
/usr/lib/ruby/site_ruby/1.8/puppet/resource/catalog.rb:164:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/util/log.rb:147:in `with_destination'
/usr/lib/ruby/site_ruby/1.8/puppet/transaction/report.rb:108:in `as_logging_destination'
/usr/lib/ruby/site_ruby/1.8/puppet/resource/catalog.rb:163:in `apply'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:125:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:182:in `benchmark'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:181:in `benchmark'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:124:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:190:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:273:in `apply_catalog'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:223:in `main'
/usr/lib/ruby/site_ruby/1.8/puppet/application/apply.rb:151:in `run_command'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:457:in `plugin_hook'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util.rb:511:in `exit_on_fail'
/usr/lib/ruby/site_ruby/1.8/puppet/application.rb:364:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:132:in `run'
/usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:86:in `execute'
/usr/bin/puppet:4
A suggestion might be to give default values to all necessary properties
Hi Edwin,
I've reviewed and followed the Identity and Trust settings (https://github.com/biemond/biemond-orawls#identity) and they work fine for admin server, nodemanager etc.
The only problem I see is that the setDomainEnv.sh script in the domain does not get updated to reflect the custom trust. It stays as -Djavax.net.ssl.trustStore=${WL_HOME}/server/lib/DemoTrust.jks
Of course, SOA/BPM Product uses the java args from the command line for it's SSL settings, not the weblogic defined config! (At least for 11.1.1.6, not sure about later versions).
Do you expect the setDomainEnv.sh script to get updated as part of puppet's work configuring the domain identity, and I'm doing something wrong? Or does this need to be a manual step?
If it's manual still let me know, I'll try updating domain.pp manifest to do this.
Cheers,
Brad
Specifically https://github.com/biemond/biemond-orawls/blob/master/manifests/domain.pp#L368
By this logic you cannot create a standard domain on 12.1.2 or 12.1.3
I was able to install wls 12.1.2 successfully, but when I tried to create a wls_datasource, it gave the following error:
Debug: Activating all your changes, this may take a while ...
Debug: The edit lock associated with this edit session is released
Debug: once the activation is completed.
Debug: This Exception occurred at Tue Aug 26 16:35:26 PDT 2014.
Debug: weblogic.management.DeploymentException: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
Debug: Unexpected error: main.WLSTException
Debug: Discarded all your changes successfully.
Debug: Edit session has been stopped successfully.
In this case the resource was just the example with a minor change (target changed to adminserver/server instead of cluster):
wls_datasource { 'hrDS':
ensure => 'present',
drivername => 'oracle.jdbc.xa.client.OracleXADataSource',
extraproperties => ['SendStreamAsBlob','oracle.net.CONNECT_TIMEOUT'],
extrapropertiesvalues => ['true','10000'],
globaltransactionsprotocol => 'TwoPhaseCommit',
initialcapacity => '1',
jndinames => ['jdbc/hrDS'],
maxcapacity => '15',
target => ['AdminServer'],
targettype => ['Server'],
testtablename => 'SQL SELECT 1 FROM DUAL',
url => 'jdbc:oracle:thin:@dbagent2.alfa.local:1521/test.oracle.com',
user => 'hr',
usexa => '1',
}
in here:
#7 (comment)
you said:
"by the way I also thinking about a WLST background process ( which is automatically killed after a few minutes ) so py scripts will perform when the configuration because too big. ( now it start wlst every time a wls type is called ) "
I am opening this issue as a reminder, since I find it very important to speed up execution of all these WLST scripts.
Thanks.
So, I wanted to move my domains directory (away from middleware home etc.):
https://github.com/biemond/biemond-orawls#override-the-default-weblogic-domain-folder
First question, do you have to move both the domains and applications folder for this to work as shown in your example?
Second, I hit an issue where the parent directory did not exist:
Notice: /Stage[main]/Weblogic::Domains/Orawls::Domain[domain]/File[utils.py]/ensure: created
Notice: /Stage[main]/Weblogic::Domains/Orawls::Domain[domain]/File[domain.py ADAMTEST domain]/ensure: created
Error: Cannot create /projects/ADAMTEST/domains; parent directory /projects/ADAMTEST does not exist
Error: /Stage[main]/Weblogic::Domains/Orawls::Domain[domain]/File[/projects/ADAMTEST/domains]/ensure: change from absent to directory failed: Cannot create /projects/ADAMTEST/domains; parent directory /projects/ADAMTEST does not exist
Error: Cannot create /projects/ADAMTEST/applications; parent directory /projects/ADAMTEST does not exist
Error: /Stage[main]/Weblogic::Domains/Orawls::Domain[domain]/File[/projects/ADAMTEST/applications]/ensure: change from absent to directory failed: Cannot create /projects/ADAMTEST/applications; parent directory /projects/ADAMTEST does not exist
Notice: /Stage[main]/Weblogic::Domains/Orawls::Domain[domain]/Exec[execwlst ADAMTEST domain]: Dependency File[/projects/ADAMTEST/domains] has failures: true
Should we leave it up to the user (aka me), to ensure that the parent directories exist, or should we do a 'mkdir -p $domains_dir' somewhere around here:
biemond-orawls/manifests/domain.pp
Lines 356 to 396 in 3dae3de
Let me know what you think. I can ensure that directory exists on my own beforehand, just didn't know if we should also ensure it in the orawls module.
Hello Biemond,
I am new to Puppet and try to run your module to install the weblogic but i found this error when i test the agent
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type orawls::utils::structure at /etc/puppetlabs/puppet/modules/orawls/manifests/weblogic.pp:123 on node hkln897p.oocl.com
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
May I know what is the root cause of that?
these features are not implemented, right?
are you working on it at the moment?
otherwise we can do this. i guess the best is to create a wls_keystore, taking the example of an existing provider, such as wls_machine. any advice?
Getting the following issues on a wls_deployment section - Centos65
Info: Applying configuration version '1411502768'
Info: index wls_deployment
Info: Executing: wlstScript with action index
Info: domain found default
Info: Starting the wls daemon for domain default
Info: Connecting to wls on url t3://10.20.1.114:9070
Info: Executing wls-script /tmp/wlstScript20140923-16598-198x9mi.py
Info: Connecting to wls on url t3://10.20.1.114:9070
Error: Could not prefetch wls_deployment provider 'simple': end of file reached
Info: create default/NAME
Info: Executing: wlstScript with action
Info: Got the right domain default script, now execute WLST
Info: Executing wls-script /tmp/wlstScript20140923-16598-1xrgjhz.py
Error: Could not set 'present' on ensure: Broken pipe at 46:wbs_app.pp
Error: Could not set 'present' on ensure: Broken pipe at 46:wbs_app.pp
Wrapped exception:
Broken pipe
Error: /Stage[main]/MODULE::Wbs_app/Wls_deployment[NAME]/ensure: change from absent to present failed: Could not set 'present' on ensure: Broken pipe at 46:wbs_app.pp
Sections in manifest
wls_setting { 'default':
user => "$user",
weblogic_home_dir => "$alt_dir/12c/wlserver_12.1",
connect_url => "t3://${::ipaddress_eth1}:9070",
weblogic_user => "somthin",
weblogic_password => "SOMETHIN",
} ->
wls_deployment { "NAME":
ensure => 'present',
deploymenttype => 'AppDeployment',
target => ['AdminServer'],
targettype => ['Server'],
localpath => "$alt_dir/install/NAME.war",
} ->
Trying to configure a single server with the layout outlined below. However it is taking two puppet runs to reach desired state. The first run successfully installs and starts the NodeManager and AdminServer. The first run also successfully configures the Cluster and Managed Nodes, but there is an error issuing the start command. The second run successfully starts the managed servers and everything works.
Logoutput is showing that basic_config
is being executed last, and more importantly, after startwls
has been executed the first time through. Any suggestions I will explore and make available via a pull request.
Old Diagram, ports are 7001, 8001 and 9001
Hiera Data
# global OS vars
wls_os_user: &wls_os_user "oracle"
wls_os_group: &wls_os_group "dba"
wls_download_dir: &wls_download_dir "/data/install"
wls_source: &wls_source "puppet:///repo/wls/"
# global WebLogic vars
wls_jdk_home_dir: &wls_jdk_home_dir "/app/java/jdk1.7.0_67"
wls_log_dir: &wls_log_dir "/data/logs"
wls_oracle_base_home_dir: &wls_oracle_base_home_dir "/app/oracle"
wls_weblogic_user: &wls_weblogic_user "weblogic"
wls_logoutput: &wls_logoutput true
#12.1.2 settings
wls_middleware_home_dir: &wls_middleware_home_dir "/app/oracle/middleware12c"
wls_weblogic_home_dir: &wls_weblogic_home_dir "/app/oracle/middleware12c/wlserver"
wls_domains_dir: &wls_domains_dir "/app/oracle/middleware12c/domains"
wls_apps_dir: &wls_apps_dir "/app/oracle/middleware12c/applications"
wls_version: &wls_version 1212
wls_jsse_enabled: false
wls_nodemanager_sleep: 60
#WebLogic installation variables
orawls::weblogic::version: *wls_version
orawls::weblogic::filename: "wls_121200.jar"
# hiera default anchors
orawls::weblogic::jdk_home_dir: *wls_jdk_home_dir
orawls::weblogic::oracle_base_home_dir: *wls_oracle_base_home_dir
orawls::weblogic::middleware_home_dir: *wls_middleware_home_dir
orawls::weblogic::os_user: *wls_os_user
orawls::weblogic::os_group: *wls_os_group
orawls::weblogic::download_dir: *wls_download_dir
orawls::weblogic::source: *wls_source
orawls::weblogic::log_output: *wls_logoutput
orawls::weblogic::remote_file: true
orautils::osOracleHomeParam: *wls_oracle_base_home_dir
orautils::oraInventoryParam: "/app/oracle/oraInventory"
orautils::osDomainTypeParam: "admin"
orautils::osLogFolderParam: *wls_log_dir
orautils::osDownloadFolderParam: *wls_download_dir
orautils::osMdwHomeParam: *wls_middleware_home_dir
orautils::osWlHomeParam: *wls_weblogic_home_dir
orautils::oraUserParam: *wls_os_user
orautils::nodeMgrPortParam: 5556
orautils::wlsUserParam: *wls_weblogic_user
orautils::jsseEnabledParam: false
domain_name: &domain_name "SUPERDEMO"
domain_wls_password: &domain_wls_password "weblogic1"
domain_adminserver_address: &domain_adminserver_address "%{::ipaddress}"
domain_instances:
'SUPERDEMO':
domain_template: "standard"
domain_name: "SUPERDEMO"
development_mode: false
adminserver_address: "%{::ipaddress}"
java_arguments:
ADM: "-XX:PermSize=256m -XX:MaxPermSize=512m -Xms1024m -Xmx1024m"
nodemanager_instances:
'nodemanager':
nodemanager_address: "%{::ipaddress}"
control_instances:
'startWLSAdminServer':
domain_name: "SUPERDEMO"
server_type: 'admin'
target: 'Server'
server: 'AdminServer'
action: 'start'
adminserver_address: "%{::ipaddress}"
'startWLServerCluster':
domain_name: "SUPERDEMO"
server_type: 'managed'
target: 'Cluster'
server: 'WebCluster'
action: 'running'
adminserver_address: "%{::ipaddress}"
wls_setting_instances:
'default':
user: "oracle"
weblogic_home_dir: "/app/oracle/middleware12c/wlserver"
connect_url: "t3://10.22.255.206:7001"
weblogic_user: "weblogic"
weblogic_password: "weblogic1"
require: Orawls::Domain[SUPERDEMO]
server_instances:
'wlsServer1':
ensure: 'present'
arguments:
- '-Dweblogic.Stdout=/var/log/weblogic/wlsServer1.out'
- '-Dweblogic.Stderr=/var/log/weblogic/wlsServer1_err.out'
listenaddress: "%{::ipaddress}"
listenport: '8001'
logfilename: '/var/log/weblogic/wlsServer1.log'
machine: 'LocalMachine'
sslenabled: '0'
ssllistenport: '8201'
sslhostnameverificationignored: '1'
jsseenabled: '0'
'wlsServer2':
ensure: 'present'
arguments:
- '-Dweblogic.Stdout=/var/log/weblogic/wlsServer2.out'
- '-Dweblogic.Stderr=/var/log/weblogic/wlsServer2_err.out'
listenaddress: "%{::ipaddress}"
listenport: '9001'
logfilename: '/var/log/weblogic/wlsServer2.log'
machine: 'LocalMachine'
sslenabled: '0'
ssllistenport: '9201'
sslhostnameverificationignored: '1'
jsseenabled: '0'
server_channel_instances:
'wlsServer1:Channel-Cluster':
ensure: 'present'
enabled: '1'
httpenabled: '1'
listenaddress: "%{::ipaddress}"
listenport: '8003'
outboundenabled: '0'
protocol: 'cluster-broadcast'
publicaddress: "%{::ipaddress}"
tunnelingenabled: '0'
require: Wls_server[wlsServer1]
'wlsServer2:Channel-Cluster':
ensure: 'present'
enabled: '1'
httpenabled: '1'
listenaddress: "%{::ipaddress}"
listenport: '8003'
outboundenabled: '0'
protocol: 'cluster-broadcast'
publicaddress: "%{::ipaddress}"
tunnelingenabled: '0'
require: Wls_server[wlsServer2]
cluster_instances:
'WebCluster':
ensure: 'present'
migrationbasis: 'consensus'
servers:
- 'wlsServer1'
- 'wlsServer2'
messagingmode: 'unicast'
unicastbroadcastchannel: 'Channel-Cluster'
require:
- Wls_server[wlsServer1]
- Wls_server[wlsServer2]
- Wls_server_channel[wlsServer1:Channel-Cluster]
- Wls_server_channel[wlsServer2:Channel-Cluster]
pack_domain_instances:
'SUPERDEMO':
log_output: true
copy_instances:
'SUPERDEMO':
log_output: true
The bsu
utility has an option to specify a different directory to contain the patches. It would be nice if the bsu_patch
type supported this
Hi Edwin,
When wls_user tries to perform an initial indexing when we have an LDAP in use as an authentication provider we have issues as Puppet does not have enough time to index the entire LDAP before it times out. If you were to increase the time out there is also the likelihood that the LDAP will complain about the number of requests (sizelimit) and also throw an exception.
In your experience do you see many orawls users wanting to read the users in an external LDAP via Weblogic/Puppet? The Oracle docs mention that the external ldap's own tools should be used for any adding/deleting/modifying an external LDAPs contents.
Based on that I think it's worth modifying the wls_user index to ignore LDAP Auth providers.
A quick way to do this would be to modify line 18 of index.rb to read:
if isinstance(i,UserReaderMBean) and "ldap" not in i.getProviderClassName().lower():
However, you may suggest a better way if you know one.
Let me know your thoughts, I can create a Pull Request on this one if you are happy.
Cheers,
Brad
So, I upgraded to use your latest module, and keep getting this error when trying to build a single VM cluster (with an admin server, nodemanager, and 2 managed servers) ....
Is there anything special that needs to be done when this type was added? The puppet agent should be running on each of our compile masters and I would hope that would update the types and providers etc.
I added the tunnelingenabled variable to my server_instances block in hiera (it was already set on the server_channel_instances block).
Thanks!
Hi,
It's not possible to set frontEndHost & ports on a managed server.
I'll take a stab at adding it in, just wanted to add this issue to keep track of it!
Thanks,
Josh
It would be nice if we could make this property configurable (true | false) in the templates that use it:
(templates/nodemgr/nodemanager.properties*, I see 3 templates that use it)
Thanks!
Hi,
I'm trying to set the Weblogic Admin server log rotation / retention policy. Looking at : https://forge.puppetlabs.com/biemond/orawls/readme
I can the managed servers are set under:
wls_server:
log_filecount => '10',
log_number_of_files_limited => '1',
log_rotate_logon_startup => '1',
log_rotationtype => 'bySize',
Which I've implemented and tested successfully.
I've tried setting the same policy for the Admin Servers (2x Domains on single node) as below:
domain_instances:
mydomain:
log_dir: /app_log/app
log_output: true
log_filecount: '7'
log_number_of_files_limited: '1'
log_rotate_logon_startup: '1'
log_rotationtype: byTime
but when puppet runs I'm getting:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter log_filecount on node myserver.
Is this a bug or am I running a version of the module that doesn't support this? (1.0.17)
Many thanks
Dave
Debug: bsu_status for patch YVDZ command: /opt/oracle/middleware/jrockit_160_37/bin/java -Xms256m -Xmx256m -jar /opt/oracle/middleware/utils/bsu/patch-client.jar -report -bea_home=/opt/oracle/middleware -output_format=xml
Debug: Executing '/opt/oracle/middleware/jrockit_160_37/bin/java -Xms256m -Xmx256m -jar /opt/oracle/middleware/utils/bsu/patch-client.jar -report -bea_home=/opt/oracle/middleware -output_format=xml'
Debug: bsu_status output NotFound for patchId YVDZ
Debug: bsu_patch action: present
Debug: bsu_patch action: present with command cd /opt/oracle/middleware/utils/bsu;/opt/oracle/middleware/utils/bsu/bsu.sh -install -patchlist=YVDZ -prod_dir=/opt/oracle/middleware/wlserver_10.3 -verbose
Debug: Executing 'cd /opt/oracle/middleware/utils/bsu;/opt/oracle/middleware/utils/bsu/bsu.sh -install -patchlist=YVDZ -prod_dir=/opt/oracle/middleware/wlserver_10.3 -verbose'
Debug: bsu_patch result:
Encountered unrecognized patch ID: YVDZ
Notice: /Stage[main]/Wls::Instance/Bsu_patch[YVDZ]/ensure: defined 'ensure' as 'present'
Debug: /Stage[main]/Wls::Instance/Bsu_patch[YVDZ]: The container Class[Wls::Instance] will propagate my refresh event
Info: /Stage[main]/Wls::Instance/Bsu_patch[YVDZ]: Unscheduling refresh on Bsu_patch[YVDZ]
Debug: bsu_status for patch MASJ command: /opt/oracle/middleware/jrockit_160_37/bin/java -Xms256m -Xmx256m -jar /opt/oracle/middleware/utils/bsu/patch-client.jar -report -bea_home=/opt/oracle/middleware -output_format=xml
Debug: Executing '/opt/oracle/middleware/jrockit_160_37/bin/java -Xms256m -Xmx256m -jar /opt/oracle/middleware/utils/bsu/patch-client.jar -report -bea_home=/opt/oracle/middleware -output_format=xml'
Debug: bsu_status output NotFound for patchId MASJ
Debug: bsu_patch action: present
Debug: bsu_patch action: present with command cd /opt/oracle/middleware/utils/bsu;/opt/oracle/middleware/utils/bsu/bsu.sh -install -patchlist=MASJ -prod_dir=/opt/oracle/middleware/wlserver_10.3 -verbose
Debug: Executing 'cd /opt/oracle/middleware/utils/bsu;/opt/oracle/middleware/utils/bsu/bsu.sh -install -patchlist=MASJ -prod_dir=/opt/oracle/middleware/wlserver_10.3 -verbose'
Debug: bsu_patch result:
Encountered unrecognized patch ID: MASJ
Notice: /Stage[main]/Wls::Instance/Bsu_patch[MASJ]/ensure: defined 'ensure' as 'present'
Debug: /Stage[main]/Wls::Instance/Bsu_patch[MASJ]: The container Class[Wls::Instance] will propagate my refresh event
Info: /Stage[main]/Wls::Instance/Bsu_patch[MASJ]: Unscheduling refresh on Bsu_patch[MASJ]
the wlsbjmsrpDataSource DS is created by the templates, but the modules/orawls/templates/domains/domain_osb.py.erb doesn't seem to change these defaults settings
(using template 'osb').
Setting in yaml the parameters:
repository_database_url
repository_prefix
repository_password
doesn't seem to work.
As a workaround I can declare a "wlsbjmsrpDataSource " dataSource in yaml and recreated it.... but it's not very elegant..
I don't have the code yet but a customer (I'm a Puppet Labs employee) has reported the following:
After installing the weblogic server binaries all subsequent runs fail with an error below:
Debug: orawls.rb weblogic user is oracle
Debug: orawls.rb oraInstPath /app/oracle/oraInventory
Debug: orawls.rb oraProducts NotFound
Debug: orawls.rb mdw11gHomes ["/app/oracle/fmw"]
Debug: orawls.rb mdw12cHomes []
Debug: /etc/wls_domains.yaml not found
Debug: orawls.rb ora_mdw_homes /app/oracle/fmw;
Debug: orawls.rb ora_mdw_cnt 1
Error: Could not retrieve local facts: wrong number of arguments (3 for 2)
Error: Failed to apply catalog: Could not retrieve local facts: wrong number of arguments (3 for 2)
I checked orawls.rb but it isn't clear which fact is causing a problem or why. Any thoughts?
My client's standard is that all nodemanagers are of type Plain- they always disable SSL on the nodemanager.
I'm trying to do that in orawls, and having trouble. SecureListener=true is hard coded in templates/nodemgr/nodemanager.properties. I found that if I hard code that to false, then initial domain setup fails, as all the wlst scripts seem to want to use SSL. If I leave it set to true, create my domain & admin server, shut down, manually set it to false on the admin server, set it to false in templates/nodemgr/nodemanager.properties, and then provision my other machines with puppet, everything works. Obviously though this is not a long-term viable solution.
I'm happy to submit a pr making wls_nodemanager_ssl a bool, but I don't really see where I need to start working other than the nodemanager.properties template.
Any help?
Thanks!
If an app deployment takes a while it results in a execution timeout:
==> wls: Error: /Stage[main]/Onesource::Orawls/Wls_deployment[demo_app]/ensure: change from absent to present failed: Could not set 'present' on ensure: timeout on reading expected output from daemon process. at 182:/etc/puppet/modules/wlsdemo/manifests/orawls.pp
This appears to be related to easy_type handling for execution timeout:
https://github.com/hajee/easy_type/blob/master/lib/easy_type/daemon.rb#L14
https://github.com/hajee/easy_type/blob/master/lib/easy_type/daemon.rb#L77
I looked through the module and I don't see a way to configure this timeout without modifying easy_type. I would like to add a timeout parameter to the wls_deployment resource but I don't see where sync is invoked, so I'm not sure how to override the default 60s timeout:
def sync( timeout = TIMEOUT, &proc)
...
Hello sir,
So, I updated to use the latest orawls module today, and am currently getting this error:
Error: Failed to apply catalog: Parameter bedtime failed on Sleep[wake up nodemanager]: sleepy time isn't an integer at /etc/puppetlabs/puppet/environments/cse_wl_production/modules/orawls/manifests/nodemanager.pp:173
Wrapped exception:
sleepy time isn't an integer
Have you tried to set the 'wls_nodemanager_sleep' variable in your hiera data (instead of using the default of 20 seconds)?
When I run with the following in my hiera data, I get the error:
wls_nodemanager_sleep: 80
But, I commented it out and it seemed to not fail with that error (likely because it used the default of 20 seconds). Perhaps something is up with the type conversions with hiera and what is passed into the fiddyspence-sleep module?
So, have you run this with that value set in hiera data as something else? Or, perhaps we can entertain increasing the default value (since it is now a "safer" sleep). Meaning, if we set the default to 300 or more seconds, it should cover more cases, but would still execute after 20 seconds if your node manager's port came up by then.
Can you update the wls_group provider to check to see if the group already exists?
I think all you need to do is change:
atnr.createGroup(name,description)
to:
if not atnr.groupExists(name):atnr.createGroup(name,description)
It will add the group and add users to it if it doesn't exist. Otherwise, It will just add the users to the existing group.
Looks like in this file:
https://github.com/biemond/biemond-orawls/blob/master/files/providers/wls_group/create.py.erb
Its would be useful to support keystores and identities which are served by the puppet file server, e.g., puppet:///module/module_name/truststore.jks
I have changed to bridged adapter and a soappp ip of 192.168.1.60
In my environment (environment type is 'development', set in soaapp.pp)
it seems I need
1 - host's ip address - in my case 192.168.1.60
2 - connect type of 'plain'
the default script that is generated, sets to 'localhost' and 'ssl' which for me does not seem to work
There is obviously something I missed in the config ?
When trying to use the resource type wls_server
on an agent I get this error:
# puppet resource wls_server
Error: Could not run: Could not find template 'puppet:///modules/orawls/providers/wls_server/index.py.erb'
The wls_server
resource type depends on a templated python script located on the Puppet Master. This causes puppet runs to fail on Puppet Agents with the default Puppet Enterprise 3.3 configuration. I posted a question on ask.puppetlabs.com asking if this was a problem with PE 3.3 and the answer I got is that is this:
That is a problem with that specific custom resource type - it is a non standard type/provider that is dependent on loading a file stored on the master / in the module in order to work successfully.
If the custom resource was isolated to just using ruby (in this case the orawls module is calling a templatized python script), the resource would have been synced to the agent during that agents next puppet run and then made available to you in the command line. Since it does not do that, you have to tell the command line client where to find the server (putting the server in the main section instead of agent) so that type/provider could retrieve it's needed external file.
I would suggest raising an issue with the module author as even though changing the agents configuration allows for the module to work, the resource shouldn't be loading external files for it to conform to type/provider best practices.
For a full description of the problem, see my question on ask.puppetlabs.com:
https://ask.puppetlabs.com/question/13602/pe-33-why-are-custom-resource-types-not-synced-to-agents/
Hi Edwin,
This is not an issue with the code, but a query on usage when it comes to customizing the Default Identity Asserter (DIA) on initial setup, I'd like to know your opinion of how to approach it.
Consider the following:
wls_authentication_provider { 'DefaultIdentityAsserter':
ensure => 'present',
providerclassname => 'weblogic.security.providers.authentication.DefaultIdentityAsserter',
attributes: => 'DigestReplayDetectionEnabled;UseDefaultUserNameMapper;DefaultUserNameMapperAttributeType;ActiveTypes',
attributesvalues => '1;1;CN;AuthenticatedUser::X.509',
}
Here we are trying to change some configuration of the DIA. However, because the wls_authentication_provider type has inconsistent properties between Providers the index method can only check that the name exists and that the control flag matches. When Weblogic domain is created it automatically creates the DIA and the DefaultAuthenticator.
My current workaround is to manually delete the DIA and then let Puppet re-create it with the correct config. I'm trying to think of how it can be automated instead. My thoughts were maybe a flag somewhere that would remove the default authentication providers during domain creation (I couldn't find a good place for this). Then they can be explicitly recreated later.
Another option I considered was creating a new custom type for administering Identity Asserter (wls_identity_asserter), this would allow for better/safer inspection of the DIA properties (ActiveTypes etc) without over-complicating the existing wls_authentication_provider type.
What do you think would be best?
P.S. Perhaps this is for another discussion, but I'm also thinking about how best to implement defined ordering of Authentication Providers. I believe WL stores them in order of creation, so if the default providers were initially removed and explicitly created from manifest/hiera the ordering could also be defined there (I think).
The WLST code for this:
cd('/SecurityConfiguration/wl-domain/Realms/myrealm')
set('AuthenticationProviders',jarray.array([ObjectName('Security:Name=myrealmCustom Identity Asserter'), ObjectName('Security:Name=myrealmLDAP'), ObjectName('Security:Name=myrealmDefaultAuthenticator'), ObjectName('Security:Name=myrealmDefaultIdentityAsserter')], ObjectName))
Thanks!
Brad
When I import the common/templates/applications/wlsb_base.jar template, a osb_server1 is created, but we don't really need it, because we create our own servers with our own naming conventions.
Is there a way to rename this server into something else, or to delete it and target the singleton services to another server?
Thanks!
pierre
Hi Edwin,
Since the change on 19/12 (Support for nodemanager without any security/plain) I see this error when we try to build the domain.
I'm running puppet locally (puppet apply --debug --trace /etc/puppetlabs/puppet/environments/dev/manifests/site.pp) and I've restarted the puppet agent since upgrading the module to the latest.
Is this change dependent on anything externally on the system? I see that the lib/puppet/provider/wls_adminserver/wls_adminserver.rb is much more complex than the other providers which just have the simple.rb.
We also upgraded our Puppet Master and Agents from 3.2 to 3.7 at the end of December.
Runtime environment: puppet_version=3.7.3 (Puppet Enterprise 3.7.1), ruby_version=1.9.3, run_mode=user, default_encoding=UTF-8
If it helps I can provide the full log and the site.pp/YAML.
Thanks for any ideas.
Brad
Debug: File[nodemanager.properties ux nodemanager]: Adding default for backup
Debug: Exec[startNodemanager nodemanager]: Adding default for logoutput
Error: Invalid parameter nodemanager_secure_listener on Wls_adminserver[uat_admin:AdminServer] at /mnt/puppet-data/puppet-environments/dev/modules/orawls/manifests/control.pp:61 on node uat-soa-pl1.omw.example.com.au
/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/resource.rb:499:in validate_parameter' /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/resource.rb:261:in
block in validate'
/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/resource.rb:260:in each' ..snip... /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/command_line.rb:92:in
execute'
/opt/puppet/bin/puppet:8:in <main>' Wrapped exception: Invalid parameter nodemanager_secure_listener /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/resource.rb:499:in
validate_parameter'
...snip....
/opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/util/command_line.rb:92:in execute' /opt/puppet/bin/puppet:8:in
validate_parameter' /opt/puppet/lib/ruby/site_ruby/1.9.1/puppet/parser/resource.rb:261:in
block in validate'Hi Edwin,
I would like to create multiple EIS entries (DB ResourceAdapter - add to dbAdapter) in SOA Suite 11g and Weblogic 10.3.6 clustered. I need to use a common deployment plan e.g. Plan_DB.xml, however, Puppet complains about "duplicated" entry for the common deployment plan.
Manual configuration using the above approach works fine so I would expect the same support in this module. Please advise. Many thanks, Jason
resource_adapter_instances:
'DbAdapter_hr':
adapter_name: 'DbAdapter'
adapter_path: "/opt/oracle/middleware11g/Oracle_SOA1/soa/connectors/DbAdapter.rar"
adapter_plan_dir: "/opt/oracle/wlsdomains"
adapter_plan: 'Plan_DB.xml'
adapter_entry: 'eis/DB/hr'
adapter_entry_property: 'xADataSourceName'
adapter_entry_value: 'jdbc/hrDS'
'DbAdapter_ac':
adapter_name: 'DbAdapter'
adapter_path: "/opt/oracle/middleware11g/Oracle_SOA1/soa/connectors/DbAdapter.rar"
adapter_plan_dir: "/opt/oracle/wlsdomains"
adapter_plan: 'Plan_DB.xml'
adapter_entry: 'eis/DB/ac'
adapter_entry_property: 'xADataSourceName'
adapter_entry_value: 'jdbc/acDS'
We've been using your module for some time and had lots of success with it. However this week, for some reason I'm getting this error and am having to create the /etc/wls_domains.yaml file manually. Do you have any idea what could be causing it?
I've had the problem on CentOS 7 and Oracle Linux 6.6 so far.
Here is an extract from my debug output:
Notice: orawls::domain wlsDomain12c /opt/oracle/middleware12c/user_projects/domains/Wls12c 1212 does not exists Notice: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/Notify[orawls::domain wlsDomain12c /opt/oracle/middlewa re12c/user_projects/domains/Wls12c 1212 does not exists]/message: defined 'message' as 'orawls::domain wlsDomain12c /opt/oracle/middl eware12c/user_projects/domains/Wls12c 1212 does not exists' Debug: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/Notify[orawls::domain wlsDomain12c /opt/oracle/middlewar e12c/user_projects/domains/Wls12c 1212 does not exists]: The container Orawls::Domain[wlsDomain12c] will propagate my refresh event Notice: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/File[domain.py Wls12c wlsDomain12c]/ensure: created Debug: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/File[domain.py Wls12c wlsDomain12c]: The container Orawl s::Domain[wlsDomain12c] will propagate my refresh event Debug: Exec[domain.py Wls12c wlsDomain12c](provider=posix): Executing 'rm /opt/oracle/install/domain_Wls12c.py' Debug: Executing 'rm /opt/oracle/install/domain_Wls12c.py' Notice: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/Exec[domain.py Wls12c wlsDomain12c]/returns: executed s uccessfully Debug: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/Exec[domain.py Wls12c wlsDomain12c]: The container Orawl s::Domain[wlsDomain12c] will propagate my refresh event Debug: Prefetching mapped resources for yaml_setting Error: Puppet::Util::FileType::FileTypeFlat could not read absent: FileSystem implementation expected Pathname, got: 'Symbol' Error: Could not prefetch yaml_setting provider 'mapped': Puppet::Util::FileType::FileTypeFlat could not read absent: FileSystem impl ementation expected Pathname, got: 'Symbol' Error: Puppet::Type::Yaml_setting::ProviderMapped is in an error state Error: /Stage[main]/Appserver::Weblogic::Domain/Orawls::Domain[wlsDomain12c]/Yaml_setting[domain wlsDomain12c]/ensure: change from ab sent to present failed: Puppet::Type::Yaml_setting::ProviderMapped is in an error state Debug: Orawls::Domain[wlsDomain12c]: The container Class[Appserver::Weblogic::Domain] will propagate my refresh event Debug: Class[Appserver::Weblogic::Domain]: The container Stage[main] will propagate my refresh event Notice: /Stage[main]/Appserver::Weblogic::Nodemanager/Orawls::Nodemanager[nodemanager12c]/Exec[startNodemanager nodemanager12c]: Depe ndency Yaml_setting[domain wlsDomain12c] has failures: true Warning: /Stage[main]/Appserver::Weblogic::Nodemanager/Orawls::Nodemanager[nodemanager12c]/Exec[startNodemanager nodemanager12c]: Ski pping because of failed dependencies Notice: /Stage[main]/Appserver::Weblogic::Nodemanager/Orawls::Nodemanager[nodemanager12c]/Exec[sleep 20 sec for wlst exec nodemanager 12c]: Dependency Yaml_setting[domain wlsDomain12c] has failures: true Warning: /Stage[main]/Appserver::Weblogic::Nodemanager/Orawls::Nodemanager[nodemanager12c]/Exec[sleep 20 sec for wlst exec nodemanage r12c]: Skipping because of failed dependencies
I wanted to ask about the log_dir permissions.
https://github.com/biemond/biemond-orawls/blob/master/manifests/domain.pp#L294-L315
What it looks like to me is that you create the full path 'mkdir -p /var/log/weblogic' or whatever the path is set to, then set the ownership to the wls_os_user and group, but recurse is false.
So, in my case (read weblogic domain from a fact, it is ADAMTEST in my case):
wls_log_dir: &wls_log_dir "/logs/%{::weblogic_domain}/weblogic"
Then:
drwxr-xr-x 3 root root 4096 Dec 30 08:39 ADAMTEST
total 4
drwxrwxr-x 2 'wls_os_user' 'wls_os_group' 4096 Dec 30 08:42 weblogic
(All files in there are owned by 'wls_os_user' and 'wls_os_group'
Is that how we want the ownership to be? Or, am I missing something? I would think that /logs/ADAMTEST would be owned by 'wls_os_user' and 'wls_os_group' as well.
Thanks!
Hi Edwin,
The name parameter used by several custom types (shared/name.rb) includes EasyType::Validators::Name
This enforces a no whitespace policy for some config elements which Weblogic can manage with whitespace (e.g. Authentication Providers, WL Users)
This is causing some difficulty when trying to replicate an existing environment's config into Puppet where a user name needs to contain a space.
What are your thoughts on removing the Name Validators from shared/name.rb? Will it break any existing functionality? Standards?
There is a check for empty values in the name validator, which should still be a requirement. If we remove the Name validator from the Name type I can add a NotEmpty module to the easy type validators.rb to be used in place of the Name validator.
Let me know what you think.
Cheers,
Brad
Is there any reason why domain.pp creates a machine 'LocalMachine'?
just to attach the AdminServer to that LocalMachine?
however, there is not need to attach AdminServer to a 'LocalMachine'.
is this correct?
at least we don't do this.
can we remove this LocalMachine? I can send you the pull request.
otherwise, if that's really needed, the port should be configured
cmo.setListenPort(portNumber)
and maybe the other parameters used in modules/orawls/files/providers/wls_machine/create.py.erb
(machineName, machinetype, nmType, listenaddress, listenport)
So, I set the following:
#10.3.6 settings
wls_middleware_home_dir: &wls_middleware_home_dir "/app/oracle/wls%{hiera('wls_version')}"
wls_weblogic_home_dir: &wls_weblogic_home_dir "/app/oracle/wls%{hiera('wls_version')}/wlserver"
wls_domains_dir: &wls_domains_dir "/projects"
wls_apps_dir: &wls_apps_dir "/app/oracle/wls%{hiera('wls_version')}/applications"
wls_version: &wls_version 1036
And, the run fails for WL 10 (it succeeds for WL 12) because the wls_weblogic_home_dir gets slapped down as:
/app/oracle/wls1036/wlserver_10.3/ (instead of /app/oracle/wls1036/wlserver).
Is this not configurable for WL 10?
Hi,
I upgraded PE 2.8.7 to PE 3.3.2 and I'm receiving following error:
Debug: file_metadata supports formats: pson b64_zlib_yaml yaml raw
Debug: Prefetching yaml resources for wls_setting
Debug: 0 read_from_yaml
Error: Could not prefetch wls_setting provider 'yaml': undefined class/module file
Notice: /Stage[main]/Domains/Wls_setting[default]/user: defined 'user' as 'oracle'
Notice: /Stage[main]/Domains/Wls_setting[default]/weblogic_home_dir: defined 'weblogic_home_dir' as '/opt/oracle/middleware12c/wlserver'
Notice: /Stage[main]/Domains/Wls_setting[default]/weblogic_user: defined 'weblogic_user' as 'weblogic'
Notice: /Stage[main]/Domains/Wls_setting[default]/connect_url: defined 'connect_url' as 't3://172.36.30.20:7001'
Notice: /Stage[main]/Domains/Wls_setting[default]/weblogic_password: defined 'weblogic_password' as 'weblogic1'
Error: /Stage[main]/Domains/Wls_setting[default]: Could not evaluate: undefined method `merge!' for nil:NilClass
Could you please advise what could be wrong?
Regards,
Garagoth.
I see that you have exec timeout=0 for weblogic.pp and others.
but this parameter is missing for copydomain.pp exec "unpack ${domain_name}".
(for some strange reason, sometimes my vagrant box takes a lot to execute the unpack, more than the default 300 seconds)
I've created a new "wls_jdbc_persistence_store" custom type in orawls, which is copy of "wls_file_persistence_store" with the necessary WLST changes, and I'm getting the following error on the puppet agent...
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not autoload puppet/type/wls_jdbc_persistence_store: file puppet/type/wls_jdbc_persistence_store/jdbc_persistence_name not found on node xxxx
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
I've rebuilt the orawls module to update the checksums.json file, and the files are being copied across to the puppet agent.
wls_file_persistence_store
[root@xxxx ~]# find /var/lib/puppet/lib -type f -exec grep -i file_persistence_store {} ; -print
newtype(:wls_file_persistence_store) do
environment = { 'action' => 'index', 'type' => 'wls_file_persistence_store' }
wlst template('puppet:///modules/orawls/providers/wls_file_persistence_store/index.py.erb', binding), environment
template('puppet:///modules/orawls/providers/wls_file_persistence_store/create.py.erb', binding)
template('puppet:///modules/orawls/providers/wls_file_persistence_store/modify.py.erb', binding)
template('puppet:///modules/orawls/providers/wls_file_persistence_store/destroy.py.erb', binding)
/var/lib/puppet/lib/puppet/type/wls_file_persistence_store.rb
Puppet::Type.type(:wls_file_persistence_store).provide(:simple) do
/var/lib/puppet/lib/puppet/provider/wls_file_persistence_store/simple.rb
wls_jdbc_persistence_store
[root@xxxx ~]# find /var/lib/puppet/lib -type f -exec grep -i jdbc_persistence_store {} ; -print
newtype(:wls_jdbc_persistence_store) do
environment = { 'action' => 'index', 'type' => 'wls_jdbc_persistence_store' }
wlst template('puppet:///modules/orawls/providers/wls_jdbc_persistence_store/index.py.erb', binding), environment
template('puppet:///modules/orawls/providers/wls_jdbc_persistence_store/create.py.erb', binding)
template('puppet:///modules/orawls/providers/wls_jdbc_persistence_store/modify.py.erb', binding)
template('puppet:///modules/orawls/providers/wls_jdbc_persistence_store/destroy.py.erb', binding)
/var/lib/puppet/lib/puppet/type/wls_jdbc_persistence_store.rb
Puppet::Type.type(:wls_jdbc_persistence_store).provide(:simple) do
/var/lib/puppet/lib/puppet/provider/wls_jdbc_persistence_store/simple.rb
Any ideas what the issue is?
Hi Edwin
I have an co-located pair of SOA domains/cluster running on two VMs (Centos 6.5). Following upgrade (see below), the existing FmwCluster instances are not detected therefore it proceeds to create OPSS store and therefore breaks the Puppet run and its dependencies.
orawls 1.0.1 --> 1.0.11
orautils 0.2.4 --> 0.2.9
easy_type 0.7.4 --> 0.12.4
Notice: orawls::utils::fmwcluster Soa2Cluster 1036 continue true cause not exists
Notice: /Stage[main]/Profile::Wls::Fmw_cluster/Orawls::Utils::Fmwcluster[Soa2Cluster]/Notify[orawls::utils::fmwcluster Soa2Cluster 1036 continue true cause not exists]/message: defined 'message' as 'orawls::utils::fmwcluster Soa2Cluster 1036 continue true cause not exists'
Notice: /Stage[main]/Profile::Wls::Fmw_cluster/Orawls::Utils::Fmwcluster[Soa2Cluster]/Exec[execwlst create OPSS store soa2_domain Soa2Cluster]/returns: Command FAILED, Reason: oracle.security.jps.service.policystore.PolicyObjectAlreadyExistsException: javax.persistence.PersistenceException: Exception [EclipseLink-4002](Eclipse Persistence Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.DatabaseException
Existing YAML:
fmw_cluster_instances:
Soa1Cluster:
domain_name: soa1_domain
adminserver_name: AdminServer
adminserver_address: soa01
adminserver_port: 7001
soa_cluster_name: soa1_cluster
bam_cluster_name: soa1_bam_cluster
log_output: true
bpm_enabled: true
bam_enabled: true
soa_enabled: true
osb_enabled: false
repository_prefix: APP
tag: mwconfig
Soa2Cluster:
domain_name: soa2_domain
adminserver_name: AdminServer
adminserver_address: soa01
adminserver_port: 7101
soa_cluster_name: soa2_cluster
bam_cluster_name: soa2_bam_cluster
log_output: true
bpm_enabled: true
bam_enabled: true
soa_enabled: true
osb_enabled: false
repository_prefix: CDP
tag: mwconfig
Hello sir,
So, there are many ways to set the log files in a server_instances block:
arguments:
- *server_vm_args_permsize
- *server_vm_args_max_permsize
- *server_vm_args_memory
- *server_vm_args_max_memory
- "-Dweblogic.Stdout=/logs/%{::domain}/weblogic/%{::appname}-s1.out"
- "-Dweblogic.Stderr=/logs/%{::domain}/weblogic/%{::appname}-s1_err.out"
logfilename: "/logs/%{::domain}/weblogic/%{::appname}-s1.log"
Through arguments and the logfilename are the ways I see. So, if we set all 3 above, we end up with 3 log files per server (s1.out, s1_err.out, and s1.log). So, obviously s1.out is for STDOUT, s1_err.out is for STDERR, and s1.log is for what, everything combined or what?
I know we just want a log filename for STDOUT (s1.log), and one for STDERR (s1.out), for instance. That would be the ideal output we want. Do you know what I would set to get this kind of log file naming and output?
So, the arguments are the arguments sent to the JVM for the servers, correct? The logFilename is used in your types and providers (used in the WLST scripts). So, should I just set the STDOUT and STDERR to the filenames I want in the JVM arguments and not set the logFilename parameter?
Hi Edwin,
Not an issue more a question. I've made a local change to allow some of the advanced options within the Connection pool to be chosen. I've copied the shared property & property value method, rather than a single parameter for each option. Everything I've done is working, but I'm going to have problems with modifying the index.py.erb. Currently the values in hiera are unavailable, so the wlst code to look-up the additional configured advanced options doesn't work. Any thoughts?
Rob
Based on our usage, we need to extend the max message size a WLS server can handle.
cd('/Servers/<server-name')
cmo.setMaxMessageSize(25000000)
Can we add this to the wls_server custom type?
wls_server{'my_server':
max_message_size => 25000000,
}
Hi Edwin,
Hope you are well. Urgently, need your advice here. We've implemented OpenLDAP integation. Initial Puppet run is fine and after reboot of Weblogic cluster, the Ldap users are groups display in the Weblogic console and no errors in the Admin Server logs. However, the subsequent Puppet runs fail repeatedly.
Env details:
orawls version: 1.0.17
Weblogic 11.1.1.7, Oracle 11g on Red Hat platform.
Thanks in advance and look forward to your reply...
authentication_provider_instances:
DefaultAuthenticator:
ensure: present
control_flag: SUFFICIENT
tag: mwconfig
DefaultIdentityAsserter:
ensure: present
providerclassname: weblogic.security.providers.authentication.DefaultIdentityAsserter
attributes: DigestReplayDetectionEnabled;UseDefaultUserNameMapper;DefaultUserNameMapperAttributeType;ActiveTypes
attributesvalues: 0;0;E;AuthenticatedUser
tag: mwconfig
IPT-Authenticator:
ensure: present
control_flag: SUFFICIENT
providerclassname: weblogic.security.providers.authentication.OpenLDAPAuthenticator
attributes: Principal;Credential;Host;Port;UserBaseDN;UserNameAttribute;AllUsersFilter;UserFromNameFilter;UserObjectClass;GroupBaseDN;GroupFromNameFilter;StaticGroupObjectClass;StaticMemberDNAttribute;StaticGroupDNsfromMemberDNFilter;GuidAttribute;SSLEnabled
attributesvalues: cn=adm,ou=users,dc=dummy,dc=org,dc=uk;xxxxxxxx;hostname.com;636;ou=users,dc=homeoffice,dc=gov,dc=uk;cn;;(&(cn=%u)(objectclass=inetOrgPerson));inetOrgPerson;ou=groups,dc=dummy,dc=org,dc=uk;(&(cn=%g)(objectclass=groupofnames));groupofnames;member;(&(member=%M)(objectclass=groupofnames));entryuuid;false
Info: Connecting to wls on url t3://xxxxxx:7001
Error: Could not prefetch wls_group provider 'simple': timeout on reading expected output from daemon process.
Info: create default/Administrators
Info: Executing: wlstScript with action
Info: Got the right domain default script, now execute WLST
Info: Executing wls-script /tmp/wlstScript20150122-23148-1c9hlum.py
Info: Connecting to wls on url t3://xxxxxxx:7001
Error: Could not set 'present' on ensure: command in deamon failed.
Error: Could not set 'present' on ensure: command in deamon failed.
Wrapped exception:
command in deamon failed.
Error: /Stage[main]/Profile::Wls::Groups/Wls_group[Administrators]/ensure: change from absent to present failed: Could not set 'present' on ensure: command in deamon failed.
I have cloned your https://github.com/biemond/biemond-orawls-vagrant
enabled fmw_installations of osbPS6
vagrant up admin succeeds, but when I do vagrant up node1 I get this error:
"Notice: /Stage[main]/Copydomain/Orawls::Copydomain[wlsDomain]/Exec[unpack Wls1036]/returns: Required component home not found for component 'oracle.as.jrf' version '11.1.1.7.0'"
The same issue is mentioned here http://tim.blackamber.org.uk/?p=953
and it seems connected to the use of pack/unpack with OSB and SOA domains (I am NOT installing SOA anyway...). As I have never used the pack/unpack for multi-machine domains, I have never seen this error before...
I wonder if you have ever tried this OSB-only setup?
Hey, So I am adding ActiveDirectoryAuthentication which is successful the first run but throws soft errors on the second run of:
Debug: Unexpected error: java.lang.IllegalArgumentException
Debug: Discarded all your changes successfully.
Debug: Edit session has been stopped successfully.
Debug: ~~~~COMMAND FAILED~~~~
Error: Could not set 'present' on ensure: command in deamon failed.
Error: Could not set 'present' on ensure: command in deamon failed.
Wrapped exception:
command in deamon failed.
Error: /Stage[main]/Weblogic::Security/Wls_authentication_provider[ActiveDirectoryAuthenticator]/ensure: change from absent to present failed: Could not set 'present' on ensure: command in deamon failed.
Debug: Class[Weblogic::Security]: The container Stage[main] will propagate my refresh event
Notice: /Stage[main]/Weblogic_prep::Links/File[/logs/JOETEST/log4j]: Dependency Wls_authentication_provider[ActiveDirectoryAuthenticator] has failures: true
Warning: /Stage[main]/Weblogic_prep::Links/File[/logs/JOETEST/log4j]: Skipping because of failed dependencies
Notice: /Stage[main]/Weblogic_prep::Links/File[/projects/JOETEST/logs]: Dependency Wls_authentication_provider[ActiveDirectoryAuthenticator] has failures: true
Warning: /Stage[main]/Weblogic_prep::Links/File[/projects/JOETEST/logs]: Skipping because of failed dependencies
Here is my hiera data:
authentication_provider_instances:
'DefaultAuthenticator':
ensure: 'present'
control_flag: 'SUFFICIENT'
'ActiveDirectoryAuthenticator':
ensure: 'present'
control_flag: 'SUFFICIENT'
providerclassname: 'weblogic.security.providers.authentication.ActiveDirectoryAuthenticator'
attributes: 'Credential;GroupBaseDN;GroupFromNameFilter;GroupMembershipSearching;Host;MaxGroupMembershipSearchLevel;Principal;UserBaseDN;UserFromNameFilter;UserNameAttribute;Port'
attributesvalues: 'secretPassword;DC=ad,DC=organization,DC=org;(&(sAMAccountName=%g)(objectclass=group));limited;ad.organization.org;0;CN=SER_Account,OU=Service Accounts,DC=ad,DC=organization,DC=org;DC=ad,DC=organization,DC=org;(&(sAMAccountName=%u)(objectclass=user));sAMAccountName;389'
order: '0'
My only guess is that its trying to create the ActiveDirectoryAuthenticator when it already exists?
I also have to restart the server to not get this message when trying to view users/groups.
This page is not available because non-dynamic changes have been made and the Admin Server requires a restart. Please restart the Admin Server to make this page available. Alternatively, you can make this page available by enabling "Allow Security Management Operations if Non-dynamic Changes have been Made" field on the Domain: Security page. (Link to Domain Security Page)
I was thinking, it would likely be more beneficial to have a better waiting mechanism for the node manager to start other than just a sleep.
In my past, I have written library code or something to have a loop waiting for some success condition, and sleeping for a second waiting until some maximum timeout. The code I am referring to is here:
biemond-orawls/manifests/nodemanager.pp
Lines 139 to 156 in 2d34e33
So, if the module took a wls_nodemanager_max_sleep and a wls_nodemanager_interval_sleep (so you have a maximum and a time to sleep between calls to sleep, i.e. 5 second interval, and maximum of 3-5 minutes). Then, you could call code that would wait for a success condition like waiting for the node to be listening on the Node Manager port parameter (i.e. 5556). I was running into issues having to wait long amounts of time and different amounts of time depending on how complex my WL configuration was, and which version (10 vs. 12) etc. So, having a full-proof mechanism that would stop on success condition (host is listening on the node manager port) and a maximum timeout allows for much better flexibility.
Let me know what you think.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.