Arquivos chef / ruby / erb - Como funciona esse código de exemplo?

2

Estou trabalhando em um modelo de bootstrap personalizado, com base em um modelo de amostra. Eu estou olhando para o exemplo de obter a chave de validação da estação de trabalho para o novo servidor e do que eu posso dizer é o caminho da chave é especificado em knife.rb na variável validation_key. E no modelo de bootstrap é ecoado com um <% = validation_key% >

É esse material mágico ruby, é o caminho validation_key var processado em knife, e o conteúdo é lido em um var diferente ao processar o template, e é assim que um caminho é transformado em uma string contendo o conteúdo do arquivo em esse caminho?

Se eu declarar foo = / tmp / test.txt em knife.rb, posso acessar o conteúdo de test.txt em meu modelo de inicialização usando <% = foo% >?

DE: link

(
cat <<'EOP'
<%= validation_key %>
EOP
) > /tmp/validation.pem
    
por Jeff V 09.01.2013 / 21:26

1 resposta

4

O negócio <% e %> faz parte do sistema de templates de Ruby também usado pelo Chef. A referência a validation_key é uma variável local passada pelo código do modelo de bootstrap.

Um uso mais comum dos modelos do ERB no Chef é a criação de arquivos de configuração, por exemplo, do livro de receitas da comunidade do Apache:

templates/default/ports.conf.erb

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

Este recurso seria criado em uma receita em algum lugar:

recipes/default.rb

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

Quando você está começando a parte importante é observar o uso de <% para escrever código executado pelo ERB, versus <%= , que retorna o resultado de uma expressão, geralmente apenas uma variável.

    
por 09.01.2013 / 22:14

Tags