web-dev-qa-db-fra.com

Comment utiliser un modèle de fichier de configuration dans Puppet

Je suis nouveau sur Puppet et j'écris un module pour installer les fichiers de configuration. Le problème est que lorsque plusieurs clients utiliseront mon module, ils devront le modifier en fonction de leur système. J'ai entendu dire que les modèles sont un moyen de résoudre ce problème. Mais je ne suis pas en mesure de savoir comment utiliser un modèle pour configurer le fichier de configuration.

Si quelqu'un d'entre vous pouvait me donner un exemple simple à suivre en utilisant des modèles pour configurer des fichiers, ce serait vraiment utile. Par exemple, comment puis-je configurer le fichier de configuration par défaut disponible sur les sites Apache à l'aide d'un modèle, ou donner tout autre exemple qui, selon vous, aidera un nouvel utilisateur de marionnettes. BTW Je suis sur une machine Ubuntu.

17
maths

Les documents PuppetLabs sur tilisation de modèles de marionnettes ont un exemple de configuration Apache pour un site Trac. Cela devrait suffire pour vous aider à démarrer.

À la demande de l'OP, voici un exemple simple. J'utilise NTP plutôt que la configuration par défaut d'Apache car c'est un fichier assez volumineux et complexe. NTP est beaucoup plus simple.

Le répertoire ressemble à ceci:

/etc/puppet/modules/ntp/manifests
                       /templates

Contenu partiel /etc/puppet/modules/ntp/manifests/init.pp (juste la partie définissant le modèle):

$ntp_server_suffix = ".ubuntu.pool.ntp.org"

file { '/etc/ntp.conf':
    content => template('ntp/ntp.conf.erb'),
    owner   => root,
    group   => root,
    mode    => 644,
}

Contenu de /etc/puppet/modules/ntp/templates/ntp.conf.erb:

driftfile /var/lib/ntp/drift
<% [1,2].each do |n| -%>
server <%=n-%><%=@ntp_server_suffix%>
<% end -%>

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1

Lorsqu'il est exécuté avec une marionnette, cela entraînera un /etc/ntp.conf qui ressemble à:

driftfile /var/lib/ntp/drift
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1

Cela démontre quelques concepts différents:

  1. Variables définies dans le manifeste de marionnettes (telles que $ntp_server_suffix est accessible en tant que variable d'instance (@ntp_server_suffix) dans le modèle
  2. Boucles et autres Ruby code peut être utilisé dans les modèles erb
  3. Code entre <% et %> est exécuté par Ruby
  4. Code entre <%= et %> est exécuté et produit par Ruby
  5. Code entre <%= et -%> est exécuté et affiché par Ruby et le caractère de fin de ligne est supprimé.

J'espère que cela vous aidera à comprendre les modèles.

24
Ben Whaley