Atualizar AMIs usando o Automation e Jenkins - AWS Systems Manager

Atualizar AMIs usando o Automation e Jenkins

Se a sua organização usar o software Jenkins em um pipeline de CI/CD, você poderá adicionar o Automation como uma etapa de pós-compilação para pré-instalar as versões da aplicação na Amazon Machine Images (AMIs). O Automation é um recurso do AWS Systems Manager. Você também pode usar o recurso de agendamento do Jenkins para chamar o Automation e criar sua própria cadência de aplicação de patches de sistema operacional (SO).

O exemplo abaixo mostra como invocar o Automation em um servidor Jenkins em execução on-premises ou no Amazon Elastic Compute Cloud (Amazon EC2). Para realizar a autenticação, o servidor Jenkins usa credenciais da AWS com base em uma política do IAM criada no exemplo e anexada ao seu perfil de instância.

nota

Certifique-se de seguir as práticas recomendadas de segurança do Jenkins ao configurar sua instância.

Antes de começar

Conclua as seguintes tarefas antes de configurar o Automation com o Jenkins:

Como criar uma política do IAM para o servidor Jenkins
  1. Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação, selecione Políticas e, em seguida, Criar política.

  3. Selecione a guia JSON.

  4. Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:region:account ID:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:region:account ID:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. Escolha Revisar política.

  6. Na página Revisar política, em Nome, digite um nome para a política em linha, como JenkinsPolicy.

  7. Escolha Criar política.

  8. No painel de navegação, escolha Perfis.

  9. Escolha o perfil de instância que está anexado ao seu servidor Jenkins.

  10. Na guia Permissões, selecione Adicionar permissões e escolha Anexar políticas.

  11. Na seção Outras políticas de permissões, insira o nome da política criada nas etapas anteriores. Por exemplo, JenkinsPolicy.

  12. Marque a caixa de seleção ao lado da sua política e escolha Anexar políticas.

Use o seguinte procedimento para configurar a AWS CLI no seu servidor Jenkins.

Para configurar o servidor Jenkins para Automation
  1. Connect ao servidor Jenkins na porta 8080 usando seu navegador preferido para acessar a interface de gerenciamento.

  2. Digite a senha encontrada em /var/lib/jenkins/secrets/initialAdminPassword. Para exibir sua senha, execute o comando a seguir.

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. O script de instalação do Jenkins direciona você para a página Personalizar o Jenkins. Selecione Install suggested plugins (Instalar plugins sugeridos).

  4. Uma vez concluída a instalação, escolha Credenciais de administrador, selecione Salvar credenciais e, depois, Começar a usar o Jenkins.

  5. No painel de navegação à esquerda, escolha Gerenciar Jenkins e, em seguida, selecione Gerenciar plugins.

  6. Selecione a guia Available (Disponível) e, em seguida, digite Amazon EC2 plugin.

  7. Marque a caixa de seleção para Amazon EC2 plugine, depois, selecione Install without restart (Instalar sem reiniciar).

  8. Quando a instalação terminar, selecione Go back to the top page (Voltar para a página inicial).

  9. Escolha Gerenciar Jenkins e, em seguida, Gerenciar nós e nuvens.

  10. Na seção Configurar nuvens, selecione Adicionar uma nova nuvem e, em seguida, escolha Amazon EC2.

  11. Insira suas informações nos campos restantes. Certifique-se de selecionar a opção Usar perfil de instância do EC2 para obter credenciais.

Use o procedimento a seguir para configurar o projeto do Jenkins para invocar o Automation.

Para configurar o servidor Jenkins para invocar o Automation
  1. Abra o console do Jenkins em um navegador Web.

  2. Escolha o projeto que deseja configurar com Automação e depois escolha Configure.

  3. Na guia Build, escolha Add Build Step.

  4. Escolha Execute shell ou Execute Windows batch command (dependendo do seu sistema operacional).

  5. No campo Command (Comando), execute um comando da AWS CLI como o seguinte: Substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

    aws ssm start-automation-execution \ --document-name runbook name \ --region Região da AWS of your source AMI \ --parameters runbook parameters

    O comando de exemplo a seguir usa o runbook UpdateMyLatestWindowsAmi e o parâmetro latestAmi do Systems Manager criado em Atualize uma AMI dourada usando Automation, AWS Lambda e Parameter Store.

    aws ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'" --region region

    No Jenkins, o comando se parece com exemplo mostrado na captura de tela a seguir.

    Um exemplo de comando no software Jenkins.
  6. No projeto do Jenkins, escolha Criar agora. Jenkins retorna uma saída semelhante ao exemplo a seguir.

    Exemplo de saída de comando no software Jenkins.