Exemplo 9: Uso de instâncias do Amazon EC2 - 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á.

Exemplo 9: Uso de instâncias do Amazon EC2

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.

Até agora, você está executando instâncias localmente em VirtualBox. Embora isso seja rápido e fácil, você vai querer testar as receitas em uma instância do Amazon EC2. Em especial, caso você queira executar receitas no Amazon Linux, ele só está disponível no Amazon EC2. Você pode usar um sistema semelhante, como CentOS, na implementação preliminar e no teste, mas a única maneira de testar totalmente as receitas no Amazon Linux é usando uma instância do Amazon EC2.

Este tópico mostra como executar receitas em uma instância do Amazon EC2. Você usará o Test Kitchen e o Vagrant da mesma maneira como fez nas seções anteriores, com duas diferenças:

  • O driver é kitchen-ec2, em vez do Vagrant.

  • O arquivo .kitchen.yml do livro de receitas deve ser configurado com as informações necessárias para ativar a instância do Amazon EC2.

nota

Uma abordagem alternativa é usar o plug-in do Vagrant vagrant-aws. Para obter mais informações, consulte Vagrant AWS Provider.

Você precisará de credenciais da AWS para criar uma instância do Amazon EC2. Caso não tenha uma conta da AWS, você pode obter uma da maneira a seguir.

Inscreva-se para um Conta da AWS

Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.

Para se inscrever em um Conta da AWS
  1. Abra https://portal.aws.amazon.com/billing/signup.

  2. Siga as instruções online.

    Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.

    Quando você se inscreve em um Conta da AWS, um Usuário raiz da conta da AWSé criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.

AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, é possível visualizar as atividades da conta atual e gerenciar sua conta acessando https://aws.amazon.com/ e selecionando Minha conta.

Criar um usuário com acesso administrativo

Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS AWS IAM Identity Center, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.

Proteja seu Usuário raiz da conta da AWS
  1. Faça login AWS Management Consolecomo proprietário da conta escolhendo Usuário raiz e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira sua senha.

    Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS .

  2. Habilite a autenticação multifator (MFA) para o usuário raiz.

    Para obter instruções, consulte Habilitar um dispositivo de MFA virtual para seu usuário Conta da AWS raiz (console) no Guia do usuário do IAM.

Criar um usuário com acesso administrativo
  1. Habilitar o IAM Identity Center.

    Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center .

  2. No Centro de Identidade do IAM, conceda o acesso administrativo para um usuário.

    Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM no Guia AWS IAM Identity Center do usuário.

Iniciar sessão como o usuário com acesso administrativo
  • Para fazer login com seu usuário do Centro de Identidade do IAM, use o URL de login que foi enviado ao seu endereço de e-mail quando você criou o usuário do Centro do Usuário do IAM.

    Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como fazer login no portal de AWS acesso no Guia Início de Sessão da AWS do usuário.

Atribuir acesso a usuários adicionais
  1. No Centro de Identidade do IAM, crie um conjunto de permissões que siga as práticas recomendadas de aplicação de permissões com privilégio mínimo.

    Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center .

  2. Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.

    Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center .

Você deve criar um usuário do IAM com permissões para acessar o Amazon EC2 e salvar o acesso e as chaves secretas do usuário em um local seguro na sua estação de trabalho. O Test Kitchen usará essas credenciais para criar a instância. A maneira preferida de fornecer credenciais para o Test Kitchen é atribuir as chaves às variáveis de ambiente a seguir na estação de trabalho.

Atenção

Os usuários do IAM têm credenciais de longo prazo, o que representa um risco de segurança. Para ajudar a reduzir esse risco, recomendamos que você forneça a esses usuários somente as permissões necessárias para realizar a tarefa e que você os remova quando não forem mais necessários.

  • AWS_ACCESS_KEY: a chave de acesso do usuário, que terá a aparência semelhante a AKIAIOSFODNN7EXAMPLE.

  • AWS_SECRET_KEY — a chave secreta do seu usuário, que se parecerá com wjalrxutnfemi/k7mdeng/ CYEXAMPLEKEY. bPxRfi

Essa abordagem reduz as chances de comprometer acidentalmente a conta, por exemplo, fazendo upload de um projeto com as credenciais em um repositório público.

