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 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.

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 Cloud Assembly, você poderá exibi-la usando o serviço 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:
resources:
  Salt-Minion:
    type: Cloud.Machine
    properties:
      image: Ubuntu-18
      flavor: medium
      constraints:
        - tag: 'env:vsphere'
      cloudConfig: |
        #cloud-config
        hostname: ${input.saltminionhostname}
        users:
          - name: ${input.user}
            sudo: ['ALL=(ALL) NOPASSWD:ALL']
            groups: sudo
            shell: /bin/bash
        runcmd:
          - PASS=${input.password}
          - USER=${input.user}
          - echo $USER:$PASS | /usr/sbin/chpasswd
          - sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
          - service ssh reload
          - curl -L https://bootstrap.saltstack.com -o install_salt.sh
          - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}

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 do PowerShell

Configure comandos do PowerShell na seção cloudConfig dos seus modelos de nuvem.

Antes de ativar comandos do PowerShell, baixe o pacote de subordinados Salt no site do repositório Salt. Em seguida, conclua as seguintes etapas:
  1. Instale o serviço de subordinado do Salt na VM do Windows.
  2. Atualize o valor do nome do host do mestre do Salt na configuração do subordinado.
  3. Atualize o valor de impressão digital do mestre do Salt na configuração do subordinado.
  4. Defina o minion_id como o nome do recurso da VM que será usado para aceitar o subordinado no mestre do Salt.
  5. 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 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.