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.
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:
$ntp_server_suffix
est accessible en tant que variable d'instance (@ntp_server_suffix
) dans le modèle<%
et %>
est exécuté par Ruby<%=
et %>
est exécuté et produit par Ruby<%=
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.