Infrastructure Team/Puppet: Difference between revisions

No edit summary
No edit summary
 
(9 intermediate revisions by 2 users not shown)
Line 15: Line 15:
== Master ==
== Master ==


Only puppetmaster keeps final configuration for all Sugar Labs services. It is being started on [[Machine/lightwave|security machine]] in private git repository.
Only puppetmaster keeps final configuration for all Sugar Labs services. It is being started in a private git repository on [[Machine/lightwave]], which is a high security machine.


=== Private repository ===
=== Private repository ===
Line 47: Line 47:


  #!/bin/bash
  #!/bin/bash
  /bin/bash /usr/share/doc/git-core/contrib/hooks/post-receive-email
  sh /usr/share/doc/git-core/contrib/hooks/post-receive-email
  git checkout -f
  git checkout -f
  tail -n0 -f /var/log/daemon.log &
  for i in $(ls /etc/puppet/manifests/nodes/*.pp); do puppet kick $(basename $i .pp); done
puppet kick --all
sleep 3


=== Repository hierarchy ===
=== Repository hierarchy ===
Line 57: Line 55:
Git repository consists of:
Git repository consists of:


* {{Code|modules/}}, all used modules from [http://git.sugarlabs.org/puppets puppets] project in form of submodules.
* {{Code|manifests/site.pp}}, main recipe which contain common settings and includes nodes.
* {{Code|manifests/site.pp}}, main recipe which contain common settings and includes nodes.
* {{Code|manifests/roles/}}, recipes that describes final configuration for particular service.
* {{Code|manifests/services/}}, recipes that describes final configuration for particular services.
* {{Code|manifests/nodes/}}, puppetized nodes, configuration for hosts that ask puppetmaster.
* {{Code|manifests/nodes/}}, puppetized nodes, configuration for hosts that ask puppetmaster.
* {{Code|modules/}}, git submodules with Puppet [[#Modules|modules]].


== Nodes ==
== Nodes ==


Hosts that fetch configuration from the [[#Master|puppetmast]] need <code>puppet >= 2.6</code> package. If {{Code|puppet}} was installed from gems, it needs to be initially configured:
Hosts that fetch configuration from the [[#Master|puppetmast]] need <code>puppet >= 2.6</code> package.


puppetmasterd --mkusers
If {{Code|puppet}} was installed from gems, it needs to be initially configured:


Node's puppet agent might have optional configuration in {{Code|/etc/puppet/puppet.conf}}:
puppet master --mkusers


[main]
To complete configuration, execute:
  runinterval = <fetch-configuration-in-every-n-seconds>
 
  puppet agent --no-daemonize --onetime --server puppet.sugarlabs.org


Every puppetized host should have particular node file in {{Code|manifests/nodes/<host-name>.pp}} on [[#Master|puppetmaster]].
Every puppetized host should have particular node file in {{Code|manifests/nodes/<host-name>.pp}} on [[#Master|puppetmaster]].