Depois de instalar e integrar o serviço SaltStack Config, você também precisa instalar, executar e registrar o serviço de subordinados Salt em todos os nós que pretende gerenciar usando o SaltStack Config. Você pode implantar o serviço de subordinados Salt nos seus nós usando modelos de nuvem do vRealize Automation ou instalando o serviço por meio do Secure Shell (SSH).

O Salt e sua relação com o SaltStack Config

O SaltStack Config é executado no Salt, uma estrutura de execução remota de código aberto baseada em Python e usada para:

  • Gerenciamento de configuração
  • Automação
  • Provisionamento
  • Orquestração

O Salt é a tecnologia subjacente à funcionalidade central do SaltStack Config. O SaltStack Config aumenta e estende o Salt, fornecendo funcionalidade e recursos adicionais que facilitam ainda mais o seu uso.

O Salt usa o modelo de controlador/cliente, no qual um controlador emite comandos para um cliente, que então executa esses comandos. No ecossistema Salt, o controlador é um servidor que está executando o serviço do mestre Salt. Ele emite comandos para um ou mais subordinados Salt, que são os nós que estão executando o serviço de subordinados Salt e que estão registrados nesse mestre específico.

Outra maneira de descrever o Salt é como um modelo de publicador/assinante. O mestre publica trabalhos que precisam ser executados, e os subordinados assinam esses trabalhos. Quando um trabalho específico for aplicável a um subordinado, ele executará esse trabalho. Quando um subordinado finaliza a execução de um trabalho, ele envia dados de retorno do trabalho de volta ao mestre.

Minions são nós que executam o serviço de sal-minion. Esse serviço escuta os comandos de um Sal master e realiza as tarefas solicitadas. Você pode implantar subordinados a partir de modelos de nuvem do vRealize Automation.

Antes de começar a usar o SaltStack Config para gerenciamento de configuração, você deve instalar o serviço de subordinados Salt em todos os nós que deseja gerenciar. Você também deve registrar os subordinados aceitando suas chaves e enviando-as ao SaltStack Config.

Antes de começar

  • Instale e configure o SaltStack Config e integre-o ao vRealize Automation.
  • Os nós que são gerenciados pelo SaltStack Config devem ser capazes de acessar o mestre Salt e devem residir na mesma rede que o ponto de integração do SaltStack Config e o mestre Salt.
  • As máquinas do vSphere implantadas em uma rede privada devem ser capazes de iniciar uma conexão com a integração do SaltStack Config e o mestre Salt.

Instalando o serviço de subordinados Salt via SSH

O processo para instalar o serviço de subordinados Salt usando SSH depende do sistema operacional em execução nesses nós.

Após instalar o serviço de subordinados Salt:
  1. Configure cada subordinado para se comunicar com o mestre criando um arquivo master.conf no diretório /etc/salt/minion.d. Nesse arquivo, forneça o endereço IP do mestre. Por exemplo: master: 192.0.2.1
  2. Inicie o serviço do subordinado:

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Repita as etapas anteriores para todos os nós restantes.

Depois de configurar esses arquivos de subordinados para apontar para o mestre Salt, aceite as chaves dos subordinados no serviço SaltStack Config no espaço de trabalho de Chaves de Subordinados.

Instalando o serviço de subordinados Salt com o uso de modelos de nuvem do vRealize Automation

Para implantar o serviço de subordinados Salt usando modelos de nuvem, você deve ter acesso a e ser proficiente no uso de cloud-init (Linux) ou Cloudbase-init (Windows). Para adicionar subordinados Salt ao mestre Salt configurado para a integração do vRealize Automation SaltStack Config, a máquina virtual no seu modelo de nuvem deve oferecer suporte para cloud-init (Linux) ou Cloudbase-init (Windows).

As seções a seguir explicam como implantar o serviço de subordinados Salt usando modelos de nuvem.

Grupo de propriedades do SaltStackConfiguration

O processo de instalação e configuração do serviço do SaltStack Config no vRealize Suite Lifecycle Manager cria um grupo de propriedades do vRealize Automation chamado de SaltStackConfiguration. Você usa os valores do grupo de propriedades do SaltStackConfiguration ao configurar a integração do SaltStack Config em uma implantação ou modelo de nuvem do vRealize Automation. Você também pode usá-los na configuração baseada em cloud-init ou Cloudbase-init em um modelo do vRealize Automation (anteriormente chamado de blueprints) para instalar subordinados. As duas propriedades no SaltStackConfiguration são masterAddress, que corresponde à configuração hostname no ponto de integração do SaltStack Config e masterFingerprint. Um exemplo de grupo de propriedades do SaltStackConfiguration é mostrado abaixo.

A tela mostra a página de grupos de propriedades do vRealize Automation e o grupo de propriedades do "SaltStackConfiguration" criado quando o SaltStack Config é instalado

Adicione subordinados ao mestre do Salt configurado para vRealize Automation

Quando SaltStack Config é instalado, um endereço IP do mestre do Salt é especificado. Esse endereço IP mestre é usado como a propriedade do masterAddress ao implantar subordinados de um modelo de nuvem do vRealize Automation.

Instale e implante subordinados usando scripts cloud-init ou Cloudbase-init em uma implantação ou modelo de nuvem do vRealize Automation. Você também pode usar um mapeamento de imagem que representa um script de configuração de nuvem que usa qualquer um desses formatos. Para adicionar subordinados do Salt ao mestre do Salt que está associado a uma integração do vRealize Automation SaltStack Config, a máquina de destino deve dar suporte ao cloud-init (Linux) ou ao Cloudbase-init (Windows). Os scripts de configuração de nuvem do vRealize Automation suportam ambos os formatos.

