Agente Linux do Microsoft Azure
O editor de Downcodes apresentará o Microsoft Azure Linux Agent (waagent), que é uma ferramenta que gerencia o provisionamento do Linux e a interação da máquina virtual com o Azure Fabric Controller. Ele fornece os seguintes recursos para implantações de IaaS do Linux:
1. Provisionamento de imagens: waagent é responsável por gerenciar o processo inicial de provisionamento de máquinas virtuais Linux, incluindo configuração de rede, instalação de drivers e configuração de contas de usuário iniciais.
2. Gestão de rede: O waagent coordena-se com o Azure Fabric Controller para definir as definições de rede da máquina virtual, como endereço IP, máscara de sub-rede e gateway.
3. Gerenciamento do kernel: waagent pode gerenciar as atualizações do kernel da máquina virtual para garantir que ela esteja sempre executando a versão mais recente e segura do kernel.
4. Diagnóstico: o waagent pode coletar e relatar informações de integridade da máquina virtual para ajudar a diagnosticar problemas e resolver falhas.
5. Implantação do SCVMM: o waagent oferece suporte à integração com o System Center Virtual Machine Manager (SCVMM) para gerenciar e provisionar máquinas virtuais.
6. Extensões de máquina virtual: waagent suporta a execução de extensões de máquina virtual que fornecem funcionalidade e personalização adicionais, como instalação de software ou monitoramento de métricas.
7. Comunicação: o waagent se comunica com o Azure Fabric Controller por meio de dois canais:
* DVD de acréscimo de tempo de inicialização: para implantações de IaaS, um DVD de acréscimo de tempo de inicialização contendo um arquivo de configuração compatível com OVF fornece informações de provisionamento (além do par de chaves SSH).
* API REST: um endpoint TCP que expõe uma API REST para obter configurações de implantação e topologia.
waagent pode usar um proxy HTTP por meio das variáveis de ambiente httpproxy (para solicitações HTTP) ou httpsproxy (para solicitações HTTPS). Devido às limitações do Python, o waagent não suporta proxies HTTP que requerem autenticação.
Da mesma forma, se a variável de ambiente no_proxy estiver definida, o waagent ignorará o proxy.
Observe que a forma como essas variáveis de ambiente são definidas para o serviço waagent varia entre distribuições. Para distribuições que usam systemd, uma abordagem comum é usar Environment ou EnvironmentFile na seção [Service] da definição de serviço, por exemplo, usando uma substituição ou inserindo um arquivo (consulte edição systemctl para substituições).
Exemplo
`
cat /etc/systemd/system/walinuxagent.service.d/http-proxy.conf
[Serviço]
Ambiente = "http_proxy=http://proxy.example.com:80/"
Ambiente = "https_proxy=http://proxy.example.com:80/"
#
`
waagent passa seu ambiente para as extensões de máquina virtual que executa, incluindo httpproxy e httpsproxy, portanto, definir um proxy para waagent também definirá um proxy para a extensão de máquina virtual.
Se você usar as variáveis de configuração HttpProxy.Host e HttpProxy.Port, elas substituirão as configurações do ambiente. Observe que essas variáveis de configuração são locais para o processo waagent e não são passadas para a extensão da máquina virtual.
waagent requer alguns pacotes de sistema para funcionar corretamente. Esses pacotes variam de acordo com a distribuição.
A instalação por meio do repositório de pacotes de distribuição é o único método de instalação suportado.
Você pode instalar a partir da fonte para obter opções mais avançadas, como instalar em um local personalizado ou criar uma imagem personalizada. No entanto, a instalação a partir do código-fonte pode substituir as personalizações feitas no waagent pela sua distribuição e destina-se apenas a usuários avançados. Temos suporte muito limitado para esse método.
Para instalar a partir do código-fonte, você pode usar setuptools:
`
sudo python setup.py instalar --register-service
`
Para Python 3, use:
`
sudo python3 setup.py instalar --register-service
`
Você pode ver mais opções de instalação executando o seguinte comando:
`
sudo python setup.py instalar --help
`
O arquivo de log waagent é salvo em /var/log/waagent.log.
Finalmente, você pode personalizar seu próprio pacote RPM ou DEB usando os exemplos de configuração fornecidos nas seções DEB e RPM abaixo. Este método também é adequado para usuários avançados e temos suporte muito limitado para esse método.
A atualização por meio do repositório de pacotes de distribuição ou o uso de atualizações automáticas são os únicos métodos suportados. Você pode encontrar mais informações aqui: Atualizando o Agente Linux.
Para atualizar o waagent a partir do código-fonte, você pode usar setuptools. A atualização a partir do código-fonte é apenas para usuários avançados e temos suporte muito limitado para esse método.
`
sudo python setup.py instalar --force
`
Reinicie o serviço waagent:
`
sudo serviço waagent reiniciar
`
Para Ubuntu, use:
`
reinicialização do serviço sudo walinuxagent
`
Para CoreOS, use:
`
sudo systemctl reiniciar waagent
`
-verbose: aumenta o detalhamento do comando especificado.
-force: Ignora a confirmação interativa para alguns comandos.
-help: Lista comandos e sinalizadores suportados.
-deprovision: tenta limpar o sistema e torná-lo adequado para reprovisionamento, removendo o seguinte:
* Todas as chaves de host SSH (se Provisioning.RegenerateSshHostKeyPair no arquivo de configuração for 'y').
* Configuração do servidor de nomes em /etc/resolv.conf.
* A senha root em /etc/shadow (se Provisioning.DeleteRootPassword no arquivo de configuração for 'y').
* Locação de cliente DHCP em cache.
* Redefina o nome do host para localhost.localdomain.
avisar! desprovisionamento não pode garantir que a imagem tenha sido limpa de todas as informações confidenciais e seja adequada para redistribuição.
-deprovision+user: executa todas as ações em desprovisionamento (descritas acima), além de excluir a última conta de usuário provisionada e seus dados associados.
-versão: exibe a versão do waagent.
-serialconsole: Configure o GRUB para marcar ttyS0 (a primeira porta serial) como o console de inicialização. Isso garantirá que os logs de inicialização do kernel sejam enviados para a porta serial e possam ser usados para depuração.
-daemon: Execute waagent como um processo daemon para gerenciar a interação com a plataforma. Este parâmetro é especificado para waagent no script de inicialização do waagent.
-start: Execute o waagent como um processo em segundo plano.
-collect-logs [-full]: Executa o utilitário de coleta de logs, que coletará logs relacionados ao agente para fins de depuração e os armazenará na pasta do agente no disco. A localização exata será exibida quando executado. Use o sinalizador -full para uma coleta de log mais abrangente.
Um arquivo de configuração (/etc/waagent.conf) controla a operação do waagent. Linhas vazias e linhas cujo primeiro caractere é # são ignoradas (comentários de fim de linha não são suportados).
Um exemplo de arquivo de configuração é mostrado abaixo:
`
Extensões.Enabled=y
Extensões.GoalStatePeriod=6
Provisionamento.Agent=auto
Provisionamento.DeleteRootPassword=n
Provisionamento.RegenerateSshHostKeyPair=y
Provisionamento.SshHostKeyPairType=rsa
Provisionamento.MonitorHostName=y
Provisionamento.DecodeCustomData=n
Provisionamento.ExecuteCustomData=n
Provisionamento.PasswordCryptId=6
Provisionamento.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/recurso
ResourceDisk.MountOptions=Nenhum
ResourceDisk.EnableSwap=n
ResourceDisk.EnableSwapEncryption=n
ResourceDisk.SwapSizeMB=0
Logs.Verbose=n
Logs.Collect=y
Logs.CollectPeriod=3600
SO.AllowHTTP=n
OS.RootDeviceScsiTimeout=300
OS.EnableFIPS=n
OS.OpensslPath=Nenhum
OS.SshClientAliveInterval=180
OS.SshDir=/etc/ssh
HttpProxy.Host=Nenhum
HttpProxy.Port=Nenhum
`
As diversas opções de configuração são descritas detalhadamente abaixo. As opções de configuração são divididas em três tipos: booleano, string e inteiro. As opções de configuração booleana podem ser especificadas como "y" ou "n". A palavra-chave especial "None" pode ser usada com determinados itens de configuração de string, conforme descrito abaixo.
Tipo: Booleano
Valor padrão: y
Esta opção permite ao usuário ativar ou desativar capacidades de processamento estendidas no agente. Os valores válidos são “y” ou “n”. Se o processamento estendido estiver desabilitado, o status do destino ainda será processado e o status da máquina virtual ainda será relatado, mas apenas a cada 5 minutos. A configuração estendida no estado de destino será ignorada. Observe que recursos como redefinição de senha, atualizações de chave SSH e backups dependem de extensões. Desative esta opção apenas se você não precisar da extensão.
Nota: Desativar a extensão desta forma não é o mesmo que não usar o proxy. Para fazer isso, o sinalizador provisionVMAgent deve ser definido no momento do provisionamento por meio de qualquer API usada. Forneceremos mais detalhes sobre isso em nosso wiki, mas ainda não está disponível.
Tipo: Booleano
Valor padrão: n
Aguarde a conclusão do cloud-init antes de realizar a expansão da máquina virtual (status do cloud-init --wait).
As extensões cloud-init e de máquina virtual são maneiras comuns de personalizar uma máquina virtual durante a implantação inicial. Por padrão, o agente começará a executar o escalonamento enquanto o cloud-init ainda pode estar na fase de 'configuração' e não aguardará a conclusão da fase 'final'. cloud-init e extensões podem executar operações conflitantes entre si (por exemplo, ambos podem tentar instalar um pacote). Definir esta opção como 'y' garante que a expansão da máquina virtual só seja executada depois que o cloud-init tiver concluído todos os estágios.
Observe que o uso dessa opção requer a criação de uma imagem personalizada e a definição do valor dessa opção como 'y' para garantir que a operação de espera seja executada durante a implantação inicial da máquina virtual.
Tipo: inteiro
Valor padrão: 3600
Tempo limite em segundos para o agente aguardar a inicialização da nuvem. Se o tempo limite expirar, o agente continuará a realizar a expansão da máquina virtual. Consulte Extensions.WaitForCloudInit para obter mais detalhes.
Tipo: inteiro
Valor padrão: 6
Com que frequência (em segundos) pesquisar o novo status de destino e relatar o status de máquinas virtuais e extensões. O estado de destino descreve o estado desejado da extensão na máquina virtual.
Observação: definir esse parâmetro por mais de alguns minutos pode fazer com que o status da máquina virtual seja relatado como Sem resposta/Indisponível no portal do Azure. Além disso, essa configuração afeta a rapidez com que o agente começa a realizar o escalonamento.
Tipo: Booleano
Valor padrão: y
Permite a atualização automática de manipuladores de extensão. Os manipuladores de extensão são responsáveis por gerenciar extensões e relatar o status da máquina virtual. A funcionalidade principal do agente está contida no manipulador de extensão e os usuários são incentivados a habilitar esta opção para manter a versão mais recente.
Quando esta opção estiver habilitada, o agente instalará novas versões assim que estiverem disponíveis. Quando desabilitado, o agente não instalará nenhuma versão nova, mas utilizará a versão mais recente já instalada na máquina virtual.
ilustrar:
Para obter mais informações sobre versões de agentes, consulte nossas Perguntas frequentes.
Para obter mais informações sobre atualizações de agentes, consulte nossas Perguntas frequentes.
Para obter mais informações sobre AutoUpdate.UpdateToLatestVersion e AutoUpdate.Enabled, consulte nossas Perguntas frequentes.
Tipo: Booleano
Valor padrão: y
Permite a atualização automática de manipuladores de extensão. Este sinalizador é suportado por motivos herdados e é altamente recomendável usar AutoUpdate.UpdateToLatestVersion em vez deste sinalizador.
A diferença entre esses dois sinalizadores é que quando definido como 'n', AutoUpdate.Enabled usará a versão do manipulador de extensão pré-instalada na imagem, enquanto AutoUpdate.UpdateToLatestVersion usará a versão mais recente instalada na máquina virtual (por meio de atualizações automáticas) .
Na maioria das distribuições, o valor padrão é 'y'.
Tipo: string
Valor padrão: automático
Selecione o agente de provisionamento a ser usado (ou permita que o waagent determine isso especificando "auto"). As opções possíveis são “auto” (padrão), “waagent”, “cloud-init” ou “disabled”.
Tipo: Booleano
Valor padrão: y
Esta opção permite ao usuário ativar ou desativar a funcionalidade de provisionamento no agente. Os valores válidos são “y” ou “n”. Se o provisionamento estiver desabilitado, o host SSH e as chaves de usuário na imagem serão preservados e qualquer configuração especificada na API de Provisionamento do Azure será ignorada.
NOTA: Esta opção de configuração foi removida e não tem mais efeito. waagent agora detecta automaticamente o cloud-init como um agente de provisionamento (opcionalmente substituído usando Provisioning.Agent).
Tipo: Booleano
Valor padrão: n
Monitore alterações de nome de host e publique alterações por meio de solicitações DHCP.
Tipo: inteiro
Valor padrão: 30
Com que frequência (em segundos) monitorar alterações no nome do host. Se MonitorHostName não estiver definido, essa configuração será ignorada.
Tipo: Booleano
Valor padrão: n
Esta opção ativa/desativa o suporte para provisionamento via cloud-init.
Se for verdadeiro ("y"), o agente aguardará a conclusão do cloud-init antes de instalar extensões e processar o estado de destino mais recente. Provisioning.Enabled Deve ser desabilitado ("n") para que esta opção tenha efeito. Definir Provisioning.Enabled como true ("y") substitui essa opção e executa o código de provisionamento do agente integrado.
NOTA: Esta opção de configuração foi removida e não tem mais efeito. waagent agora detecta automaticamente o cloud-init como um agente de provisionamento (opcionalmente substituído usando Provisioning.Agent).
Tipo: Booleano
Valor padrão: n
Se esta opção for definida, a senha root no arquivo /etc/shadow será removida durante o provisionamento.
Tipo: Booleano
Valor padrão: y
Se esta opção for definida, todos os pares de chaves de host SSH (ecdsa, dsa e rsa) em /etc/ssh/ serão excluídos durante o provisionamento. e gere um novo par de chaves.
O tipo de criptografia do novo par de chaves pode ser configurado por meio da entrada Provisioning.SshHostKeyPairType. Observe que algumas distribuições recriarão pares de chaves SSH para quaisquer tipos de criptografia ausentes quando o daemon SSH for reiniciado (por exemplo, após uma reinicialização).
Tipo: string
Padrão: rsa
Isso pode ser definido como o tipo de algoritmo de criptografia compatível com o daemon SSH na máquina virtual. Os valores comumente suportados incluem “rsa”, “dsa” e “ecdsa”.
Observe que "ecdsa" não é compatível com "putty.exe" no Windows. Portanto, se você planeja usar putty.exe no Windows para se conectar a uma implantação Linux, use “rsa” ou “dsa”.
Tipo: Booleano
Valor padrão: y
Se esta opção for definida, o waagent monitorará as máquinas virtuais Linux em busca de alterações no nome do host (conforme retornado pelo comando "hostname") e atualizará automaticamente a configuração de rede na imagem para refletir as alterações. Para enviar a mudança de nome para o servidor DNS, a rede na máquina virtual será reiniciada. Isso causará uma breve perda de conexão com a Internet.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, o waagent decodificará CustomData de Base64.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, o waagent executará CustomData após o provisionamento.
Tipo: string
Valor padrão: 6
O algoritmo usado pelo crypt ao gerar hashes de senha.
Tipo: string
Valor padrão: 10
O comprimento do salt aleatório usado ao gerar hashes de senha.
Tipo: Booleano
Valor padrão: y
Se esta opção for definida, o disco de recursos fornecido pela plataforma será formatado e montado pelo waagent, desde que o tipo de sistema de arquivos solicitado pelo usuário em "ResourceDisk.Filesystem" não seja "ntfs". Uma única partição do tipo Linux (83) será fornecida no disco. Observe que se esta partição puder ser montada com sucesso, ela não será formatada.
Tipo: string
Padrão: ext4
Isto especifica o tipo de sistema de arquivos do disco de recursos. Os valores suportados variam de acordo com a distribuição Linux. Se a string for X, mkfs.X deverá estar presente na imagem do Linux. As imagens do SLES 11 geralmente devem usar 'ext3'. Imagens BSD devem usar 'ufs2' aqui.
Tipo: string
Valor padrão: /mnt/recurso
Isto especifica o caminho para montar o disco de recursos.
Tipo: string
Valor padrão: Nenhum
Especifica opções de montagem em disco a serem passadas para o comando mount -o. Esta é uma lista de valores separados por vírgulas, como 'nodev,nosuid'. Veja mount(8) para detalhes.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, um arquivo de troca (/swapfile) será criado no disco de recursos e adicionado ao espaço de troca do sistema.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, o arquivo de troca (/swapfile) será montado como um sistema de arquivos criptografado (flag suportado apenas no FreeBSD).
Tipo: inteiro
Valor padrão: 0
O tamanho do arquivo de troca em megabytes.
Tipo: Booleano
Valor padrão: n
Se esta opção for definida, o detalhamento do log aumentará. waagent registra em /var/log/waagent.log e usa a função logrotate do sistema para girar os logs.
Tipo: Booleano
Valor padrão: y
Se esta opção estiver definida, os logs do agente serão coletados periodicamente e carregados em um local seguro para melhorar a capacidade de suporte.
NOTA: Este recurso depende dos recursos de uso de recursos do agente (cgroups); esse sinalizador não terá efeito em nenhuma distribuição que não seja suportada.
Tipo: inteiro
Valor padrão: 3600
Isso configura a frequência com que os logs são coletados e carregados. O valor padrão é por hora.
Nota: Isso só entra em vigor quando a opção Logs.Collect está habilitada.
Tipo: Booleano
Valor padrão: n
Se o suporte SSL não for compilado em Python, o proxy falhará em todas as solicitações HTTPS. Você pode definir esta opção como 'y' para fazer com que o proxy retorne ao HTTP em vez de falhar na solicitação.
Nota: Permitir HTTP pode expor inadvertidamente dados seguros.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, o agente tentará instalar e carregar um driver de kernel RDMA que corresponda à versão do firmware no hardware subjacente.
Tipo: Booleano
Valor padrão: n
Se esta opção estiver definida, o agente emitirá "OPENSSL_FIPS=1" para o ambiente ao executar comandos OpenSSL. Isso instrui o OpenSSL a usar qualquer biblioteca instalada compatível com FIPS.
Observe que o próprio agente não possui código relacionado ao FIPS. Se um certificado compatível com FIPS não estiver instalado, ativar esta opção fará com que todos os comandos OpenSSL falhem.
Tipo: inteiro
Valor padrão: 30
O agente monitora as reinicializações do cliente DHCP e restaura as regras de rede quando ocorre uma reinicialização. Essa configuração determina com que frequência, em segundos, o monitoramento é reiniciado.
Tipo: inteiro
Valor padrão: 300
Isto configura o tempo limite de SCSI em segundos no dispositivo raiz. Se não for definido, o padrão do sistema será usado.
Tipo: inteiro
Valor padrão: 30
Com que frequência (em segundos) definir o tempo limite de SCSI no dispositivo raiz. Se RootDeviceScsiTimeout não estiver definido, essa configuração será ignorada.
Tipo: string
Valor padrão: Nenhum
Isto pode ser usado para especificar um caminho alternativo para o binário openssl usado para operações criptográficas.
Tipo: inteiro
Valor padrão: 30
Com que frequência (em segundos) as regras do udev (75-persistent-net-generator.rules e /etc/udev/rules.d/70-persistent-net.rules) são excluídas para nomes de interface de rede persistentes.
Tipo: inteiro
Padrão: 180
Este valor configura o número de segundos que o agente usa para a opção de configuração SSH ClientAliveInterval.
Tipo: string
Padrão: /etc/ssh
Esta opção pode ser usada para substituir o local padrão do diretório de configuração SSH.
Tipo: string
Valor padrão: Nenhum
Se esta opção estiver definida, o agente usará este servidor proxy para solicitações HTTP/HTTPS. Esses valores substituem as variáveis de ambiente httpproxy ou httpsproxy. Finalmente, HttpProxy.Host é necessário se usado, e HttpProxy.Port é opcional.
Tipo: Booleano
Valor padrão: y
Se esta opção for definida, o agente tentará definir limites de cgroups para CPU e memória para o próprio processo do agente, bem como para processos estendidos. Veja o wiki para mais detalhes sobre isso.
Tipo: string
Valor padrão: customscript, runcommand
Lista de extensões a serem excluídas das restrições de cgroups. Isso deve ser separado por vírgulas.
O WALinuxAgent coleta e envia dados de uso à Microsoft para nos ajudar a melhorar nossos produtos e serviços. Os dados recolhidos são utilizados para monitorizar o estado do serviço e ajudar nos pedidos de suporte do Azure. Os dados recolhidos não contêm qualquer informação pessoalmente identificável. Leia nossa declaração de privacidade para saber mais.
Atualmente, o WALinuxAgent não oferece suporte à desativação da telemetria. Para desabilitar a coleta de telemetria, o WALinuxAgent deve ser removido. Se você precisar dessa funcionalidade, abra um problema no GitHub e descreva suas necessidades.
Não mantemos informações de empacotamento neste repositório, mas alguns exemplos são mostrados abaixo para referência. Para embalagens mantidas oficialmente, consulte o repositório de lançamento downstream.
O pacote oficial do Ubuntu WALinuxAgent pode ser encontrado aqui.
Execute uma vez:
Instale os pacotes necessários
`
sudo apt-get -y instalar ubuntu-dev-tools pbuilder python-all debhelper
`
Criar ambiente pbuilder
`
sudo pbuilder criar --debootstrapopts --variant=buildd
`
Obtenha waagent.dsc do repositório de pacotes downstream
Para compilar um pacote, faça o seguinte no diretório superior:
Construir pacote de código-fonte
`
dpkg-buildpackage -S
`
Pacote de construção
`
sudo pbuilder construir waagent.dsc
`
Obtenha o pacote compilado, geralmente localizado em /var/cache/pbuilder/result
As instruções a seguir descrevem como construir pacotes rpm.
Instalar ferramentas de configuração
`
curl https://bootstrap.pypa.io/ez_setup.py -o - |
`
Os comandos a seguir construirão os RPMs binários e de origem:
`
python setup.py bdist_rpm
`
Este projeto adotou o Código de Conduta da Microsoft para Código-Fonte Aberto. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] se tiver perguntas ou comentários adicionais.
Exemplo:
Licença Apache-2.0