Para configurar o livro de receitas
  1. Para usar o driver kitchen-ec2, você deve ter o pacote ruby-dev instalado no sistema. O comando de exemplo a seguir mostra como usar aptitude para instalar o pacote em um sistema Ubuntu.

    sudo aptitude install ruby1.9.1-dev
  2. O driver kitchen-ec2 é um gem, que você pode instalar da seguinte forma:

    gem install kitchen-ec2

    Dependendo de sua estação de trabalho, esse comando pode exigir sudo. Você também pode usar um gerenciador de ambiente Ruby, como o RVM. Este procedimento foi testado com a versão 0.8.0 do driver kitchen-ec2, mas há versões mais novas. Para instalar uma specific version, execute gem install kitchen-ec2 -v <version number>.

  3. Você deve especificar um par de chaves SSH do Amazon EC2 que o Test Kitchen pode usar para se conectar à instância. Caso você não tenha um par de chaves do Amazon EC2, consulte Pares de chaves do Amazon EC2 para obter informações sobre como criar um. Observe que o par de chaves deve pertencer a mesma região da AWS que a instância. O exemplo usa Oeste dos EUA (N. da Califórnia).

    Depois que você tiver selecionado um par de chaves, crie um subdiretório opsworks_cookbooks chamado ec2_keys e copie o arquivo de chave privada do par de chaves (.pem) para esse diretório. Colocar a chave privada em ec2_keys é apenas uma comodidade que simplifica um pouco o código; ela pode estar em qualquer lugar do sistema.

  4. Crie um subdiretório de opsworks_cookbooks chamado createdir-ec2 e navegue até ele.

  5. Adicione um arquivo metadata.rb a createdir-ec2, com o seguinte conteúdo.

    name "createdir-ec2" version "0.1.0"
  6. Initialize o Test Kitchen, conforme descrito em Exemplo 1: Instalação de pacotes. A seção a seguir descreve como configurar .kitchen.yml, que é bem mais complicado para instâncias do Amazon EC2.

  7. Adicione um subdiretório recipes a createdir-ec2.

Configuração de .kitchen.yml para Amazon EC2

Você configura .kitchen.yml com as informações de que o driver kitchen-ec2 precisa para ativar uma instância do Amazon EC2 configurada adequadamente. Este é um exemplo de um arquivo .kitchen.yml para uma instância do Amazon Linux na região Oeste dos EUA (N. da Califórnia).

driver: name: ec2 aws_ssh_key_id: US-East1 region: us-west-1 availability_zone: us-west-1c require_chef_omnibus: true security_group_ids: sg........ subnet_id: subnet-......... associate_public_ip: true interface: dns provisioner: name: chef_solo platforms: -name: amazon driver: image_id: ami-xxxxxxxx transport: username: ec2-user ssh_key: ../ec2_keys/US-East1.pem suites: - name: default run_list: - recipe[createdir-ec2::default] attributes:

Você pode usar as configurações padrão para as seções provisioner e suites, mas deve modificar as configurações padrão driver e platforms. Este exemplo usa uma lista mínima de configurações e aceita os valores padrão para o restante. Para obter uma lista completa de configurações kitchen-ec2, consulte Kitchen::Ec2: A Test Kitchen Driver for Amazon EC2.

O exemplo define os atributos driver a seguir. Ele pressupõe que você tenha atribuído o acesso do usuário e as chaves secretas a variáveis do ambiente padrão, conforme abordado anteriormente. O driver usa essas chaves por padrão. Do contrário, você deve especificar explicitamente as chaves adicionando aws_access_key_id e aws_secret_access_key aos atributos driver e definir os valores de chave apropriados.

name

(Obrigatório) Este atributo deve ser definido como ec2.

aws_ssh_key_id

(Obrigatório) O nome do par de chaves SSH do Amazon EC2, chamado US-East1 neste exemplo.

transport.ssh_key

(Obrigatório) O arquivo de chave privada (.pem) da chave especificada por você para aws_ssh_key_id. Para este exemplo, o arquivo será chamado US-East1.pem e ficará no diretório ../opsworks/ec2_keys.

região

(Obrigatório) A região da AWS da instância. O exemplo usa Oeste dos EUA (N. da Califórnia), que é representado por us-west-1).

availability_zone

