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:
-
Conclua o exemplo Atualize uma AMI dourada usando Automation, AWS Lambda e Parameter Store. O exemplo a seguir usa o runbook UpdateMyLatestWindowsAmi criado nesse exemplo.
-
Configure as funções do IAM para o Automation. O Systems Manager requer uma função de perfil da instância e um ARN da função de serviço para processar automações. Para ter mais informações, consulte Configurar a automação.
Como criar uma política do IAM para o servidor Jenkins
Faça login no AWS Management Console e abra o console do IAM em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Políticas e, em seguida, Criar política.
-
Selecione a guia JSON.
-
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" ] } ] } -
Escolha Revisar política.
-
Na página Revisar política, em Nome, digite um nome para a política em linha, como
JenkinsPolicy
. -
Escolha Criar política.
-
No painel de navegação, escolha Perfis.
-
Escolha o perfil de instância que está anexado ao seu servidor Jenkins.
-
Na guia Permissões, selecione Adicionar permissões e escolha Anexar políticas.
-
Na seção Outras políticas de permissões, insira o nome da política criada nas etapas anteriores. Por exemplo, JenkinsPolicy.
-
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
-
Connect ao servidor Jenkins na porta 8080 usando seu navegador preferido para acessar a interface de gerenciamento.
-
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
-
O script de instalação do Jenkins direciona você para a página Personalizar o Jenkins. Selecione Install suggested plugins (Instalar plugins sugeridos).
-
Uma vez concluída a instalação, escolha Credenciais de administrador, selecione Salvar credenciais e, depois, Começar a usar o Jenkins.
-
No painel de navegação à esquerda, escolha Gerenciar Jenkins e, em seguida, selecione Gerenciar plugins.
-
Selecione a guia Available (Disponível) e, em seguida, digite
Amazon EC2 plugin
. -
Marque a caixa de seleção para
Amazon EC2 plugin
e, depois, selecione Install without restart (Instalar sem reiniciar). -
Quando a instalação terminar, selecione Go back to the top page (Voltar para a página inicial).
-
Escolha Gerenciar Jenkins e, em seguida, Gerenciar nós e nuvens.
-
Na seção Configurar nuvens, selecione Adicionar uma nova nuvem e, em seguida, escolha Amazon EC2.
-
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
-
Abra o console do Jenkins em um navegador Web.
-
Escolha o projeto que deseja configurar com Automação e depois escolha Configure.
-
Na guia Build, escolha Add Build Step.
-
Escolha Execute shell ou Execute Windows batch command (dependendo do seu sistema operacional).
-
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
\ --regionRegião da AWS of your source AMI
\ --parametersrunbook 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.
-
No projeto do Jenkins, escolha Criar agora. Jenkins retorna uma saída semelhante ao exemplo a seguir.