2 votes

Fichiers Chef / ruby / erb - Comment fonctionne cet exemple de code ?

Je travaille sur un modèle bootstrap personnalisé, basé sur un modèle type. Je regarde l'exemple de l'obtention de la clé de validation de la station de travail au tout nouveau serveur, et de ce que je peux dire est le chemin de la clé est spécifié dans knife.rb dans la variable validation_key. Et dans le modèle bootstrap, il est signalé par un <%= validation_key %>.

Est-ce que c'est un truc magique de ruby, est-ce que la var du chemin de validation_key est traitée dans knife, et le contenu est lu dans une var différente lors du traitement du modèle, et c'est ainsi qu'un chemin est transformé en une chaîne contenant le contenu du fichier à ce chemin ?

Si je déclare foo=/tmp/test.txt dans knife.rb, puis-je accéder au contenu de test.txt dans mon modèle bootstrap en utilisant <%= foo %> ?

DE : https://github.com/opscode/chef/blob/master/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb

(
cat <<'EOP'
<%= validation_key %>
EOP
) > /tmp/validation.pem

4voto

Tim Potter Points 1754

El <% et %> l'entreprise fait partie de Le système de templating de Ruby également utilisé par Chef. La référence à validation_key est une variable locale passée par le code du modèle bootstrap.

Une utilisation plus courante de la modélisation ERB dans Chef est la création de fichiers de configuration, par exemple à partir du livre de recettes de la communauté Apache :

templates/default/ports.conf.erb

<% @apache_listen_ports.each do |port| %>
Listen <%= port %>
<% end %>

Cette ressource serait créée dans une recette quelque part :

recipes/default.rb

template "/etc/apache2/ports.conf" do
  source "ports.conf.erb"
  variables :apache_listen_ports => [80, 443]
end

Lorsque vous débutez, l'important est de noter l'utilisation de <% pour écrire du code qui est exécuté par ERB, par rapport à <%= qui renvoie le résultat d'une expression, généralement une simple variable.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X