Exemplo 9: Usando EC2 instâncias da Amazon - 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: Usando EC2 instâncias da Amazon

Importante

A ferramenta AWS OpsWorks Stacks o 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 o AWS Support Equipe em AWS Re:post ou através de AWS Premium Support.

Até agora, você está executando instâncias localmente em VirtualBox. Embora isso seja rápido e fácil, você eventualmente desejará testar suas receitas em uma EC2 instância da Amazon. Em particular, se você quiser executar receitas no Amazon Linux, elas estarão disponíveis somente na AmazonEC2. Você pode usar um sistema similar, como o CentOS, para implementação e testes preliminares, mas a única maneira de testar totalmente suas receitas no Amazon Linux é com uma instância da AmazonEC2.

Este tópico mostra como executar receitas em uma EC2 instância da Amazon. 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 .kitchen.yml arquivo do livro de receitas deve ser configurado com as informações necessárias para iniciar a EC2 instância da Amazon.

nota

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

Você precisará de AWS credenciais para criar uma EC2 instância da Amazon. Se você não tiver uma AWS conta, poderá obter uma, da seguinte maneira.

Inscreva-se para um Conta da AWS

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

Para se inscrever em um Conta da AWS
  1. Abra a https://portal.aws.amazon.com/billing/inscrição.

  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 root tem acesso a todos Serviços da AWS e recursos 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, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando https://aws.amazon.com/e escolhendo 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, habilitar AWS IAM Identity Center 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 no AWS Management Consolecomo proprietário da conta, escolhendo o usuário root e inserindo seu Conta da AWS endereço de e-mail. Na próxima página, insira sua senha.

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

  2. Ative a autenticação multifator (MFA) para seu usuário root.

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

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

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

  2. No IAM Identity Center, conceda acesso administrativo a um usuário.

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

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

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

Atribuir acesso a usuários adicionais
  1. No IAM Identity Center, crie um conjunto de permissões que siga as melhores práticas de aplicação de permissões com privilégios mínimos.

    Para obter instruções, consulte Criar um conjunto de permissões no AWS IAM Identity Center Guia do usuário.

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

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

Você deve criar um IAM usuário com permissões para acessar a 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

IAMos usuários 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 — sua chave de acesso do usuário, que será semelhante aAKIAIOSFODNN7EXAMPLE.

  • AWS_SECRET_ KEY — a chave secreta do seu usuário, que se parecerá com wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY.

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 da sua estação de trabalho, esse comando pode exigirsudo, ou você também pode usar um gerenciador de ambiente Ruby, como. 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 EC2 SSH chaves da Amazon que o Test Kitchen possa usar para se conectar à instância. Se você não tiver um par de EC2 chaves da Amazon, consulte Amazon EC2 Key Pairs para obter informações sobre como criar um. Observe que o par de chaves deve pertencer à mesma AWS região da 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, o que é significativamente mais complicado para as EC2 instâncias da Amazon.

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

Configurando .kitchen.yml para a Amazon EC2

Você configura .kitchen.yml com as informações que o kitchen-ec2 driver precisa para iniciar uma EC2 instância da Amazon 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 kitchen-ec2 configurações, 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 EC2 SSH chaves da Amazon, que é nomeado 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 AWS região 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 grupos de segurança IDs a serem aplicados à 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 SSH conexões de entrada, ou o Test Kitchen não conseguirá 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 Amazon EC2 Security Groups.

subnet_id

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

associate_public_ip

Você pode fazer com que a Amazon EC2 associe um endereço IP público à instância se quiser 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. DNSnome

  2. Endereço IP público

  3. Endereço IP privado

  4. DNSNome 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 Melhores práticas para gerenciar chaves de AWS acesso.

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 kitchen-ec2 motorista seleciona automaticamente um apropriado AMI e gera um nome de SSH usuário. 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 da plataformaAMI, que deve pertencer à região especificada. O exemplo usa ami-ed8e9284 um Amazon Linux AMI da região Oeste dos EUA (Norte da Califórnia).

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

    Use ec2-user para o Amazon Linux. Outros 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. Observe que esse comando levará mais tempo para ser concluído do que os exemplos anteriores devido ao tempo necessário para iniciar e inicializar uma EC2 instância da Amazon.

  3. Acesse o EC2console da Amazon, selecione a região Oeste dos EUA (Norte 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 seu SSH cliente favorito para se conectar à instância.