fedora-classroom
LOGS
17:32:05 <adimania> #startmeeting
17:32:05 <zodbot> Meeting started Thu Jan 26 17:32:05 2012 UTC.  The chair is adimania. Information about MeetBot at http://wiki.debian.org/MeetBot.
17:32:05 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic.
17:32:32 <adimania> #topic Introduction To Puppet
17:33:22 <pandaconstantin> Hi guys !
17:33:48 <adimania> Puppet is a configuration management tool. It can manage the entire life cycle of your system from starting till the time you retire your box.
17:34:51 <adimania> You can manage several hundred, possibly thousands of servers.
17:35:00 <FranciscoD> nice!
17:35:03 <adimania> Now let us start the setting up process.
17:35:15 <adimania> #topic Setting up puppet master
17:35:42 <adimania> Puppet is usually used in simple master slave configuration.
17:36:21 <adimania> Your puppet server will run the master and each node which is to be managed will use puppet client to make the changes to a desirable state.
17:37:00 <adimania> First requirement for puppet to work properly is to set a proper hostname in fqdn format.
17:37:15 <adimania> Anything like localhost.localdoamin should work.
17:37:29 <FranciscoD> fqdn = fully qualified domain name
17:37:34 * FranciscoD looks at adimania for confirmation
17:37:42 * adimania nods
17:37:54 <bogor> admania, So it need a working dns system ?
17:38:05 <adimania> command: # hostname localhost.localdomain
17:38:17 <rino> ok with this is good to start..
17:38:43 <rino> but you can configure in a real enviroment with dns and all stuff..
17:38:44 <adimania> bogor, ideally yes but you can put the ip and name in /etc/hosts and that would work fine.
17:39:25 <adimania> is everybody done with the setting up of hostname?
17:39:31 <thunderbirdtr> yes
17:39:34 * ctria nods
17:39:35 <rino> yes
17:39:57 <dashcom> yes
17:40:03 <FranciscoD> mines already set to ankur.pc, how that is sufficient adimania
17:40:04 <FranciscoD> ?
17:40:17 <adimania> FranciscoD, yes. that will do.
17:40:23 <adimania> cool. next up, we'll install puppet master and client.
17:41:07 <adimania> FYI, right now my aim is to manage the localhost.
17:41:19 <adimania> we'll add more nodes at a later stage.
17:41:22 <adimania> command: # yum install puppet-server puppet
17:41:47 <pingou> do the machines have to be on the same (sub)network ?
17:42:10 <rino> and what happen with firewall? shall i need to add some rule?
17:42:21 <adimania> pingou, it is not mandatory as long as the names resolve properly.
17:42:45 <pingou> adimania: so safety is assured ?
17:42:48 <adimania> rino, you need to whitelist port 8140
17:42:58 <rino> ok
17:43:13 <adimania> pingou, what kind of safety are we talking about here?
17:43:55 <adimania> rino, I think "--dport 8140 -j ACCEPT" should do the trick.
17:43:59 <pingou> adimania: well the slave contacts the master, I don't want the master to give away information to any host
17:45:01 * casep installation done
17:45:03 <adimania> ah! yes, it is perfectly safe in that regard. puppet master do not answer to rogue hosts
17:45:33 <adimania> pingou, if there is no entry about the host in master then a 400 not found error is returned.
17:45:49 <adimania> is puppet and puppet-master installed for everyone?
17:45:56 <rino> yes
17:45:58 <thunderbirdtr> yes
17:46:01 <pingou> adimania: thanks for the info
17:46:12 <ctria> ack
17:46:18 <adimania> pingou, no problem. :)
17:47:11 <FranciscoD> installed++
17:47:19 * shaon nods
17:47:40 <adimania> okay. now get into /etc/puppet and have a good look at the files present there
17:47:45 <dashcom> I'm getting "no package available"
17:47:57 <dashcom> which repo?
17:48:10 <gnat42> dashcom: regular fedora repos
17:48:14 <gnat42> puppet-server
17:48:17 <gnat42> I think its called
17:48:33 <FranciscoD> dashcom: what fedora?
17:48:47 <dashcom> ok, I'll use Fedora vm then (was using CentOS)
17:48:54 <adimania> dashcom, what repos are you having on your machine?
17:48:57 <gnat42> dashcom: centos has it in epel
17:49:00 <rino> yum repolist
17:49:00 <adimania> dashcom, you can use epel
17:49:08 <dashcom> ok
17:49:15 <ctria> dash com CentOS is fine if you enable EPEL
17:49:33 <adimania> dashcom, make sure that rpmforge is not enabled.
17:50:08 <dashcom> for now I'll just install with Fedora
17:50:08 <adimania> rpmforge has a more recent version. let us stay on the same version  for this classroom.
17:50:36 <dashcom> (install finished)
17:50:52 <adimania> okay. moving ahead, let us look at /etc/puppet/puppet.conf
17:51:05 <rino> which version is ok?
17:51:29 <adimania> I prefer 2.6.x on my production server.
17:51:37 <thunderbirdtr> puppet-2.6.13-2.fc16.noarch ?
17:51:54 <adimania> 2.7.x is very recent and might need some big fixes.
17:52:02 <adimania> thunderbirdtr, your version is fine.
17:52:13 <thunderbirdtr> thank you
17:52:24 <adimania> thunderbirdtr, no problem. :)
17:52:55 <adimania> if you have a look at the puppet.conf, it has two sections defined there.
17:53:46 <adimania> [main] is the one with all the general variables. they are well commented so you can read them for an explanation
17:54:21 <adimania> We would be interested in [agent] section at a later point of this session.
17:54:45 <adimania> now start the master.
17:54:57 <adimania> command: # service puppetmaster start
17:55:19 * casep done
17:55:23 <adimania> i hope someone will report a problem ;)
17:55:28 <rino> yes
17:55:33 <rino> Starting puppetmaster: Could not prepare for execution: Cannot save ca; parent directory /var/lib/puppet/ssl/ca does not exist
17:55:48 <FranciscoD> systemctl start puppet.service
17:55:49 <adimania> rino, that is what I was looking for :)
17:55:56 <FranciscoD> systemctl status puppet.service
17:56:07 * FranciscoD didnt have a problem
17:56:12 <FranciscoD> is that wrong? :O
17:56:27 <adimania> selinux :)
17:56:27 <rino> Starting puppetmaster: Could not prepare for execution: Cannot save ca; parent directory /var/lib/puppet/ssl/ca does not exist
17:56:44 <rino> setenforce 0 :)
17:56:46 <rino> work
17:56:50 <adimania> rino, you have selinux enabled I believe.
17:56:53 <ctria> started fine here...
17:56:55 * FranciscoD has too
17:57:07 <thunderbirdtr> I have selinux enabled too ? but no problem ?
17:57:12 <ctria> hm no selinux here :)
17:57:18 <muep> here no problem either
17:57:22 <rino> I do not know why try to set some ssl ca
17:57:28 <FranciscoD> thunderbirdtr: high 5 :P
17:57:44 <muep> despite having selinux in enforcing mode
17:57:49 <rino> # Where SSL certificates are kept. # The default value is '$confdir/ssl'. ssldir = $vardir/ssl
17:57:58 <rino> ssldir is uncommentd
17:58:06 <rino> in the master file puppet
17:58:12 <adimania> so ca is setup because puppet will sign each node
17:58:31 <rino> Do i need ca ?
17:58:42 <rino> because it is on the puppet.conf
17:58:49 <adimania> yes. puppet will sign each and every node.
17:59:17 <adimania> any node which is not certified will not be able to communicate with puppet master
17:59:19 <rino> ok now maybe it was created
18:00:07 <adimania> you can verify that ca was created by doing a "ls /var/lib/puppet/ssl/ca"
18:00:25 <rino> yes know i have it
18:00:28 <rino> now
18:00:32 <muep> was the port to whitelist earlier a tcp or an udp one?
18:00:42 <adimania> it should have the  keys and certs
18:00:45 <adimania> muep, tcp
18:00:53 <muep> thanks
18:01:31 <adimania> now let us start our first puppet execution.
18:01:55 <adimania> command: # puppet agent -t
18:02:05 <adimania> I hope someone will report an error again.
18:02:14 <ctria> err: Could not retrieve catalog from remote server: getaddrinfo: Name or service not known
18:02:14 <ctria> warning: Not using cache on failed catalog
18:02:14 <ctria> err: Could not retrieve catalog; skipping run
18:02:21 <rino> on server?
18:02:32 <rino> same error
18:02:35 <thunderbirdtr> err: Could not retrieve catalog from remote server: getaddrinfo: Name or service not known
18:02:35 <thunderbirdtr> warning: Not using cache on failed catalog
18:02:36 <thunderbirdtr> err: Could not retrieve catalog; skipping run
18:02:42 <adimania> rino, no this has to fired at client.
18:02:47 <FranciscoD> adimania: http://fpaste.org/yKLk/
18:02:53 <ctria> it check for puppet as hostname?
18:02:55 <muep> same error here, with server and client being in localhost
18:03:23 <casep> same over here
18:03:24 <rino> which packet do i need on client?
18:03:31 <adimania> ctria, thunderbirdtr : there are two possible reasons.
18:03:48 <adimania> 1. you are not running the client as a sudoer.
18:04:20 <adimania> 2. your cert is not signed.
18:04:33 <ctria> both look fine there but:
18:04:45 <rino> what i need to run in client?
18:04:50 <thunderbirdtr> I select 1 What I need for client ?
18:04:53 <ctria> in certificate it added: DNS:puppet, DNS:puppet.domain
18:05:00 <ctria> in the certificate
18:05:08 <ctria> does it require (by default) puppet as hostname?
18:05:16 <dashcom> I got "could not request cert:  connection timed out"
18:05:55 <rino> adimania: do i need run puppetserver on client?
18:06:03 <adimania> okay. now as a sudoer fire : # puppet agent -t --server=localhost.localdomain
18:06:25 <adimania> replace localhost.localdomain with the fqdn you used.
18:06:27 <ctria> hm adding puppet to /etc/hosts changed it to:
18:06:28 <ctria> err: Could not retrieve catalog from remote server: Connection refused - connect(2)
18:06:28 <ctria> warning: Not using cache on failed catalog
18:06:28 <ctria> err: Could not retrieve catalog; skipping run
18:06:43 <adimania> rino, no. only client is need
18:06:50 <adimania> s/need/needed
18:06:57 <FranciscoD> adimania: it aint saying anything, so I think its running
18:07:06 <FranciscoD> nah
18:07:07 <FranciscoD> failed
18:07:11 <rino> adimania: which package I need on client?
18:07:21 <adimania> rino, yum install puppet
18:07:27 <rino> ok
18:07:36 <thunderbirdtr> info: Caching catalog for fedora.hp.dv6.pavilion.3031.et
18:07:36 <thunderbirdtr> info: Applying configuration version '1327601228'
18:07:37 <thunderbirdtr> info: Creating state file /var/lib/puppet/state/state.yaml
18:07:37 <thunderbirdtr> notice: Finished catalog run in 0.01 seconds
18:07:37 * casep notice: Finished catalog run in 0.01 seconds :)
18:07:40 <thunderbirdtr> :))
18:07:54 <FranciscoD> what?!
18:07:56 <FranciscoD> grrr
18:07:59 <adimania> thunderbirdtr, casep: excellent
18:08:05 <FranciscoD> http://fpaste.org/IXux/
18:08:06 <rino> could someone paste or link the /etc/hosts for client and server
18:08:09 <FranciscoD> :(
18:08:41 <adimania> for those who are still seeing the error: create a magical file /etc/puppet/manifests/site.pp
18:09:01 <muep> the error about getaddrinfo failing?
18:09:05 <ctria> notice: Finished catalog run in 0.02 seconds
18:09:33 <rino> still error
18:09:36 <adimania> muep, getaddrinfo usually means that you are not running it as a sudoer or the name is not resolving.
18:09:37 <ctria> puppet agent -t --server=`hostname -f`
18:09:38 <jpill> Hi, am i late?
18:09:43 <ctria> this did it for me
18:09:51 <muep> adimania: not enough if I run it as root?
18:09:56 <rino> yes but client and server have localhost.localdomian
18:09:56 <FranciscoD> adimania: whats a magical file?
18:09:58 <FranciscoD> :O
18:10:01 <adimania> muep, root is good
18:10:06 <rino> and both to 127.0.0.1
18:10:09 <adimania> FranciscoD, will come to that
18:10:16 <FranciscoD> adimania: so, just touch that file?
18:10:17 <muep> adimania: ok, then I suspect my /etc/hosts is somehow broken
18:10:23 <adimania> FranciscoD, yes.
18:10:43 <adimania> muep, can you fpaste the snippet from /etc/hosts?
18:10:44 <FranciscoD> created
18:11:02 <rino> someone can paste the etc/hosts client and server
18:11:04 <adimania> also check is the cert is waiting to be signed. command is:
18:11:15 <muep> adimania: whole /etc/hosts: http://fpaste.org/Brep/
18:11:23 <adimania> command: # puppet cert --list
18:11:51 <thunderbirdtr> rino, http://fpaste.org/r9ic/
18:12:10 <jpill> Will be log for this session?
18:12:15 <FranciscoD> adimania: http://fpaste.org/wVjJ/
18:12:17 <FranciscoD> okay?
18:12:21 <FranciscoD> jpill: yes
18:12:25 <FranciscoD> there will be a log
18:12:26 <jpill> Thanks
18:12:33 <rino> thanks
18:13:15 <thunderbirdtr> FranciscoD, I see nothing  ?
18:13:19 <adimania> FranciscoD, try running "puppet agent -t --server=<fqdn> --waitforcert 60"
18:13:45 <FranciscoD> adimania: can i just use 127.0.0.1?
18:13:48 <FranciscoD> as fdqn?
18:13:58 <FranciscoD> its there in /etc/hosts
18:14:31 <adimania> FranciscoD, I don't think so
18:14:49 <adimania> certs is signed for fqdn not ip
18:15:17 <FranciscoD> hrm
18:15:24 <rino> still error..
18:15:24 <rino> :S
18:15:26 <FranciscoD> adimania: how do i confirm my fdqn is set?
18:15:30 <muep> hey, it suddenly works now :-)
18:15:31 <FranciscoD> i think thats where its screwing up
18:15:36 <FranciscoD> muep: what did you do?
18:15:38 <adimania> fire: #hostname
18:16:03 <dashcom> adimania:  I tried the waitforcert flag and now I get no route to host (but I can ping fine)
18:16:07 <FranciscoD> shows it correctly
18:16:10 <rino> in both hostname localhost.localdomain
18:16:23 <rino> dashcom: same problem
18:16:25 <muep> FranciscoD: tried again with --server=localhost, then it gave a different error which complained about different hostname than what is in the cert
18:16:52 <muep> and then tried yet again with the fqdn I had in /etc/hosts and now it seems to work
18:17:03 <adimania> okay. simple test. "ping <fqdn>"
18:17:11 <adimania> it must be pingable
18:17:26 <rino> yes but it will work because is loopback for localhost.localdomain
18:17:28 <FranciscoD> nah, aint working
18:17:37 <muep> does it also need to be reverse resolvable by the server or something?
18:17:40 <adimania> if it is not, then something is wrong with your /etc/hosts
18:17:43 <FranciscoD> yep, pingable
18:17:47 <thunderbirdtr> I can ping
18:18:07 * FranciscoD scratches head
18:18:15 <adimania> muep, I don't think so.
18:18:27 <ctria> FranciscoD, try:# ping `hostname -f`
18:18:56 <FranciscoD> ctria: yup, can ping
18:19:12 <ctria> then use for fqdn the output of # hostname -f
18:19:21 <FranciscoD> ctria: http://fpaste.org/izmo/
18:19:25 <FranciscoD> i am
18:19:39 <FranciscoD> and still get the error
18:19:52 <dashcom> ping both directions works
18:19:52 <rino> someone can check my hosts file
18:19:54 <rino> http://fpaste.org/BBwK/
18:20:15 <FranciscoD> both directions?
18:20:20 * FranciscoD is a little confused
18:20:22 <adimania> FranciscoD, your hostname is set to ankur.pc?
18:20:28 <FranciscoD> adimania: thats what hostname says
18:20:37 <FranciscoD> so i assume yes
18:21:01 <adimania> and from http://fpaste.org/IXux/ I see that you are firing fqdn as localhost.localdoamin
18:21:09 <FranciscoD> i tried both
18:21:10 <FranciscoD> :)
18:21:20 <dashcom> both directions:  I'm making sure my vm and it's host can get to each other
18:22:11 <adimania> rino, nope. that won't work.
18:22:20 <rino> what i need to change?
18:22:33 <rino> redirect it to ip instead of loopback
18:22:45 <adimania> see your client and server have the same name. unless they are the same machine, they should not have the same name
18:23:11 <rino> do you have a /etc/hosts example
18:23:17 <adimania> that is why I said that I'll manage localhost first and add nodes later.
18:23:43 <adimania> Let us manage localhost for now. I'll tell you how to add nodes after some time.
18:24:08 <rino> ok in server works..
18:24:11 <rino> but client no
18:24:26 <ctria> rhino server and client should be the same node for now
18:24:26 <adimania> on client it won't work for you at this stage.
18:24:50 <rino> ahh i asked before where run it and i understand client :S
18:24:55 <rino> sorry ;S
18:25:04 <adimania> other than FranciscoD who else is facing issues?
18:25:21 <dashcom> rino:  whatever your ip is (#ifconfig), set that to your localhost.domain in /etc/hosts, instead of using just 127.0.0.1
18:25:37 <thunderbirdtr> adimania, nope...
18:25:39 <rino> in server?
18:26:00 <dashcom> yes
18:26:01 <ctria> adimania, i get an empty reply from cert --list but everything else works fine.
18:26:20 <adimania> ctria, that is okay. empty reply means that cert is signed.
18:26:25 <thunderbirdtr> adimania, I get reply too
18:26:26 <rino> which commando to list cert
18:26:32 <thunderbirdtr> adimania, Oh good
18:26:44 <thunderbirdtr> rino, puppet cert --list
18:26:52 <rino> thk
18:27:22 <adimania> okay. now let us move ahead.
18:27:35 <adimania> FranciscoD, will debug your issue for sure :)
18:28:17 <muep> puppet agent -t requires the --server argument to work. should the server hostname be stated in puppet.conf or some other place?
18:28:20 <FranciscoD> sure thing
18:28:24 * FranciscoD is googling etc
18:28:34 <muep> so that I'd not need to always specify --server
18:28:35 <adimania> so puppet run requires a magical file known as site.pp
18:28:54 <adimania> muep, yes. we can (and we will) do that
18:29:06 <muep> adimania: thanks. I'll wait until you get to that then
18:30:01 <adimania> actually we can do it right now.
18:30:18 <adimania> everyone, please open up /etc/puppet/puppet.conf
18:30:49 <adimania> now in your agent section append a line saying:
18:30:59 <adimania> server = <fqdn>
18:31:18 <casep> done
18:31:45 <muep> seems to work
18:31:51 <thunderbirdtr> done
18:31:53 <adimania> now restart the puppetmaster and try running "puppet agent -t" without any server arg
18:32:06 <adimania> actually I am not sure if restart is required.
18:32:10 <adimania> can someone confirm that?
18:32:20 <muep> adimania: it started working here without a restart
18:32:21 <ctria> works fine
18:32:29 <adimania> ah! good :)
18:32:37 <ctria> (hm i didn't restart server too :) )
18:32:37 <thunderbirdtr> Perfect :)
18:32:54 <adimania> okay. moving back to the magical site.pp file.
18:33:03 <rino> work :)
18:33:15 <adimania> open it in your favorite test editor.
18:33:20 * adimania goes for vim
18:34:11 <dashcom> what's path to site.pp again, please?
18:34:11 <rino> where is it ?
18:34:17 <rino> or where i need create it?
18:34:31 <thunderbirdtr> /etc/puppet/manifests create here
18:34:40 <dashcom> ty
18:35:04 <thunderbirdtr> dashcom, You're welcome
18:35:10 <adimania> #topic Puppet manifests and modules
18:36:04 <adimania> now puppet has two important config directories. one is /etc/puppet/manifests and other is /etc/puppet/modules
18:36:20 <adimania> they might not be pre-created.
18:36:33 <muep> the modules one seems to not be
18:37:06 <adimania> modules is the one where you define the config per application.
18:37:18 <adimania> muep, that is absolutely fine.
18:37:59 <adimania> you can have one module for apache, maybe another for mysql and so on
18:38:25 <adimania> manifests is where you generally define nodes and which node include what module.
18:38:47 <adimania> please keep in mind that this is the best practice and not a rule.
18:39:19 <adimania> Now check out http://fpaste.org/fgdV/
18:39:41 <rino> what happened with site.pp, is empty
18:40:20 <adimania> rino, it would be
18:40:28 <rino> pok
18:40:40 <adimania> my bad, have a look at http://fpaste.org/9dLX/
18:40:55 <adimania> and make your site.pp look like it.
18:41:27 <rino> so just paste this info in site.pp thar is on manifiest ?
18:41:29 <adimania> as always replace localhost.localdoamin with the fqdn you are using
18:41:41 <adimania> rino, yes
18:42:13 <adimania> now. here we have defined a node and a class
18:42:41 <adimania> a node is basically a client machine which in this case is itself.
18:42:52 <adimania> a class is where you define the configs.
18:43:02 <adimania> and the node will include that class.
18:43:27 <thunderbirdtr> adimania, Can we add multiple machine in same list or crete for each one ?
18:43:58 <adimania> as the number of nodes keep on increasing, you can split the file into several files or you can use regex :)
18:44:58 <thunderbirdtr> adimania, Thank you
18:45:04 <adimania> just remember that site.pp is the main file. if you split it, then you need to include the other files by add "include <newfile>" in the beginning of the file
18:45:17 <gnat42> thunderbirdtr: I have a rule node /^ucmc\d+\.noblet\.ca$/
18:45:21 <adimania> thunderbirdtr, you are welcome :)
18:45:27 <gnat42> which matches a naming pattern
18:46:23 <adimania> gnat42, yes. regex helps a lot. your files look a lot cleaner :)
18:46:44 <gnat42> adimania: if you think regex looks clean ;) and can remember what its looking for :D
18:46:53 <adimania> is everyone done with setting up site.pp?
18:47:00 <rino> yes just you paste it
18:47:04 <thunderbirdtr> Done
18:47:09 <muep> done
18:47:14 * ctria doen
18:47:23 <adimania> gnat42, hostnames don't tend to be that messy (in my limited experience)
18:47:38 <gnat42> true
18:47:47 <adimania> okay. the node section is self explained.
18:48:17 <dashcom> done
18:48:57 <adimania> in class test we are creating a resource of type "file" with name "/test" and ensuring it to be a directory.
18:49:02 <adimania> makes sense?
18:49:19 <rino> yes it will be on root directory
18:49:28 <adimania> this will create a directory /test on your machine.
18:49:41 <adimania> you can modify the path if you want.
18:49:47 <rino> ok puppet will create it?
18:49:47 <adimania> rino, correct.
18:49:50 <adimania> yes.
18:50:11 <dashcom> makes sense
18:50:21 <adimania> if every one is done with site.pp then run "puppet agent -t"
18:50:26 <ctria> if i put /test/test2 will it require me to also mention /test ?
18:50:49 * casep notice: /Stage[main]/Test/File[/test]/ensure: created :)
18:51:06 <thunderbirdtr> notice: /File[/test]/ensure: created
18:51:07 <thunderbirdtr> notice: Finished catalog run in 0.04 seconds
18:51:14 * ctria notice: Finished catalog run in 0.04 seconds
18:51:15 <rino> work .)
18:51:34 * ctria but mkdir /test is much quicker :P
18:51:45 <dashcom> (still getting same error from before)
18:52:07 <adimania> ctria, true but imagine creating the directory on 1000 servers.
18:52:47 <rino> yes but do you need to run puppet agent -t in 1000 server?
18:53:10 <adimania> ctria, to give /test/test2 the only pre-requisite is that /test is created.
18:53:20 <gnat42> rino: the puppet agent usually runs on a 30 minute cycle
18:53:26 <gnat42> if you ran service puppetd start it would do that
18:53:44 <adimania> rino, puppet agent is available as a service. so you need to fire it, it fires after itself every 30 minutes by default.
18:53:57 <ctria> adimania, sure, i already manage about that number of nodes
18:54:04 <rino> ok and will connect with each node
18:54:07 <thunderbirdtr> adimania, How can we change time *
18:54:33 <adimania> thunderbirdtr, time?
18:54:41 <ctria> so the only issue is how you bootstrap it� kickstart?
18:54:44 <adimania> didn't get you
18:54:51 <shaon> so if I want to add more packages, then I just add the package names into site.pp and wait 30min?
18:54:52 <gnat42> adimania: thunderbirdtr: puppet.conf run_interval or something?
18:54:54 <thunderbirdtr> adimania,  refresh cycle
18:55:36 <thunderbirdtr> gnat42, run_interval yes
18:56:30 <adimania> gnat42, thunderbirdtr yes, run_interval is the option to be appended to puppet.conf
18:56:40 <adimania> or you can use cron, if you prefer,
18:57:25 <gnat42> thunderbirdtr: in my situation I have a script that runs when NetworkManager detects functioning internet, and then runs puppet and then starts the agent, then when NM detects network is down it turns the agent off...
18:57:36 <adimania> shaon, there are ways to trigger puppet run remotely even if it is not scheduled. I recommend you to have a look at mcollecitve after this session
18:58:15 <adimania> gnat42, that sound cool :)
18:58:28 <gnat42> adimania: I'll post the script...
18:58:37 <thunderbirdtr> gnat42, Thank you That's really good one
18:59:15 * shaon nods
18:59:15 <adimania> now let us create out first module.
18:59:42 <adimania> I have created a basic one at https://gitorious.org/beginner-puppet/beginner-puppet/trees/master/
18:59:47 <adimania> Please have a look.
19:00:39 <adimania> download it and place the apache directory inside the modules dir.
19:00:58 <gnat42> http://fpaste.org/wtwh/ place that file in /etc/NetworkManager/dispatcher.d/XX-puppet where XX is the order you want it run (I use 50)
19:01:14 <adimania> /etc/puppet/modules/apache
19:01:14 <gnat42> oh
19:01:17 <gnat42> and change that ping line...
19:02:05 <netSys> hi
19:02:16 <adimania> /etc/puppet/modules/apache?
19:02:24 <adimania> is everyone done?
19:02:28 <adimania> netSys, hello
19:02:38 <casep> think so
19:03:06 <rino> no
19:03:08 <casep> ls /etc/puppet/modules/apache/manifests/            init.pp  install.pp  service.pp
19:03:18 <adimania> do a "tail -n 20 /etc/puppet/module/apache/*"
19:03:20 <rino> so the correct path is moodules apache ?
19:03:29 <adimania> nope. sorry, my bad
19:03:41 <adimania> casep gave the correct path
19:03:42 <rino> where a i need to download it?
19:03:47 <rino> ok
19:04:36 <adimania> do a "tail -n 20 /etc/puppet/modules/apache/manifests/"
19:04:49 <adimania> actually "tail -n 20 /etc/puppet/modules/apache/manifests/*"
19:05:11 <adimania> this will show you the content of all the files.
19:05:31 <adimania> the most important file for any module is manifests/init.pp
19:05:47 <adimania> check out what is says.
19:05:53 <rino> how i can faster from the web that you gave us
19:06:39 <adimania> rino, on your right, there is a link to download as tar.gz
19:06:40 <thunderbirdtr> adimania, http://fpaste.org/egis/
19:06:41 <rino> using copy paste..
19:06:46 <rino> ahh :S
19:07:04 <adimania> thunderbirdtr, perfect.
19:08:01 <adimania> the init.pp file is just telling puppet to include two of the sub classes which is install and service.
19:09:01 <dashcom> wget --> internal server error
19:09:18 <adimania> now puppet is capable of managing several kind of machines including all major linux distros, bsd, solaris and windows.
19:09:51 <adimania> dashcom, i think you need to click on the url in your browser.
19:10:01 <adimania> tarball is dynamically generated.
19:10:15 <ctria> # wget https://gitorious.org/beginner-puppet/beginner-puppet/archive-tarball/master --no-check-certificate
19:10:28 <dashcom> kk
19:10:30 <ctria> # mv master master.tar.gz
19:10:49 <thunderbirdtr> or use link git://gitorious.org/beginner-puppet/beginner-puppet.git
19:11:34 <adimania> now should we have a look at install class?
19:12:03 <thunderbirdtr> If everybody is ready ? yes
19:12:31 <dashcom> yes
19:12:35 <adimania> okay. let us have a look.
19:13:10 <adimania> this class will install apache on your machine.
19:13:37 <rino> sorry what?
19:13:37 <adimania> I picked this example because apache has different names across the distros.
19:13:54 <adimania> rino, open up install.pp
19:14:04 <rino> ok
19:14:55 <adimania> so we are going to install a resource of type package. the name changes across the distributions.
19:15:22 <rino> ok just running agent again?
19:15:26 <adimania> so on the basis of your operating system, the name will be decided.
19:15:57 <adimania> rino, no. I am not talking about agent. I am talking about the class in install.pp
19:16:20 <adimania> nothing will happen if you run agent at this point.
19:16:24 <rino> ok just understanding the content
19:16:44 <adimania> is this class understood?
19:17:11 <adimania> I am expecting questions here.
19:17:23 <rino> yes
19:17:24 <ctria> does this run all the time?
19:17:39 <ctria> i mean every X minutes it will do this check and install the package if needed?
19:17:40 <rino> Do i need to have configured other repos?
19:18:16 <adimania> ctria, no and the reason is interesting.
19:18:31 <dashcom> so it has user provide os and installs accordingly
19:18:36 <adimania> rino, yes. httpd should be available in one of your repos
19:18:56 <dashcom> or does it just retrieve that maybe
19:19:14 <adimania> dashcom, user needs to provide the os in this case since the package name was different across the distros
19:19:27 <dashcom> ok
19:20:07 <adimania> so if you want mysql, you need not do this or if you have only fedora, rhel and centos to manage and not debian or its derivatives.
19:20:59 <adimania> okay now I want all of you to fire a command "facter" on your terminals.
19:21:15 <thunderbirdtr> for client  ?
19:21:20 <adimania> yes.
19:21:45 <rino> ok on server because i do not have client configured
19:22:03 <adimania> rino, your server and client are same.
19:22:12 <ctria> hm nice
19:22:13 <thunderbirdtr> I get my machine all info
19:22:16 <adimania> just fire the command. it will work fine.
19:22:17 <thunderbirdtr> that's too long :)
19:22:51 <rino> ok the output is long ..
19:23:08 <adimania> ctria, this answers your previous question. puppet use this info to estimate that anything has changed or not.
19:23:33 <adimania> so if apache is installed, it won't try to install it on every run.
19:24:02 <rino> and if not?
19:24:17 <adimania> if anyone is interested, actually there are ways to store this info and create a nice inventory tool out of it. :)
19:24:34 <adimania> rino, if not then it'll install it.
19:24:38 <ctria> so it stateful interesting
19:24:42 <rino> not happened
19:24:52 <adimania> rino, what did not happened?
19:25:01 <rino> installation of httpd package
19:25:37 <adimania> yes. it won't happened right now. you have just placed the module. You still need to include it in your node.
19:25:47 <rino> :)
19:25:50 <adimania> now everyone, open up site.pp again.
19:26:12 <rino> ok
19:26:36 <casep> there
19:26:42 <adimania> just like there is an "include test", after that add "include apache"
19:27:03 <adimania> in next line.
19:27:15 <rino> done
19:27:46 <dashcom> ok
19:28:04 <thunderbirdtr> notice: /Stage[main]/Apache::Service/Service[apache]/ensure: ensure changed 'stopped' to 'running'
19:28:05 <thunderbirdtr> notice: /File[/test]/seltype: seltype changed 'etc_runtime_t' to 'default_t'
19:28:05 <thunderbirdtr> notice: Finished catalog run in 3.99 seconds
19:28:17 <thunderbirdtr> done
19:28:28 <rino> just add and then?
19:28:37 <adimania> it should look like http://fpaste.org/tfOm/
19:28:45 <casep> notice: /Stage[main]/Apache::Service/Service[apache]/ensure: ensure changed 'stopped' to 'running'
19:28:51 <adimania> after you do that, run "puppet agent -t"
19:29:08 <thunderbirdtr> done
19:29:19 <adimania> casep, thunderbirdtr : I guess you guys had httpd package already.
19:29:29 <rino> rr: /Stage[main]/Apache::Service/Service[apache]/ensure: change from stopped to running failed: Could not start Service[apache]: Execution of '/sbin/service httpd start' returned 1:  at /etc/puppet/modules/apache/manifests/service.pp:11
19:29:34 <rino> and I do not have it installed
19:29:49 <rino> still in process..
19:29:50 <adimania> rino, that is what i was looking for :)
19:29:58 <ctria> info: Applying configuration version '1327606167'
19:29:58 <ctria> err: /Stage[main]/Apache::Service/Service[apache]/ensure: change from stopped to running failed: Could not start Service[apache]: Execution of '/sbin/service httpd start' returned 1:  at /etc/puppet/modules/apache/manifests/service.pp:11
19:29:58 <ctria> notice: /Stage[main]/Apache::Install/Package[apache]/ensure: created
19:29:58 <ctria> notice: Finished catalog run in 11.10 seconds
19:29:58 <rino> great :)
19:30:00 <adimania> do not install it manually
19:30:06 <thunderbirdtr> I think we should delete :))
19:30:22 <adimania> rino, don't install apache manually
19:30:25 <rino> shall i need to stop the process ?
19:30:44 <rino> because i do not have any output the last is the error that i paste
19:30:58 <adimania> ctria, if you can run "rpm -qa|grep httpd", you'll see that httpd got installed.
19:31:09 <ctria> yeap
19:31:14 <casep> adimani: yep is pre-requisite for (gnome-user-share), could I just delete it and try it again?
19:31:14 <adimania> rino, wait for a minute.
19:31:18 <rino> ok
19:31:25 <rino> notice: /Stage[main]/Apache::Install/Package[apache]/ensure: created
19:31:25 <rino> notice: /File[/test]/seltype: seltype changed 'etc_runtime_t' to 'default_t'
19:31:27 <adimania> casep, sure
19:31:28 <rino> notice: Finished catalog run in 132.78 seconds
19:31:42 <rino> and installed :)
19:31:49 <adimania> rino, cool
19:32:15 <ctria> rino either my line or my node is faster :P
19:32:33 <adimania> now those who saw the error, it was because puppet tried to start the httpd process but it was not installed.
19:32:33 <rino> ajaj here in argentina the internet is not so good :S
19:32:42 <casep> notice: /Stage[main]/Apache::Install/Package[apache]/ensure: created
19:32:43 <casep> notice: /Stage[main]/Apache::Service/Service[apache]/ensure: ensure changed 'stopped' to 'running'
19:32:45 <muep> should it have started httpd, too?
19:32:46 <casep> cool
19:32:58 <thunderbirdtr> info: Caching catalog for fedora.hp.dv6.pavilion.3031.et
19:32:58 <thunderbirdtr> info: Applying configuration version '1327606035'
19:32:58 <thunderbirdtr> notice: /Stage[main]/Apache::Install/Package[apache]/ensure: created
19:32:58 <thunderbirdtr> notice: /Stage[main]/Apache::Service/Service[apache]/ensure: ensure changed 'stopped' to 'running'
19:32:58 <thunderbirdtr> notice: Finished catalog run in 20.14 seconds
19:33:03 <adimania> now if you run the puppet again, it'll start the httpd daemon.
19:33:14 <thunderbirdtr> I re-installed via puppet again
19:33:35 <adimania> thunderbirdtr, awesome. it is working for you then :)
19:33:46 <ctria> it did
19:33:56 <rino> notice: /Stage[main]/Apache::Service/Service[apache]/ensure: ensure changed 'stopped' to 'running'
19:33:59 <rino> notice: Finished catalog run in 3.20 seconds
19:34:22 <muep> http://fpaste.org/Bngm/
19:34:22 <rino> and is runnign :)
19:34:26 <thunderbirdtr> well I installed and run it in one time
19:34:32 <adimania> I would suggest you guys to go through puppet doc after the session
19:34:35 <adimania> #link http://docs.puppetlabs.com/guides/language_guide.html
19:34:42 <muep> failed to start for some reason, with the output as pasted above
19:34:54 <rino> that's all?
19:34:57 <adimania> muep, that is fine.
19:35:04 <adimania> rino. not yet :)
19:35:20 <rino> :)
19:35:37 <adimania> muep, it failed to start the httpd since there wasn't one to start.
19:35:51 <muep> adimania: it first tries to start it and only then installs it?
19:35:51 <adimania> check "rpm -qa|grep httpd"
19:36:08 <adimania> muep, that is actually random.
19:36:20 <adimania> but you can specify the order,
19:36:41 <muep> but this setup just did not happen to specify dependencies for them?
19:36:44 <adimania> check out "before" and "requires" for puppet after the session.
19:37:10 <muep> ok, thanks
19:37:25 <adimania> this happened because it was defined in /etc/puppet/modules/apache/manifests/service.pp
19:38:04 <adimania> it won't try to start it if you remove the service class in init.pp file.
19:38:31 <adimania> okay. I guess everyone is done here.
19:38:45 <adimania> now should we move on to adding an external node?
19:38:52 <thunderbirdtr> sure thing :)
19:39:00 <rino> yeah
19:39:56 <adimania> cool. if anyone does not have access to another node, then you can just try to capture the concept.
19:40:20 <rino> so in the node we need to configure /etc/hosts ?
19:40:24 <rino> and then just run agent?
19:40:25 <muep> I am installing another vm, so will follow with delay
19:40:38 <thunderbirdtr> adimania, I have 2 machine in here
19:40:45 <rino> me too
19:40:55 <adimania> now, first thing is that your master and client should be pingable by name (not only ip)
19:41:34 <adimania> I suggest you name the client as something else like "localclient.localdomain"
19:41:40 <rino> do i need use the same domain,or it will be totatilly different
19:41:44 <adimania> do not mess up with the name of server
19:41:51 <rino> ok the same?
19:41:53 <rino> like
19:41:53 <adimania> any domain will do
19:42:09 <rino> ip localclient.localdomain
19:42:41 <adimania> bottom line is that server and client should be pingable by each other.
19:42:53 <adimania> rino, correct.
19:43:18 <adimania> make relevant entries in your /etc/hosts
19:43:34 <rino> ok both are pingable
19:43:51 <rino> one localhost.localdomain and the other localclient.localdomain
19:44:13 <rino> packet puppet only installed on localclient
19:44:17 <adimania> make sure that when you ping localhost.localdomain from client, it does not ping 127.0.0.1
19:44:44 <rino> yes i change it
19:44:45 <adimania> it should ping the puppet server.
19:44:53 <rino> both with eth0 ip
19:45:47 <adimania> cool. if you have firewalls up then either allow port 8140 or turn off firewall for sometime (don't do this on production servers)
19:46:25 <rino> ok
19:46:33 <adimania> now do a yum install puppet on client
19:46:43 <rino> done .)
19:46:47 <dashcom> ok
19:46:55 <thunderbirdtr> I can't ping it ?
19:47:17 <adimania> if you did that already and tried to connect puppet master before then you might need to delete /var/lib/puppet/ssl on client only.
19:47:32 <adimania> thunderbirdtr, issues with your /etc/hosts?
19:47:45 <thunderbirdtr> I think so
19:48:12 <adimania> can you do a fpaste?
19:48:38 <thunderbirdtr> http://fpaste.org/5Lvz/
19:48:58 <adimania> is this your client?
19:49:11 <adimania> what is fqdn you are using on server?
19:49:30 <rino> http://www.fpaste.org/HU3M/
19:49:33 <adimania> there is no entry for puppet master. you need to do that,
19:49:49 <thunderbirdtr> It's server
19:49:59 <thunderbirdtr> for client
19:50:09 <thunderbirdtr> wait a sec
19:50:22 <adimania> rino, that looks right. are you facing any trouble?
19:50:30 <rino> I do not know the next step
19:50:36 <rino> if i did puppet agent -t
19:50:39 <rino> i have error on client
19:50:42 <thunderbirdtr> http://fpaste.org/FOPU/
19:51:35 <adimania> thunderbirdtr, you have not made any entries for server or client on any of the boxes.
19:51:50 <adimania> check out rino's hosts file at http://www.fpaste.org/HU3M/
19:52:08 <rino> I have those error on client when i did puppet command http://www.fpaste.org/fmdI/
19:52:35 <adimania> rino, expected :)
19:52:38 <thunderbirdtr> I see now I'm re-configure now
19:52:41 <rino> great :)
19:53:10 <adimania> now on master check out the certs "puppet cert --list"
19:53:50 <adimania> #topic adding external nodes
19:53:52 <rino> localclient.localdomain (17:C2:55:89:65:ED:50:40:2A:93:E5:7C:A5:93:74:2D)
19:54:43 <adimania> now sign the cert on master "puppet cert --sign localclient.localdomain"
19:56:00 <rino> done
19:56:05 <rino> notice: Removing file Puppet::SSL::CertificateRequest localclient.localdomain at '/var/lib/puppet/ssl/ca/requests/localclient.localdomain.pem'
19:56:36 <wrsturm> there is no libselinux-ruby package for RHEL 6
19:57:17 <rino> trying on client --> http://www.fpaste.org/0aUz/
19:57:20 <adimania> wrsturm, is it related to this session?
19:57:52 <adimania> rino, expected again :)
19:57:53 <dashcom> my hosts files seem fine, ping works, but still errors on 'puppet agent -t' and no cert request found on server for client
19:58:04 <rino> :)
19:58:15 <rino> the same error that me
19:58:17 <thunderbirdtr> same with dashcom
19:58:27 <adimania> dashcom, "puppet agent -t --server=<server_fqdn>"
19:58:57 <wrsturm> tyying to install puppet on an RHEL6 test machine
19:59:14 <adimania> remember client does not know about the server unless you tell it via commandline argument or define it in puppet.conf
19:59:24 <dashcom> adimania:  run that on puppet server, then client, right?
19:59:29 <rino> wrsturm: im using red hat 6 with server without any problem
19:59:34 <adimania> wrsturm, you need epel repo for puppet to work on rhel
19:59:54 <adimania> dashcom, only client for now.
19:59:59 <dashcom> ok
20:00:08 <adimania> though running on server too will not do any harm
20:00:09 <dashcom> (I have server specified in puppet.conf)
20:00:22 <thunderbirdtr> still error
20:00:47 <adimania> can you paste your puppet.conf and the error on fpaste
20:00:51 <rino> I have first one error because the cert is not signed
20:00:57 <dashcom> I'm getting same error as rino
20:00:58 <adimania> paste the client's puppet.conf
20:01:05 <rino> and then another error that im waiting to solve it
20:01:13 <adimania> dashcom, then go on server to sign it
20:01:31 <rino> dashcom: first you neet to list cert , and the use the listed cert to sign it
20:01:40 <adimania> "puppet cert --list" will return you the client's fqdn to be signed
20:01:52 <dashcom> client puppet.conf:  http://www.fpaste.org/2iTo/
20:02:05 <adimania> then "puppet cert --sign <client_fqdn>"
20:02:16 <rino> puppet cert --list; then puppet cert --sign localclient.localdomain (use your fqdn)
20:03:02 <adimania> dashcom, is this the fqdn you were using at the master till now: lunaii.seventhring.tzo.net?
20:03:57 <dashcom> yes
20:04:22 <adimania> did you see anything when you run puppet cert --list?
20:04:27 <dashcom> no
20:04:32 <thunderbirdtr> me too
20:04:46 <adimania> puppet cert --list needs to be run on master
20:05:10 <dashcom> I get no response when doing so
20:05:10 <rino> what is the next step i need to go in 20m :S
20:05:14 <adimania> make sure that you are addressing master by its hostname
20:05:36 <adimania> next step would be to add the node in site.pp on master
20:05:49 <adimania> it should look something like http://fpaste.org/MYhm/
20:06:03 <adimania> replace the fqdn wherever required.
20:06:16 <thunderbirdtr> we need client for this step
20:06:54 <adimania> thunderbirdtr, have you fixed your hosts file?
20:07:46 <rino> done adimania
20:07:57 <dashcom> ok, fixed site.pp
20:08:07 <adimania> dashcom: running "hostname" command on your puppet server returns lunaii.seventhring.tzo.net?
20:08:19 <dashcom> yes
20:08:24 <rino> adimania: i ranpuppet agent -t --server=localhost.localdomain
20:08:42 <adimania> rino, you should now get apache on your client.
20:08:45 <rino> and it is in running maybe is installing apache :S
20:08:53 <rino> notice: Finished catalog run in 49.14 seconds
20:08:56 <thunderbirdtr> adimania, I fixed
20:09:07 <rino> yes installed and running .)
20:09:12 <wrsturm> The libselinux-ruby is in the rhel-x86_64-server-optional-6 which was not enabled for the system
20:09:29 <thunderbirdtr> http://fpaste.org/rwxm/
20:09:30 <adimania> thunderbirdtr, so you are able to ping server and client form each other?
20:09:43 <rino> wrsturm: for is working
20:09:50 <rino> [root@localhost manifests]# cat /etc/redhat-release
20:09:50 <rino> CentOS release 6.1 (Final)
20:09:57 <thunderbirdtr> I can ping yes
20:10:21 <adimania> this is you master, right?
20:10:27 <muep> yay, another fedora test page mirror :-)
20:10:39 <rino> adimania: for me work all fine..
20:11:02 <adimania> rino, yup. congrats. You are the first graduate of this class :)
20:11:05 <thunderbirdtr> adimania, I do now
20:11:09 <thunderbirdtr> I forget to
20:11:13 <thunderbirdtr> add server on client
20:11:19 <thunderbirdtr> now I get info correctly
20:11:32 <thunderbirdtr> I will add to cert list now
20:11:40 <rino> adimania: wow :) i like it i will try to do something in a real enviroment :)
20:11:41 <adimania> thunderbirdtr, cool
20:11:41 <thunderbirdtr> fedora16verne.asus (49:CF:42:88:EE:18:F0:D0:00:4D:E5:FF:8B:53:12:8B)
20:11:52 <thunderbirdtr> notice: Signed certificate request for fedora16verne.asus
20:11:52 <thunderbirdtr> notice: Removing file Puppet::SSL::CertificateRequest fedora16verne.asus at '/var/lib/puppet/ssl/ca/requests/fedora16verne.asus.pem'
20:12:00 <adimania> thunderbirdtr, you are on right track.
20:12:06 <thunderbirdtr> I will delete apache on client and try back to install
20:12:12 <thunderbirdtr> after add your line for client
20:12:25 <ctria> adimania, what if remove an "include" will it revert the actions?
20:12:38 <ctria> or at least uninstall the package
20:12:40 <adimania> thunderbirdtr, and don't forget to add the node in site.pp
20:12:50 <adimania> ctria, interestingly no.
20:12:59 <ctria> damn,
20:13:25 <adimania> ctria, but there is a way :)
20:13:35 <ctria> re-install the node?
20:13:46 <adimania> check out the install.pp in the apache module
20:13:56 <dashcom> I get 'no route' from client to server (ping works, hosts is set up)
20:14:16 <rino> wrsturm: check my package dependencies http://fpaste.org/tJjL/
20:14:24 <ctria> put something like "ensure => uninstalled"
20:14:24 <adimania> you see the line "ensure => installed". just set it to "ensure => absent"
20:14:40 <ctria> yes but i still need to know the previous state
20:14:42 <thunderbirdtr> adimania, I do now
20:14:50 <thunderbirdtr> adimania, I install apache and running now
20:14:59 <adimania> thunderbirdtr, congrats :)
20:15:05 <ctria> i'm actually looking of a tool that if i give it 2 node definitions
20:15:14 <rino> wrsturm: http://fpaste.org/MJ7P/
20:15:15 <ctria> it will give me the same results
20:15:18 <dashcom> http://www.fpaste.org/wxJf/
20:15:22 <ctria> no matter what was the previous state
20:15:44 <rino> adimania: thank you a lot for your time
20:15:57 <rino> I must go now :S
20:15:58 <adimania> ctria, i dont think multiple node def  for single are allowed in puppet.
20:16:10 <adimania> rino, you are welcome
20:16:12 <ctria> no no
20:16:19 <thunderbirdtr> rino, Goodbye
20:16:19 <ctria> i mean if i define node001 and node002
20:16:26 <ctria> and they both have "include apache"
20:16:36 <ctria> to be sure that the only include the apache
20:16:46 <ctria> no matter if node002 had mysql-server too in past
20:17:01 <rino> bye guys :)
20:17:07 <dashcom> bye rino
20:17:08 <ctria> bye rino
20:18:10 <adimania> ctria, see removing definitions just means that you don't want to touch it. If you want it to be gone then you have to do a "ensure => absent" or something similar
20:18:44 <adimania> dashcom, something is really messed up with your hosts file.
20:18:55 <adimania> can you paste it?
20:19:13 <dashcom> client or server?
20:19:32 <adimania> both
20:20:31 <dashcom> client hosts http://www.fpaste.org/XOAg/
20:21:30 <adimania> server?
20:22:23 <adimania> dashcom, server hosts file?
20:22:27 <dashcom> http://www.fpaste.org/0aOf/
20:22:34 <dashcom> ah, I had to same name accidentally
20:22:41 <dashcom> on server and client
20:22:42 <ctria> i need to run. adimania, all, thank you very much for this class
20:23:00 <adimania> ctria, you are welcome :)
20:23:32 <adimania> dashcom, yes. I guess that will solve your problem.
20:23:52 <dashcom> yes, thanks so much for showing us puppet
20:24:05 <adimania> I need to end this session. need to catch some sleep before I go to work.
20:24:15 <adimania> dashcom, you are welcome :)
20:24:15 <thunderbirdtr> adimania, Thank you so much
20:24:24 <thunderbirdtr> adimania, Great lessson
20:24:28 <dashcom> ok, bye
20:24:32 <adimania> thunderbirdtr, no problem.
20:24:35 <thunderbirdtr> dashcom, bye
20:24:44 <adimania> thanks guys for all the patience :)
20:25:46 <adimania> I am ending the session now. You can catch me on #fedora-india or #fedora-admin for any questions.
20:25:50 <adimania> #endmeeting