O blog da AWS
Atualize o AWS Tools for Powershell em grande escala com o AWS Systems Manager
Por Andre Faria
Neste post do Blog, mostrarei como atualizar o AWS Tools for Powershell em grande escala em seu ambiente usando o AWS Systems Manager Run Command.
Atualizar manualmente o AWS Tools for PowerShell em várias instâncias pode ser demorado, ineficiente e propenso a erros. Esses esforços operacionais manuais geralmente resultam em um pesadelo logístico, especialmente em ambientes corporativos de grande porte. O AWS Tools for Powershell são um conjunto de módulos do PowerShell criados com base na funcionalidade exposta pelo SDK da AWS para .NET, que permitem que você crie scripts de operações em seus recursos da AWS dentro da linha de comando do PowerShell. E com o AWS Systems Manager, você pode automatizar tarefas operacionais em seu ambiente de nuvem da AWS e em servidores locais, simplificando o gerenciamento de recursos e aplicativos. Isso facilita a operação e o gerenciamento de sua infraestrutura com segurança em grande escala.
Para esta postagem do blog, criarei um fluxo de trabalho que usa o recurso Run Command do AWS Systems Manager. Esse fluxo de trabalho executará um script do PowerShell que captura a versão do AWS Tools for PowerShell em todas as instâncias gerenciadas do Amazon Elastic Compute Cloud (Amazon EC2) em uma conta da AWS e a atualizará para a versão mais recente, se necessário.
Pré-requisitos
- Conhecimento básico do serviço AWS Systems Manager. Para obter mais informações, consulte o Guia do usuário do AWS Systems Manager e os vídeos de introdução em Getting Started with AWS Systems Manager.
- Os nós que têm o AWS Tools for PowerShell instalado devem ser configurados como nós gerenciados. Um nó gerenciado é uma instância do Amazon EC2 ou uma máquina não EC2 em seu ambiente híbrido que foi configurada para o AWS Systems Manager.
- Permissões do AWS Identity and Access Management (IAM) para utilizar a funcionalidade Run Command no AWS Systems Manager. Para obter mais informações, consulte Como o AWS Systems Manager funciona com o IAM.
Passo a passo
- Abra o console do AWS Systems Manager e selecione a opção Executar comando em Gerenciamento de nós (Figura 1).
Figura 1 — AWS Systems Manager — Executar comando
2. No painel Comandos, escolha Executar comando (Figura 2).
Figura 2- Comandos — Executar comando
3. Na caixa de pesquisa do documento de comando, digite AWS-RunPowerShellScript e selecione o botão de opção para o comando AWS-RunPowerShellScript (Figura 3).
Figura 3- Executar comando — Selecione o tipo de comando RunPowerShellScript
4. No painel Parâmetros de comando, cole o seguinte script do PowerShell, conforme mostrado na Figura 4:
$repo = "PSGallery" # PowerShell Gallery (powershellgallery.com)
# Validate NuGet provider is available (required to interact with PowerShell Gallery)
if(-not (Get-PackageProvider -Name NuGet -ErrorAction SilentlyContinue)) {
# Install NuGet provider if not present (required to interact with PowerShell Gallery)
try {
Install-PackageProvider -Name NuGet -Force | Out-Null
}
catch {
Write-Error "Failed to install NuGet provider: $($_.Exception.Message)"
Exit
}
}
# Set approved repository
Set-PSRepository -Name $repo -InstallationPolicy Trusted
# Retrieve installed modules
$installedModules = Get-InstalledModule -Name AWS* -ErrorAction Stop
# Check if AWS modules are not installed
if(-not $installedModules) {
Write-Output "No AWS modules installed."
Exit
}
# Loop through each installed AWS module
foreach ($module in $installedModules) {
# Try to get module from repository
try {
$repoModule = Find-Module -Name $module.Name -Repository $repo -ErrorAction Stop
}
catch {
Write-Error "Failed to find $($module.Name) in repository: $($_.Exception.Message)"
Continue
}
# Check if newer version available
if ($repoModule.Version -gt $module.Version) {
Write-Output "$($module.Name) $($module.Version) installed. $($repoModule.Name) $($repoModule.Version) available."
# Uninstall outdated version
try {
Uninstall-Module -Name $module.Name -AllVersions -Force -ErrorAction Stop
}
catch {
Write-Error "Failed to uninstall $($module.Name): $($_.Exception.Message)"
Continue
}
# Install latest version
try {
Install-Module -Name $module.Name -Force -ErrorAction Stop -Repository $repo
Write-Output "Updated $($module.Name) to $($repoModule.Version)"
}
catch {
Write-Error "Failed to install $($repoModule.Name): $($_.Exception.Message)"
Continue
}
}
# Latest version is already installed
else {
Write-Output "$($module.Name) $($module.Version) is installed and is the latest available version."
}
}
Figura 4- Executar comando — parâmetros de comando do PowerShell
Esse script do PowerShell pesquisará todos os módulos do AWS PowerShell instalados na instância em que está sendo executado. Em seguida, ele comparará a versão do módulo instalado com a versão mais recente disponível na Galeria do PowerShell e instalará a versão mais recente, se aplicável.
Há três opções de pacotes do AWS Tools for PowerShell disponíveis para computadores baseados em Windows:
- AWS.Tools — A versão modularizada do AWS Tools for PowerShell. Cada serviço da AWS é suportado por seu próprio pequeno módulo individual.
- AWSPowerShell.NetCore — A versão única de módulo grande do AWS Tools for PowerShell. Todos os serviços da AWS são suportados por esse único módulo grande.
- AWSPowerShell — A versão antiga de módulo grande, específica para Windows, do AWS Tools for PowerShell. Todos os serviços da AWS são suportados por esse único módulo grande.
Esse script atualizará somente os pacotes existentes para uma versão mais recente. Ele não substituirá um pacote por outro (por exemplo, atualizará o AWSPowerShell para AWSPowerShell.NetCore). Para obter mais informações sobre cada pacote disponível, inclusive como determinar qual pacote usar, consulte Quais são as ferramentas da AWS para PowerShell? no guia do usuário.
Também é importante observar que, atualmente, o AWS Tools for PowerShell versão 4 é a versão principal mais recente e fornece compatibilidade com versões anteriores do AWS Tools for PowerShell versão 3.3. Se você estiver atualizando da versão 3.3 para a versão 4, seus scripts existentes devem continuar funcionando com a nova versão. Eu recomendo testar minuciosamente cada um dos seus scripts antes da atualização. Para obter mais informações, consulte Migração do AWS Tools for PowerShell versão 3.3 para a versão 4.
5. Depois de colar o script no painel Parâmetros do comando, role para baixo até o painel Seleção de destino. Há três métodos para selecionar alvos no AWS Systems Manager Run Command:
-
- Especificar tags de instância — especifique um ou mais pares de chave-valor de tag para selecionar instâncias que compartilham essas tags.
- Escolha as instâncias manualmente — Selecione manualmente as instâncias que você deseja registrar como destinos.
- Escolha um grupo de recursos — Escolha um grupo de recursos que inclua os recursos que você deseja segmentar.
Neste exemplo, usei o método Specify instance tags. Eu atribuí uma chave de tag de update-pstools com um valor de sim a todos os destinos em que eu queria atualizar o AWS Tools for PowerShell (Figura 5).
Figura 5- Executar comando — Seleção de destino
A funcionalidade Executar comando no AWS Systems Manager permite que a saída do comando seja gravada em um bucket do Amazon Simple Storage Service (Amazon S3). Você também pode transmitir a saída do comando para os logs do Amazon CloudWatch.
6. Role para baixo até a seção Opções de saída. Neste exemplo, desativarei a capacidade de gravar a saída do comando em um bucket do Amazon S3 (Figura 6).
Figura 6: Executar comando — Opções de saída
Quando estiver pronto para continuar, vá até a parte inferior da página e clique no botão Executar (Figura 7).
Figura 7- Executar comando — Executar
Status e saída do comando
O comando agora será executado em todos os nós com as tags especificadas na etapa anterior. Você pode verificar o status do comando em cada nó consultando a coluna Status na seção Metas e saídas. O status será Em andamento e, eventualmente, mudará para Sucesso quando o script for executado nos nós de destino (Figura 8).
Figura 8- Executar comando — Alvos e saídas
Quando o status mudar para Sucesso para uma determinada instância (Figura 9), você pode clicar no ID da instância para ver a saída do comando dessa instância (Figura 10).
Figura 9- Executar comando — Status de destinos e saídas
Figura 10- Executar comando — Saída de comando
A Figura 10 mostra que a instância de exemplo tinha versões modularizadas do AWS Tools for PowerShell para vários serviços. Cada módulo individual estava desatualizado e, portanto, atualizado para a versão mais recente disponível quando eu executei o script.
Limpeza
Como nenhum recurso é criado em sua conta da AWS seguindo as etapas descritas neste exemplo, nenhuma limpeza é necessária.
Conclusão
Nesta postagem do blog, demonstrei como você pode usar o AWS Systems Manager Run Command para atualizar o AWS Tools for PowerShell em seus nós gerenciados de forma simples e automatizada. Isso permitirá que você reduza a sobrecarga operacional, melhore a consistência em seu ambiente e aprimore a segurança, permitindo que as atualizações sejam realizadas de maneira oportuna e repetível. Para saber mais sobre outros recursos do AWS Systems Manager, consulte a documentação do AWS Systems Manager.
A AWS tem significativamente mais serviços e mais recursos dentro desses serviços do que qualquer outro provedor de nuvem, tornando mais rápido, fácil e econômico mover seus aplicativos existentes para a nuvem e criar praticamente qualquer coisa que você possa imaginar. Ofereça aos seus aplicativos Microsoft a infraestrutura de que eles precisam para gerar os resultados comerciais que você deseja. Visite nossos blogs sobre o.NET na AWS e no banco de dados da AWS para obter orientações e opções adicionais para suas cargas de trabalho da Microsoft. Entre em contato conosco para iniciar sua jornada de migração e modernização hoje mesmo.
Este blog em português é uma tradução do blog original em inglês.
TAGS: automação, AWS Systems Manager, Windows On AWS, Windows Server
Autor
Andre Faria é gerente técnico sênior de contas com sede em Milford, Connecticut. Ele trabalha na organização Automotive Strategic Industries do AWS Enterprise Support, apoiando grandes empresas automotivas em sua jornada na nuvem. Fora do trabalho, ele é um entusiasta da aviação e piloto particular, então você provavelmente o encontrará voando pelo nordeste dos EUA.
|
Tradutores e Revisores
Luiz Rampanelli é um Solutions Architect no time da AWS Latam. Possui mais de 10 anos de experiência com workloads Microsoft em nuvem e ambientes híbridos. Atua com desenho de soluções seguindo as melhores práticas para que os clientes possam aproveitar ao máximo os benefícios da nuvem da AWS. | |
Diego Voltz atua como arquiteto de soluções senior no seguimento de enterprise na AWS no sul da Florida. Ele atuou por 15 anos como CTO de Startups no seguimento de Web Hosting e Health, tendo como foco virtualização, Storage e containers, hoje ajuda os clientes da AWS na jornada de adoção da nuvem e na otimização dos custos. |