詳細検索

Sim, vamos passar para HTTP/2 (prático)

Avatar
por 吉田将之
6 min de leitura

Sim, vamos passar para HTTP/2 (prático)
Traduzido do 日本語 • Ver original

Olá, eu sou Yoshida, engenheiro.

Da última vez, escrevi um artigo sobre migrar para HTTP/2 (OpsWorks), mas desta vez será uma continuação. (Desculpe pelo tempo que se passou desde a última vez, suor)

No artigo anterior, falamos sobre construir um ambiente simples na pilha Chef12 usando AWS OpsWorks para migrar para HTTP/2. No entanto, na realidade, a pilha Chef12 é diferente da pilha anterior ao Chef11, e a forma como as receitas eram operadas precisa ser alterada. Desta vez, será uma parte prática que focará em resolver problemas na pilha OpsWorks Chef12 em campo.

Prático

Parte 1. Execute receitas baseadas em livros de receitas comunitárias no Chef 12 Stack da OpsWorks

O mais importante a se notar na pilha do Chef12 é que as referências do livro de receitas comunitárias usadas ao rodar receitas não são mais automatizadas. Se você tentar rodar uma receita usando o livro de receitas comunitária como está, vai aparecer "Livro de receitas comunitária? Não consigo encontrar isso!" Eu fico irritado.

Então, como solução, crie um arquivo de livro de receitas contendo o livro da comunidade antecipadamente e consulte o local onde você o enviou para a S3.

Crie um arquivo de livros de receitas com livros comunitários

Pré-requisitos Você deve ter o BerkShelf instalado para criar um arquivo. Se não tiver um, instale o ChefDK ou o BerkShelf com uma gema. ChefDK: https://downloads.chef.io/chefdk Gem: 'instalar gem do berkshelf'

Procedimento 1. Navegue até o diretório de livros de receitas localmente

  1. Execute o comando 'berks package' para criar um arquivo Por padrão, você terá um arquivo com um carimbo de data como cookbooks-1506749951.tar.gz. Se quiser especificar um nome de arquivo, execute o comando 'berks package {filename}.tar.gz'.

  2. Criar um bucket S3 para armazenar o arquivo

  3. Faça upload do arquivo para o bucket que você criou no passo 3

O comando S3 da CLI da AWS é útil. 'AWS S3 CP cookbooks.tar.gz s3://{nome do bucket}'

Após a execução, certifique-se de que o arquivo de arquivo esteja carregado para o S3.

  1. Configure a pilha OpsWorks para referenciar arquivos de arquivo

No console da AWS, selecione o arquivo de arquivo que você acabou de criar e copie a URL do link na janela de diálogo que aparece.

OpsWorksスタック設定編集ページに移動して、以下の様に設定します。 [eos]・Use custom Chef cookbooks: ON ・Repository type: S3 Archive ・Repository URL: コピーしたアーカイブファイルリンクURLを貼り付け

É isso, você pode rodar receitas usando o livro de receitas da comunidade.

Parte 2. Criação e Upload Automatizado de Arquivos de Livros de Receitas para a Temporada 3

Na Parte 1, agora podemos usar o Livro de Receitas da Comunidade no OpsWorks.

No entanto, é muito complicado criar um arquivo de livros de receitas e enviá-lo para o S3 toda vez que você modifica uma receita. Além disso, se você tem um repositório Git que armazena livros de receitas no campo, é desejável criar ramificações de acordo com cada ambiente, como master, stage e develop, e armazenar o arquivo de livros de receitas no S3 para cada um desses branches.

Essas tarefas são automatizadas.

Procedimento de Automação

Para automatizar, vamos usar uma ferramenta de CI chamada Travis CI aqui. Mesmo que não seja Travis CI, acho possível se for uma ferramenta de CI que possa ser vinculada ao Github, então por favor tente.

Como premissa para automação, digamos que o repositório Git do livro de receitas também seja desenvolvido por ramificação de acordo com o fluxo do Git. E o livro de receitas de cada ramo, como mestre, estágio, desenvolvimento, etc., deve ser referenciado em cada ambiente (pilha).

Por exemplo, o ramo mestre tem um arquivo de livros de receitas chamado master.tar.gz no S3 e é referenciado na pilha do ambiente de produção. Se for um ramo de etapas, o arquivo de receitas chamado stage.tar.gz é referenciado na pilha do ambiente de verificação, e assim por diante.