Configure um recurso de máquina no modelo de nuvem com um valor minionId e um valor cloudConfig e consulte o grupo de propriedades do SaltStackConfiguration. O grupo de propriedades do SaltStackConfiguration é criado durante a instalação e a configuração do serviço do SaltStack Config no vRealize Suite Lifecycle Manager. Ele contém as propriedades masterAddress e masterFingerprint.

O valor minionId deve corresponder ao valor especificado para o /salt/minion_id da máquina na seção cloudConfig do código do modelo de nuvem.

Abaixo, são mostrados exemplos de códigos de modelo de nuvem do vRealize Automation baseados no Windows e no Linux. Observe que os scripts de configuração de nuvem podem ser especificados usando qualquer um dos seguintes métodos:
  • Imagem do vRealize Automation chamada do código do modelo de nuvem
  • Script de configuração de nuvem chamado do código do modelo de nuvem
  • O conteúdo do script de configuração de nuvem adicionado diretamente ao código de modelo de nuvem

Observação: Quando você implanta um modelo de nuvem que contém subordinados Salt, se a implantação não estiver visível no vRealize Automation Cloud Assembly, você poderá exibi-la usando o serviço vRealize Automation Service Broker.

Exemplo: implantação baseada em Linux e cloud-init

Um exemplo de configuração de modelo de nuvem para implantar minions em uma máquina baseada em Linux compatível com cloud-init é mostrado abaixo:
inputs: {}
resources:
  LinuxVM-Minion:
    type: Cloud.vSphere.Machine
    properties:
      name: salt-minion-vra
      cpuCount: 1
      totalMemoryMB: 2048
      imageRef: 'https://build-artifactory.eng.vmware.com/symphony-infra-local/ubuntu/releases/xenial/release-20190605/ubuntu-16.04-server-cloudimg-amd64.ova'
      minionId: '${resource.LinuxVM-Minion.resourceName}'
      cloudConfig: |
        #cloud-config
        runcmd:
          - sudo echo '${resource.LinuxVM-Minion.resourceName}' > /etc/salt/minion_id
          - curl -L https://bootstrap.saltstack.com -o install_salt.sh
          - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}
        salt_minion:
          pkg_name: 'salt-minion'
          service_name: 'salt-minion'
          config_dir: '/etc/salt'
          conf:
            master: ${propgroup.SaltStackConfiguration.masterAddress}
            master_finger: ${propgroup.SaltStackConfiguration.masterFingerPrint}
      remoteAccess:
        authentication: publicPrivateKey
        sshKey: ssh-rsa your-public-key
      networks:
        - network: '${resource.vSphere_Network.id}'
  vSphere_Network:
    type: Cloud.Network
    properties:
      networkType: existing

Exemplo: implantação baseada em Windows e Cloudbase-init

Um exemplo de configuração de modelo de nuvem para implantar minions em uma máquina com base em Windows compatível com Cloudbase-init é mostrado abaixo:
formatVersion: 1
inputs: {}
resources:
  WindowsVM-Minion:
    type: Cloud.vSphere.Machine
    properties:
      image: win2016
      flavor: medium
      customizationSpec: Windows
      minionId: '${resource.WindowsVM-Minion.resourceName}'
      networks:
        - network: '${resource.wpnet.id}'
          name: '${wpnet.name}'
          assignPublicIpAddress: true
      cloudConfig: |
        #ps1_sysnative
        [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -OutFile C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe -Uri https://repo.saltstack.com/windows/Salt-Minion-3002.2-Py3-AMD64-Setup.exe
        Start-Process -Wait -FilePath "C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe" -ArgumentList "/S" -PassThru
        ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master: salt", "master: ${propgroup.SaltStackConfiguration.masterAddress}") | Set-Content -Path C:\salt\conf\minion
        ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master_finger: ''", "master_finger: '${propgroup.SaltStackConfiguration.masterFingerPrint}'") | Set-Content -Path C:\salt\conf\minion
        Set-Content -Path C:\salt\conf\minion_id -Value '${resource.WindowsVM-Minion.resourceName}'
        C:\salt\salt-call.bat service.restart salt-minion
  wpnet:
    type: Cloud.Network
    properties:
      name: wpnet
      networkType: existing

Como configurar comandos Powershell

Você pode configurar comandos do PowerShell na seção cloudConfig usando as seguintes etapas.
  1. Baixe o pacote de subordinados Salt no site do repositório Salt.
  2. Instale o serviço de subordinado do Salt na VM do Windows.
  3. Atualize o valor do nome do host do mestre do Salt na configuração do subordinado.
  4. Atualize o valor de impressão digital do mestre do Salt na configuração do subordinado.
  5. Defina o minion_id como o nome do recurso da VM que será usado para aceitar o subordinado no mestre do Salt.
  6. Reinicie o subordinado.

Mais informações sobre a implantação de Salt minions

Para conhecer métodos alternativos de usar o SaltStack Config integrado para implantar subordinados Salt de um modelo de nuvem do vRealize Automation, leia a postagem de blog Cloud Assembly e segredos ABX (e como usá-los para instalar agentes de subordinado SaltStack do vRealize).

Para obter informações relacionadas sobre como definir e implantar modelos do vRealize Automation Cloud Assembly em geral, especialmente se estiver familiarizado com o SaltStack, mas não com o vRealize Automation, consulte Projetando suas implantações do vRealize Automation Cloud Assembly.