(Opcional) A zona de disponibilidade da instância. Caso você omita essa configuração, o Test Kitchen usa uma zona de disponibilidade padrão para a região especificada, us-west-1b para Oeste dos EUA (N. da Califórnia). No entanto, a região padrão talvez não esteja disponível para a conta. Neste caso, você deve especificar explicitamente uma zona de disponibilidade. Quando isso acontece, a conta usada para preparar os exemplos não dá suporte a us-west-1b. Assim, o exemplo especifica explicitamente us-west-1c.

require_chef_omnibus

Quando definida como true, essa configuração garante que o instalador omnibus seja usado para instalar chef-client em todas as instâncias da plataforma.

security_group_ids

(Opcional) Uma lista de IDs dos grupos de segurança a serem aplicadas à instância. Essa configuração aplica o grupo de segurança default à instância. Certifique-se de que as regras de entrada do grupo de segurança permitam conexões SSH de entrada, ou o Test Kitchen não poderá se comunicar com a instância. Caso use o security grupo de segurançadefault, você talvez possa precisar editá-lo de acordo. Para obter mais informações, consulte Grupos de segurança do Amazon EC2.

subnet_id

A ID da sub-rede de destino da instância, caso aplicável.

associate_public_ip

Você pode fazer o Amazon EC2 associar um endereço IP público à instância caso queira ser capaz de acessar a instância pela Internet.

interface

O tipo de configuração do nome de host usado por você para acessar a instância. Os valores válidos são dns, public, private ou private_dns. Caso você não especifique um valor para esse atributo, kitchen-ec2 define a configuração do nome de host na ordem a seguir. Caso você omita este atributo, o tipo de configuração não é definido.

  1. Nome DNS

  2. Endereço IP público

  3. Endereço IP privado

  4. Nome DNS privado

Importante

Em vez de usar as credenciais da conta para o acesso e as chaves secretas, você deve criar um usuário e fornecer essas credenciais ao Test Kitchen. Para obter mais informações, consulte Práticas recomendadas de gerenciamento de chaves de acesso da AWS.

Tenha cuidado para não colocá-lo .kitchen.yml em um local acessível ao público, como enviá-lo para um repositório público GitHub ou do Bitbucket. Isso expõe as credenciais e pode comprometer a segurança da conta.

O driver kitchen-ec2 dá suporte padrão às seguintes plataformas:

  • ubuntu-10.04

  • ubuntu-12.04

  • ubuntu-12.10

  • ubuntu-13.04

  • ubuntu-13.10

  • ubuntu-14.04

  • centos-6.4

  • debian-7.1.0

  • windows-2012r2

  • windows-2008r2

Caso você queira usar uma ou mais dessas plataformas, adicione os nomes de plataforma apropriados a platforms. O driver kitchen-ec2 seleciona automaticamente uma AMI apropriada e gera um nome do usuário SSH. Você pode usar outras plataformas; este exemplo usa o Amazon Linux, mas é necessário especificar explicitamente os atributos platforms a seguir.

name

O nome da plataforma. Este exemplo usa o Amazon Linux, de maneira que name seja definido como amazon.

driver

Os atributos driver, que incluem o seguinte:

  • image_id: a AMI da plataforma, que deve pertencer à região especificada. O exemplo usa ami-ed8e9284, uma AMI do Amazon Linux da região Oeste dos EUA (N. da Califórnia).

  • transport.username: o nome de usuário de SSH que o Test Kitchen usará para se comunicar com a instância.

    Use ec2-user para o Amazon Linux. Outras AMIs podem ter nomes de usuário diferentes.

Substitua o código em .kitchen.yml pelo exemplo e atribua valores apropriados a atributos específicos da conta, como aws_access_key_id.

Execução da receita

Este exemplo usa a receita de Iteração.

Para executar a receita
  1. Crie um arquivo chamado default.rb com o código a seguir e o salve na pasta recipes do livro de receitas.

    directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
  2. Execute kitchen converge para executar a receita. Este comando levará mais tempo para ser concluído do que os exemplos anteriores por causa do tempo necessário para ativar e inicializar uma instância do Amazon EC2.

  3. Acesse o console do console Amazon EC2, selecione a região Oeste dos EUA (N. da Califórnia) e clique em Instâncias no painel de navegação. Você verá a instância recém-criada na lista.

  4. Execute kitchen login para fazer login na instância, assim como você tem feito com as instâncias em execução VirtualBox. Você verá os diretórios recém-criados em /srv. Você também pode usar o cliente SSH favorito para se conectar à instância.