As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Exemplo 6: Criação de arquivos
Importante
O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no AWS re:POST
Depois de ter criado diretórios, você normalmente precisa preenchê-los com arquivos de configuração, arquivos de dados etc. Este tópico mostra duas maneiras de instalar arquivos em uma instância.
Instalação de um arquivo usando um livro de receitas
A maneira mais simples de instalar um arquivo em uma instância é usando um recurso cookbook_file/srv/www/shared após a criação do diretório. Para referência, aqui está a receita original.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
Para configurar o livro de receitas
-
No diretório
opsworks_cookbooks, crie um diretório chamadocreatefilee navegue até ele. -
Adicione um arquivo
metadata.rbacreatefile, com o seguinte conteúdo.name "createfile" version "0.1.0" -
Inicialize e configure o Test Kitchen, conforme descrito em Exemplo 1: Instalação de pacotes e remova CentOS da lista
platforms. -
Adicione um subdiretório
recipesacreatefile.
O arquivo a ser instalado contém os dados JSON a seguir.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }
Para configurar o arquivo de dados
-
Adicione um subdiretório
filesecreatefilee um subdiretóriodefaultafiles. Qualquer arquivo instalado por você comcookbook_filedeve estar em um subdiretório defiles, comofiles/defaultneste exemplo.nota
Caso queira especificar arquivos diferentes para sistemas distintos, você pode colocar o arquivo específico de cada sistema em uma subpasta chamada considerando o sistema, como
files/ubuntu. O recursocookbook_filecopia o arquivo específico do sistema apropriado, caso ele exista, e usa o arquivodefault. Para obter mais informações, consulte cookbook_file. -
Crie um arquivo chamado
example_data.jsoncom o JSON do exemplo anterior e adicione-o afiles/default.
A receita a seguir copia example_data.json para um local especificado.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end cookbook_file "/srv/www/shared/example_data.json" do source "example_data.json" mode 0644 action :create_if_missing end
Depois que cria /srv/www/shared, o recurso cookbook_file copia example_data.json para esse diretório e também define o usuário, o grupo e o modo do arquivo.
nota
O recurso cookbook_file apresenta uma nova ação: create_if_missing. Você também pode usar uma ação create, mas ela substitui um arquivo existente. Caso você não queira substituir nada, use create_if_missing, que só instala example_data.json caso ainda não exista.
Para executar a receita
-
Execute
kitchen destroypara começar com uma instância nova. -
Crie um arquivo
default.rbque contenha a receita anterior e o salve emrecipes. -
Execute
kitchen convergee faça logon na instância para verificar se o arquivo/srv/www/sharedcontémexample_data.json.
Criação de um arquivo usando um modelo
O recurso cookbook_file é útil para algumas finalidades, mas só instala o arquivo que você tem no livro de receitas. Um recurso template
Este exemplo modifica o livro de receitas createfile a fim de usar um recurso template para instalar uma versão levemente modificada de example_data.json.
Aqui está como será a aparência do arquivo instalado.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true, "a_string" : "some string", "platform" : "ubuntu" }
Os recursos de modelo costumam ser usados com arquivos de atributo. Assim, o exemplo usa um para definir os valores a seguir.
default['createfile']['my_name'] = 'myname' default['createfile']['your_name'] = 'yourname' default['createfile']['install_file'] = true
Para configurar o livro de receitas
-
Exclua o diretório
createfilee seu conteúdo do livro de receitasfiles. -
Adicione um subdiretório
attributesacreatefilee um arquivodefault.rbaattributesque contenha as definições de atributo anteriores.
Modelo é um arquivo .erb que é basicamente uma cópia do arquivo final, com alguns dos conteúdos representados por espaços reservados. Quando cria o arquivo, o recurso template copia o conteúdo do modelo para o arquivo especificado e substitui os espaços reservados pelos valores atribuídos. Veja o modelo de example_data.json.
{ "my_name" : "<%= node['createfile']['my_name'] %>", "your_name" : "<%= node['createfile']['your_name'] %>", "a_number" : 42, "a_boolean" : <%= @a_boolean_var %>, "a_string" : "<%= @a_string_var %>", "platform" : "<%= node['platform'] %>" }
Os valores <%=...%> são os espaços reservados.
-
<%=node[...]%>representa um valor de atributo do nó.Para este exemplo, o valor "your_name" é um espaço reservado que representa um dos valores de atributo do arquivo de atributo do livro de receitas.
-
<%=@...%>representa o valor de uma variável definido no recurso do modelo, conforme abordado resumidamente.
Como criar o arquivo de modelo do
-
Adicione um subdiretório
templatesao livro de receitascreatefilee um subdiretóriodefaultatemplates.nota
O diretório
templatesfunciona de maneira muito semelhante ao diretóriofiles. Você pode colocar modelos específicos do sistema em um subdiretório, comoubuntu, nomeado por causa do sistema. O recursotemplateusa o modelo específico do sistema apropriado caso ele exista e acaba usando o modelodefault. -
Crie um arquivo chamado
example_data.json.erbe coloque-o no diretóriotemplates/default. O nome do modelo é arbitrário, mas você normalmente o cria acrescentando.erbao nome do arquivo, inclusive extensões.
A receita a seguir usa um recurso template para criar /srv/www/shared/example_data.json.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end template "/srv/www/shared/example_data.json" do source "example_data.json.erb" mode 0644 variables( :a_boolean_var => true, :a_string_var => "some string" ) only_if {node['createfile']['install_file']} end
O recurso template cria example_data.json usando um modelo e o instala em /srv/www/shared.
-
O nome do modelo,
/srv/www/shared/example_data.json, especifica o caminho e o nome do arquivo instalado. -
O atributo
sourceespecifica o modelo usado para criar o arquivo. -
O atributo
modeespecifica o modo do arquivo instalado. -
O recurso define duas variáveis,
a_boolean_varea_string_var.Quando cria
example_data.json, o recurso substitui os espaços reservados da variável no modelo pelos valores correspondentes do recurso. -
O atributo
only_ifguard só leva o recurso a criar o arquivo caso['createfile']['install_file']esteja definido comotrue.
Para executar a receita
-
Execute
kitchen destroypara começar com uma instância nova. -
Substitua o código em
recipes/default.rbpelo exemplo anterior. -
Execute
kitchen convergee faça logon na instância para verificar se o arquivo está em/srv/www/sharede tem o conteúdo correto.
Quando terminar, execute kitchen destroy para desligar a instância. A próxima seção usa um livro de receitas novo.