Puppet for Windows - Problems with Oracle 11g client install

475 views
Skip to first unread message

Jim Ficarra

unread,
May 18, 2014, 1:57:35 PM5/18/14
to puppet...@googlegroups.com
Trying the following in both package and exec providers

D:\Build\Oracle11gclient\setup.exe -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp

I can run this at the command line and install Oracle 11g client silently.Once I put it in a package or try to exec it, I get as far as the installer auto-unzipping the files needed for the install but then it just hangs and after 5 mins, puppet times out.  The processes are just hung.

I've tried the following two ways  (I have a custom fact that determines if oracle is installed which works correctly - if I install oracle outside of puppet the fact correctly determines if it's installed).  The files are placed in the source path by other statements that work as expected.

Attempted providers (unsuccessful)
--------------------------------
exec {'OracleInstall':
  command  => 'D:\Build\Oracle11gclient\setup.exe -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',
}

exec {'OracleInstall':
  command  => ' & "D:\Build\Oracle11gclient\setup.exe" -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',
  provider  => powershell,
}

#command => '& "D:\Build\Oracle 11g client\setup.exe" -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',

package {'OracleInstall':
  source => 'D:\Build\Oracle11gclient\setup.exe',
  install_options => ['-silent', '-waitforcompletion', '-noconsole'. '-responseFile D:\Build\Ora11gclient.rsp'],
}
--------------------------------

When either of these run, it kicks off - I see the unzip.exe kick off and it begins to unpack the files.  I then see the java installer process and setup.exe in task manager but after a few seconds it stops and just hangs.  The installActions file shows the following - which is not complete compared to when I run the puppet module locally on the box (puppet apply oracle_install.pp).

Contents of installAction log
-----------------------------------------
Using paramFile: D:\Build\Oracle11gclient\install\oraparam.ini

The commandline for unzip:
D:\Build\Oracle11gclient\install\unzip -qqqo ..\stage\Components\oracle.jdk\1.5.0.17.03\1\DataFiles/"*.jar" -d "C:\Users\!CDCPU~1\AppData\Local\Temp\OraInstall2014-05-18_12-52-59PM" 
---------------------------------------------

So, it seems it's getting as far as unzipping but then just hangs - I'm thinking something is getting orphaned somewhere but I can't figure it out.

Hoping someone has some insight or suggestions.

Thanks.

Josh Cooper

unread,
May 19, 2014, 3:44:50 PM5/19/14
to puppet...@googlegroups.com
On Sun, May 18, 2014 at 10:57 AM, Jim Ficarra <jimfi...@gmail.com> wrote:
Trying the following in both package and exec providers

D:\Build\Oracle11gclient\setup.exe -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp

I can run this at the command line and install Oracle 11g client silently.Once I put it in a package or try to exec it, I get as far as the installer auto-unzipping the files needed for the install but then it just hangs and after 5 mins, puppet times out.  The processes are just hung.

I've tried the following two ways  (I have a custom fact that determines if oracle is installed which works correctly - if I install oracle outside of puppet the fact correctly determines if it's installed).  The files are placed in the source path by other statements that work as expected.

Attempted providers (unsuccessful)
--------------------------------
exec {'OracleInstall':
  command  => 'D:\Build\Oracle11gclient\setup.exe -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',
}

exec {'OracleInstall':
  command  => ' & "D:\Build\Oracle11gclient\setup.exe" -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',
  provider  => powershell,
}

#command => '& "D:\Build\Oracle 11g client\setup.exe" -silent -waitforcompletion -noconsole -responseFile D:\Build\Ora11gclient.rsp',

package {'OracleInstall':
  source => 'D:\Build\Oracle11gclient\setup.exe',
  install_options => ['-silent', '-waitforcompletion', '-noconsole'. '-responseFile D:\Build\Ora11gclient.rsp'],

Shouldn't that be:

    install_options => ['-silent', '-waitforcompletion', '-noconsole'. '-responseFile', 'D:\Build\Ora11gclient.rsp'],

Otherwise puppet will think you're passing a single argument with spaces in it, and will quote it.

}
--------------------------------

When either of these run, it kicks off - I see the unzip.exe kick off and it begins to unpack the files.  I then see the java installer process and setup.exe in task manager but after a few seconds it stops and just hangs.  The installActions file shows the following - which is not complete compared to when I run the puppet module locally on the box (puppet apply oracle_install.pp).

Contents of installAction log
-----------------------------------------
Using paramFile: D:\Build\Oracle11gclient\install\oraparam.ini

The commandline for unzip:
D:\Build\Oracle11gclient\install\unzip -qqqo ..\stage\Components\oracle.jdk\1.5.0.17.03\1\DataFiles/"*.jar" -d "C:\Users\!CDCPU~1\AppData\Local\Temp\OraInstall2014-05-18_12-52-59PM" 
---------------------------------------------

So, it seems it's getting as far as unzipping but then just hangs - I'm thinking something is getting orphaned somewhere but I can't figure it out.  

Hoping someone has some insight or suggestions.

Thanks.

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/99bee03b-e71d-40fb-9546-d60359c5af3d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Josh Cooper
Developer, Puppet Labs

Join us at PuppetConf 2014September 22-24 in San Francisco
Register by May 30th to take advantage of the Early Adopter discount save $349!

Jim Ficarra

unread,
May 19, 2014, 9:46:43 PM5/19/14
to puppet...@googlegroups.com
Thanks for replying, Josh.
 
I just tried your suggestion but the same thing happens. 
 
install_options => ['-silent', '-waitforcompletion', '-noconsole'. '-responseFile', 'D:\Build\Ora11gclient.rsp'],
 
