AWS OpsWorks Referência do Stacks Data Bag - AWS OpsWorks

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á.

AWS OpsWorks Referência do Stacks Data Bag

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 ou por meio do Premium AWS Support.

AWS OpsWorks Stacks expõe uma grande variedade de configurações de receitas como conteúdo do pacote de dados do Chef. Essa referência lista esse conteúdo de data bag.

Um data bag é um conceito do Chef. O data bag é uma variável global armazenada como dados JSON em uma instância; os dados JSON podem ser acessados no Chef. Por exemplo, um pacote de dados pode armazenar variáveis globais, como o URL de origem de um aplicativo, o nome do host da instância e o identificador VPC da pilha associada. AWS OpsWorks O Stacks armazena seus pacotes de dados nas instâncias de cada pilha. Em instâncias Linux, o AWS OpsWorks Stacks armazena pacotes de dados no /var/chef/runs/run-ID/data_bags diretório. Nas instâncias do Linux, ele armazena recipientes de dados no diretório drive:\chef\runs\run-id\data_bags. Em ambos os casos, Run-ID é um ID exclusivo que o AWS OpsWorks Stacks atribui a cada execução do Chef em uma instância. Esses diretórios incluem um conjunto de data bags (subdiretórios). Cada data bag contém zero ou mais itens de data bag, que são arquivos formatados pelo JSON que contêm conjuntos de conteúdo de data bag.

nota

AWS OpsWorks O Stacks não suporta pacotes de dados criptografados. Para armazenar dados confidenciais de maneira criptografada, como senhas ou certificados, recomendamos armazená-los em um bucket do S3 privado. Você pode então criar uma receita personalizada que usa o Amazon SDK para Ruby para recuperar os dados. Para ver um exemplo, consulte Usar o SDK for Ruby.

O conteúdo de data bag pode incluir:

  • Conteúdo String, que segue a sintaxe padrão do Ruby e pode usar aspas duplas ou simples, embora as strings com determinados caracteres especiais devam ter aspas duplas. Para obter mais informações, consulte o site de documentação do Ruby.

  • Conteúdo Booliano, que é true ou false (sem aspas).

  • Conteúdo Número, que é um número inteiro ou decimal; por exemplo, 4 ou 2.5 (sem aspas).

  • Conteúdo Lista, que assume a forma de valores separados por vírgula dentro de colchetes (sem aspas); por exemplo, [ '80', '443' ]

  • Objetos JSON, que possuem conteúdo de data bag adicional, como "my-app": {"elastic_ip": null,...}.

As receitas do Chef podem acessar data bags, itens de data bag e conteúdo de data bag por meio da pesquisa do Chef ou diretamente. Os dados a seguir descrevem como usar as duas abordagens de acesso (embora a pesquisa do Chef seja preferencial).

Para acessar uma bolsa de dados por meio da pesquisa do Chef, use o método de pesquisa, especificando o índice de pesquisa desejado. AWS OpsWorks O Stacks fornece os seguintes índices de pesquisa:

Assim que você souber o nome do índice de pesquisa, acesse o conteúdo do data bag desse índice de pesquisa. Por exemplo, o código de receita a seguir usa o índice de pesquisa aws_opsworks_app para obter o conteúdo do primeiro item de data bag (o primeiro arquivo JSON) no data bagaws_opsworks_app (o diretório aws_opsworks_app). Em seguida, o código grava duas mensagens no log do Chef, uma com o conteúdo de data bag de nome curto do aplicativo (uma string no arquivo JSON) e outra com o conteúdo de data bag de URL de origem do aplicativo (outra string no arquivo JSON):

app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")

Em que ['shortname'] e ['app_source']['url'] especificam o conteúdo de data bag a seguir no arquivo JSON correspondente:

{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }

Para obter uma lista do conteúdo de data bag que você pode pesquisar, consulte os tópicos de referência nesta seção.

Você também pode percorrer um conjunto de itens de data bag em um data bag. Por exemplo, o código de receita a seguir é semelhante ao exemplo anterior; ele percorre cada um dos itens de data bag no data bag quando há mais de um item de data bag:

search("aws_opsworks_app").each do |app| Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Se você souber que existe um conteúdo de data bag específico, poderá encontrar o item de data bag correspondente com a seguinte sintaxe:

search("search_index", "key:value").first

Por exemplo, o código de receita a seguir usa o índice de pesquisa aws_opsworks_app para encontrar o item de data bag que contém o nome curto de aplicativo mylinuxdemoapp. Em seguida, ele usa o conteúdo do item de data bag para gravar uma mensagem no log do Chef com o nome curto e o URL de origem do aplicativo correspondente:

app = search("aws_opsworks_app", "shortname:mylinuxdemoapp").first Chef::Log.info("********** For the app with the short name '#{app['shortname']}', the app's URL is '#{app['app_source']['url']}' **********")

Para o índice de pesquisa aws_opsworks_instance somente, você pode especificar self:true para representar a instância em que a receita está sendo executada. O código de receita a seguir usa o conteúdo do item do pacote de dados correspondente para gravar uma mensagem no registro do Chef com o ID e o sistema operacional AWS OpsWorks gerados pelo Stacks da instância correspondente:

instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")

Em vez de usar a pesquisa do Chef para acessar data bags, itens de data bag e conteúdo de data bag, você pode acessá-los diretamente. Para fazer isso, use os métodos data_bag e data_bag_item para acessar data bags e itens de data bags, respectivamente. Por exemplo, o código de receita a seguir executa a mesma função demonstrada nos exemplos anteriores; a diferença é que ele acessa diretamente um único item de data bag e, depois, vários itens de data bag quando há mais de um:

# Syntax: data_bag_item("the data bag name", "the file name in the data bag without the file extension") app = data_bag_item("aws_opsworks_app", "mylinuxdemoapp") Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") data_bag("aws_opsworks_app").each do |data_bag_item| app = data_bag_item("aws_opsworks_app", data_bag_item) Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Entre essas duas abordagens, recomendamos que você use a pesquisa do Chef. Todos os exemplos relacionados neste guia demonstram essa abordagem.