root@puppet30client:~# puppet agent --evaltrace --trace --test --configtimeout 5m Info: Retrieving plugin Info: Loading facts in /var/lib/puppet/lib/facter/centos_version.rb Info: Loading facts in /var/lib/puppet/lib/facter/network-bonds.rb Info: Loading facts in /var/lib/puppet/lib/facter/powerstates.rb Info: Loading facts in /var/lib/puppet/lib/facter/software_raid.rb Info: Loading facts in /var/lib/puppet/lib/facter/centos-version.rb Info: Caching catalog for puppet30client Info: Applying configuration version '1351007512' Info: /Schedule[daily]: Starting to evaluate the resource Info: /Schedule[daily]: Evaluated in 0.00 seconds Info: /Schedule[monthly]: Starting to evaluate the resource Info: /Schedule[monthly]: Evaluated in 0.00 seconds Info: /Schedule[hourly]: Starting to evaluate the resource Info: /Schedule[hourly]: Evaluated in 0.00 seconds Info: Stage[main]: Starting to evaluate the resource Info: Stage[main]: Evaluated in 0.00 seconds Info: Class[Main]: Starting to evaluate the resource Info: Class[Main]: Evaluated in 0.00 seconds Info: Class[Yum]: Starting to evaluate the resource Info: Class[Yum]: Evaluated in 0.00 seconds Info: /Stage[main]/Yum/Package[yum-plugin-priorities]: Starting to evaluate the resource Info: /Stage[main]/Yum/Package[yum-plugin-priorities]: Evaluated in 0.00 seconds Info: Set_yum_repo[epel]: Starting to evaluate the resource Info: Set_yum_repo[epel]: Evaluated in 0.04 seconds Info: Class[Csapiclient]: Starting to evaluate the resource Info: Class[Csapiclient]: Evaluated in 0.00 seconds Info: Node[puppet30client]: Starting to evaluate the resource Info: Node[puppet30client]: Evaluated in 0.00 seconds Info: Class[Centos]: Starting to evaluate the resource Info: Class[Centos]: Evaluated in 0.00 seconds Info: /File[/etc/profile.d/raimunds_favorite_aliases.sh]: Starting to evaluate the resource Info: /File[/etc/profile.d/raimunds_favorite_aliases.sh]: Evaluated in 0.00 seconds Info: Replace_line[Set_default_global_HISTSIZE]: Starting to evaluate the resource Info: Replace_line[Set_default_global_HISTSIZE]: Evaluated in 0.00 seconds Info: Class[Settings]: Starting to evaluate the resource Info: Class[Settings]: Evaluated in 0.00 seconds Info: Class[Settings]: Starting to evaluate the resource Info: Class[Settings]: Evaluated in 0.00 seconds Info: /Stage[main]/Yum/Package[yum-plugin-fastestmirror]: Starting to evaluate the resource Info: /Stage[main]/Yum/Package[yum-plugin-fastestmirror]: Evaluated in 0.00 seconds Info: Class[Puppet::Client]: Starting to evaluate the resource Info: Class[Puppet::Client]: Evaluated in 0.00 seconds Info: /File[yum_epel.repo]: Starting to evaluate the resource Info: /File[yum_epel.repo]: Evaluated in 0.00 seconds Info: Set_yum_repo[epel]: Starting to evaluate the resource Info: Set_yum_repo[epel]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[bind-utils]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[bind-utils]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[xorg-x11-fonts-Type1]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[xorg-x11-fonts-Type1]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[make]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[make]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[finger]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[finger]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[openssh-clients]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[openssh-clients]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[traceroute]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[traceroute]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[htop]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[htop]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[tcpdump]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[tcpdump]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[wget]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[wget]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[screen]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[screen]: Evaluated in 0.00 seconds Info: /Stage[main]/Yum/Exec[yum-clean-all]: Starting to evaluate the resource Info: /Stage[main]/Yum/Exec[yum-clean-all]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[vim-common]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[vim-common]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[sysstat]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[sysstat]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[man]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[man]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[curl]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[curl]: Evaluated in 0.00 seconds Info: /Stage[main]/Yum/Package[yum-metadata-parser]: Starting to evaluate the resource Info: /Stage[main]/Yum/Package[yum-metadata-parser]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[vim-enhanced]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[vim-enhanced]: Evaluated in 0.00 seconds Info: /Stage[main]/Yum/Package[yum]: Starting to evaluate the resource Info: /Stage[main]/Yum/Package[yum]: Evaluated in 0.00 seconds Info: Class[Yum]: Starting to evaluate the resource Info: Class[Yum]: Evaluated in 0.00 seconds Info: Class[Common]: Starting to evaluate the resource Info: Class[Common]: Evaluated in 0.00 seconds Info: Class[Common]: Starting to evaluate the resource Info: Class[Common]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[telnet]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[telnet]: Evaluated in 0.00 seconds Info: /File[/root/.ssh]: Starting to evaluate the resource Info: /File[/root/.ssh]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[pbzip2]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[pbzip2]: Evaluated in 0.00 seconds Info: /Schedule[never]: Starting to evaluate the resource Info: /Schedule[never]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[lsof]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[lsof]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[sudo]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[sudo]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[bc]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[bc]: Evaluated in 0.00 seconds Info: /File[/root/.vimrc]: Starting to evaluate the resource Info: /File[/root/.vimrc]: Evaluated in 0.00 seconds Info: /Filebucket[puppet]: Starting to evaluate the resource Info: /Filebucket[puppet]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[nc]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[nc]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[pigz]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[pigz]: Evaluated in 0.00 seconds Info: /Schedule[weekly]: Starting to evaluate the resource Info: /Schedule[weekly]: Evaluated in 0.00 seconds Info: Node[basenode]: Starting to evaluate the resource Info: Node[basenode]: Evaluated in 0.00 seconds Info: Node[basenode]: Starting to evaluate the resource Info: Node[basenode]: Evaluated in 0.00 seconds Info: /Schedule[puppet]: Starting to evaluate the resource Info: /Schedule[puppet]: Evaluated in 0.00 seconds Info: Class[Csapiclient]: Starting to evaluate the resource Info: Class[Csapiclient]: Evaluated in 0.00 seconds Info: Csapiclient::Addpfrule[forwardTCP324]: Starting to evaluate the resource Info: Csapiclient::Addpfrule[forwardTCP324]: Evaluated in 0.00 seconds Info: Csapiclient::Addpfrule[forwardTCP324]: Starting to evaluate the resource Info: Csapiclient::Addpfrule[forwardTCP324]: Evaluated in 0.00 seconds Info: Node[puppet30client]: Starting to evaluate the resource Info: Node[puppet30client]: Evaluated in 0.00 seconds Info: Class[Main]: Starting to evaluate the resource Info: Class[Main]: Evaluated in 0.00 seconds Info: /Stage[main]/Centos/Package[augeas]: Starting to evaluate the resource Info: /Stage[main]/Centos/Package[augeas]: Evaluated in 0.00 seconds Info: /File[/etc/profile.d/raimunds_favorite_bash_prompt.sh]: Starting to evaluate the resource Info: /File[/etc/profile.d/raimunds_favorite_bash_prompt.sh]: Evaluated in 0.09 seconds Info: /Stage[main]/Centos/Replace_line[Set_default_global_HISTSIZE]/Exec[/bin/sed -i -r -e 's/HISTSIZE=1000/HISTSIZE=1000000/' /etc/profile]: Starting to evaluate the resource Info: /Stage[main]/Centos/Replace_line[Set_default_global_HISTSIZE]/Exec[/bin/sed -i -r -e 's/HISTSIZE=1000/HISTSIZE=1000000/' /etc/profile]: Evaluated in 0.06 seconds Info: Replace_line[Set_default_global_HISTSIZE]: Starting to evaluate the resource Info: Replace_line[Set_default_global_HISTSIZE]: Evaluated in 0.00 seconds Info: Class[Centos]: Starting to evaluate the resource Info: Class[Centos]: Evaluated in 0.00 seconds Info: /Stage[main]/Puppet::Client/Package[puppet]: Starting to evaluate the resource Info: /Stage[main]/Puppet::Client/Package[puppet]: Evaluated in 0.00 seconds Info: /Stage[main]/Puppet::Client/Service[puppet]: Starting to evaluate the resource Info: /Stage[main]/Puppet::Client/Service[puppet]: Evaluated in 0.05 seconds Info: Class[Puppet::Client]: Starting to evaluate the resource Info: Class[Puppet::Client]: Evaluated in 0.00 seconds Info: Stage[main]: Starting to evaluate the resource Info: Stage[main]: Evaluated in 0.00 seconds Finished catalog run in 1.87 seconds
This again took like three minutes. When I drop the CSApiClient entry it runs quick, then the timing appears right. I assume the Cloudstack API takes agaes to respond and that's where things hang. As this is evaluated on the server, I assume the cataloge compilation (and therefore the retrieval also) is taking ages. The stuff that happens on the client appears to be quick. Cheers, Ray Am Dienstag, 23. Oktober 2012 16:20:25 UTC+2 schrieb Ray: > > Hi, > > I want Puppet to talk to the CloudStack API. CloudStack has many > asynchronous API calls and Puppet's catalog run tends to expire even during > simple tasks such as adding port forwarding rules: > > root@puppet30client:~# puppet agent --test > Info: Retrieving plugin > Info: Loading facts in /var/lib/puppet/lib/facter/centos_version.rb > Info: Loading facts in /var/lib/puppet/lib/facter/network-bonds.rb > Info: Loading facts in /var/lib/puppet/lib/facter/powerstates.rb > Info: Loading facts in /var/lib/puppet/lib/facter/software_raid.rb > Info: Loading facts in /var/lib/puppet/lib/facter/centos-version.rb > > Error: Could not retrieve catalog from remote server: execution expired > Warning: Not using cache on failed catalog > Error: Could not retrieve catalog; skipping run > root@puppet30client:~# > > > When I grant the puppetrun more time than the default 2 minutes, it comes > back successfully: > > root@puppet30client:~# puppet agent --test --configtimeout 5m > Info: Retrieving plugin > Info: Loading facts in /var/lib/puppet/lib/facter/centos_version.rb > Info: Loading facts in /var/lib/puppet/lib/facter/network-bonds.rb > Info: Loading facts in /var/lib/puppet/lib/facter/powerstates.rb > Info: Loading facts in /var/lib/puppet/lib/facter/software_raid.rb > Info: Loading facts in /var/lib/puppet/lib/facter/centos-version.rb > > Info: Caching catalog for puppet30client.swisstxt.ch > Info: Applying configuration version '1351000748' > Finished catalog run in 1.88 seconds > root@puppet30client:~# > > (Don't believe the 1.88 seconds - this run took about three minutes(!)) > > > My question is: What is the best practise to let Puppet interact with the > CloudStack API? > > > What I did: > > 1) Created a csapiclient module and dumped a custom function: > /etc/puppet/modules/csapiclient/lib/puppet/parser/functions/add_pf_rule.rb > > require File.join(File.dirname(__FILE__), 'cloudstack_client') > > module Puppet::Parser::Functions > newfunction(:add_pf_rule) do |args| > apiurl = args[0] > apikey = args[1] > secretkey = args[2] > proto = args[3] > pubPort = args[4] > privPort = args[5] > ipId = args[6] > vmId = args[7] > > cs = CloudstackClient::Connection.new(apiurl,apikey,secretkey) > > cs.create_port_forwarding_rule( ipId, privPort, proto, pubPort, vmId) > end > end > > 2) Wrote a defined resource that calls the Ruby function: > > define addPFRule( $ipId, $vmId, $proto, $pubPort, $privPort ) { > # Pass arguments to Ruby function… > add_pf_rule( $apiUrl, $apiKey , $secretKey, $proto, $pubPort, > $privPort, $ipId, $vmId ) > } > > 3) Call the define from a recipe, feeding it with parameters. > > Is this a viable way to go or are there better/simpler/more beautiful > solutions to talk to CloudStack? > > Cheers, > Raiy > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/nBxpu-11DlgJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.