It spawns several processes (javaw, oui, etc) and then it unzips the files (I see unzip.exe execute in task mgr, and I see the files expanded in the puppet users appdata/local/temp folder) then it hangs with the following processes hung (in the security context of the service account under which the puppet service is running) – 0% CPU utilization on these processes.
 
conhost.exe (two of them), ruby.exe*32 (two of them), setup.exe*32, oui.exe*32, javaw.exe*32, cmd.exe*32 (two of them) hanging with 0 CPU utilization.
 
I have turned on debugging and I get the following in the event log shortly before it hangs.
Executing 'cmd.exe /c start "puppet-install" /w D:\Build\Oracle11gclient\setup.exe -silent -noconsole -waitforcompletion -responseFile D:\Build\Ora11gclient.rsp'
 
It eventually times out.
 
Any other thoughts?  The odd thing is that I can install this from the command line with the same options, so I know I have the options correct.  Are these processes getting orphaned? I’m guessing based on the behavior, but it looks like the install kicks off several processes, and after the unzip the other processes seem to be waiting for some signal that never happens. 
 
Any additional thoughts?
 
Thanks.
 
-Jim

Josh Cooper

unread,
May 20, 2014, 1:32:02 AM5/20/14
to puppet...@googlegroups.com
On Mon, May 19, 2014 at 6:46 PM, Jim Ficarra <jimfi...@gmail.com> wrote:
Thanks for replying, Josh.
 
I just tried your suggestion but the same thing happens. 
 
install_options => ['-silent', '-waitforcompletion', '-noconsole'. '-responseFile', 'D:\Build\Ora11gclient.rsp'],
 
It spawns several processes (javaw, oui, etc) and then it unzips the files (I see unzip.exe execute in task mgr, and I see the files expanded in the puppet users appdata/local/temp folder) then it hangs with the following processes hung (in the security context of the service account under which the puppet service is running) – 0% CPU utilization on these processes.
 
conhost.exe (two of them), ruby.exe*32 (two of them), setup.exe*32, oui.exe*32, javaw.exe*32, cmd.exe*32 (two of them) hanging with 0 CPU utilization.
 
I have turned on debugging and I get the following in the event log shortly before it hangs.
Executing 'cmd.exe /c start "puppet-install" /w D:\Build\Oracle11gclient\setup.exe -silent -noconsole -waitforcompletion -responseFile D:\Build\Ora11gclient.rsp'
 
It eventually times out.
 
Any other thoughts?  The odd thing is that I can install this from the command line with the same options, so I know I have the options correct.  Are these processes getting orphaned? I’m guessing based on the behavior, but it looks like the install kicks off several processes, and after the unzip the other processes seem to be waiting for some signal that never happens. 
 
Any additional thoughts?

Are you running `puppet apply` or `puppet agent` when the hang happens? In either case, I'd recommending using process explorer to find the child process that all of those are waiting on. As a first approximation, you can usually use procexp to see if one of the threads is calling MessageBoxA, e.g. a service that tries to display a message dialog on the service window station.

Second, is D: a mapped drive? If so, then puppet running as LocalSystem won't be able to access it (as specified).

Also, it would help if you could provide your response file with redacted passwords, etc.


For more options, visit https://groups.google.com/d/optout.

Jim Ficarra

unread,
May 24, 2014, 10:01:39 PM5/24/14
to puppet...@googlegroups.com
Sorry for not responding in a while – I moved on to automating other parts and now I’m back to this one.
 
It happens if I run puppet apply or puppet agent – either way it’s running as a domain service account.
 
I can run the installer perfectly fine outside of puppet with no user interaction whatsoever.  I have the appropriate command line options and the response file simply provides the settings that would’ve been requested through the UI – but as I said, I have it working w/out a lick of interaction required.  It’s just when I hit it in puppet this occurs.
 
Puppet is running as a domain service account.  Not sure what you mean by having an issue with the D: drive.  D: is a local drive, not a mapped drive, so we’re not trying to use localsystem across to a network/mapped drive.  Puppet has no issues install everything else from the same d:\build source – for example I’ve used it to install the MSDeploy MSI and a custom MSI to install some http modules in IIS.  These installers reside in D:\Build as well.  Also, the fact that it’s able to access the installer and unzip the files in the temp install directory is telling me that it has no issues accessing the files on D:.
 
That said, I just tried to execute it as the puppet service account interactively – I see an issue (maybe THE issue) - the installer throws a java.lang.NullPointerException.  I don’t get this when I run it as myself, so at least another lead with the specific user it’s executing under.  I’ll update this thread when I find out more but if you have any other diagnostic tips let me know.
 
Thanks!

Jim Ficarra

unread,
May 24, 2014, 10:28:21 PM5/24/14
to puppet...@googlegroups.com
So I think I found the issue.  Others are having the same issue – the service account used to execute puppet is prefaced with an exclamation mark: ‘!’
 
Seems that others are having similar issues with accounts that have ! in them.
 

http://rprabu1984.wordpress.com/2014/02/03/java-lang-nullpointerexception-while-trying-to-install-oracle-software/

 

https://community.oracle.com/thread/1067522

 

Folks are indicating it’s a bug, but I haven’t found an official statement for Oracle indicating so – still this is pretty plausible given that others are having the same issue with accounts prefaced with ! and that in my case puppet has no issues installing other installers from the same location.  Either way, I have what I think is the root cause and a direction to address it.

 

Thanks for hanging through with this, Josh – much appreciated.  Also, great work on the powershell provider – that has saved me more than you can imagine!

 

If you have any additional thoughts, please feel free.

 

-Jim

Reply all
Reply to author
Forward
0 new messages