Portanto, o objetivo da automação é "criar automaticamente um arquivo de livro de receitas e enviá-lo para o S3 quando a fonte for fundida em um ramo especificado".

Criar um Arquivo de Configuração CI Travis (.travis.yml)

Para usar o Travis CI, você primeiro precisa criar um arquivo de configuração chamado .travis.yml. Coloque o seguinte .travis.yml arquivo na raiz do repositório do livro de receitas. Basta copiar e colar como está.

Vou explicar que tipo de configurações você tem em ordem.

Designação de Ramo

A primeira parte branches~ é uma descrição para especificar qual branch rodar o Travis quando for mesclado. Aqui especificamos os branches master, stage e develop. Ao especificar isso, você não precisará criar um arquivo extra, então recomenda-se escrevê-lo o máximo possível.

Configurações da Temporada 3

Travis vai configurar as configurações para enviar arquivos para S3. A documentação oficial está aqui. Upload de artefatos no Travis CI

Especifique a região do bucket S3 a ser enviado. Se o bucket estiver na região de Tóquio, mude a especificação para ap-northeast-1, caso contrário.

Especifique o caminho do arquivo do livro de receitas de onde ele foi enviado. Aqui, para facilitar o entendimento, o nome do arquivo é nomeado em referência ao branch, então é "$TRAVIS_BRANCH.tar.gz". *$TRAVIS_BRANCH é uma variável que aponta para o nome do branch de destino no Travis.

Especifique o caminho do arquivo no bucket S3 para o qual você quer enviar. Note que, se você não especificar o target_paths, ele será colocado em uma hierarquia bastante profunda por padrão, que também inclui o diretório do nome do repositório Git. Especifique "./" para simplesmente caber diretamente abaixo do bucket.

Configurações do comando de execução

Por fim, configure o comando para rodar no Travis, ou seja, o processo até que o arquivo do livro de receitas seja criado.

Para criar um arquivo, você precisa instalar o BerkShelf como mencionado acima. Primeiro, instale o Ruby e depois coloque o BerkShelf junto com uma gema.

Gerar um arquivo com um 'berks package' para finalizar.

Configurações do Repositório de Execução do CI Travis

Claro, simplesmente empurrar o .travis.yml para o Git não vai rodar o Travis. Na tela de administração do CI do Travis, você precisará configurar várias configurações no repositório de livros de receitas.

Primeiro, para ir até a tela de configurações do repositório, especifique o repositório de livros de receitas na tela de gerenciamento. Em seguida, pressione o botão "Mais opções" exibido no canto superior direito da tela, como mostrado abaixo, e vários menu serão exibidos, então clique em "Configurações" no topo.

Configurações de Temporização da Corrida Travis

No topo da tela de configurações, você pode configurar assim.

É especialmente importante ativar as atualizações do branch de build e desativar as atualizações de pull request de build. Atualizações do branch de build é se o Travis roda quando o branch de destino é atualizado. Por exemplo, se você criar um pull request do branch de feature para o branch de desenvolvimento e depois ativar essa configuração ao meslá-lo, o arquivo do livro de receitas do branch de desenvolvimento não será enviado para o S3.

Atualizações de pull request de build são se o Travis roda quando um pull request do GitHub é atualizado. Se isso estiver ativado, desligue o Travis toda vez que enviar uma correção para o branch de origem da mescagem antes de mesclar o pull request.

Configure as credenciais necessárias para os uploads da S3

Por fim, defina as credenciais necessárias para o upload da S3.

Você vai precisar de três coisas: ARTIFACTS_KEY=(ID da chave de acesso AWS) ARTIFACTS_SECRET=(chave de acesso secreta AWS) ARTIFACTS_BUCKET=(nome do bucket S3).

Por favor, consulte isso conforme também está descrito na documentação oficial. Enviando artefatos no Travis CI

É isso, o Travis CI agora pode criar automaticamente livros de receitas que você pode consultar na sua stack OpsWorks!

Além do artigo anterior, você pode ver que migrar para HTTP/2 para projetos que usam OpsWorks requer essas etapas.

Tenha uma boa vida em HTTP/2!

Related Articles