SaltStack Config 서비스를 설치하고 통합한 후에는 SaltStack Config를 사용하여 관리하려는 노드에 Salt 미니언 서비스를 설치, 실행 및 등록해야 합니다. vRealize Automation 클라우드 템플릿을 사용하여 Salt 미니언 서비스를 노드에 배포하거나 SSH(보안 셸)를 통해 서비스를 설치할 수 있습니다.

Salt 및 SaltStack Config와의 관계

SaltStack Config는 Python 기반 오픈 소스 원격 실행 프레임워크인 Salt를 기반으로 실행되며, 아래와 같은 용도로 사용됩니다.

  • 구성 관리
  • 자동화
  • 프로비저닝
  • 오케스트레이션

Salt는 SaltStack Config 핵심 기능의 기반이 되는 기술입니다. SaltStack Config는 사용 편의성을 높이는 기능 및 추가 기능을 제공하여 Salt를 향상시키고 확장합니다.

Salt는 컨트롤러가 클라이언트에 명령을 내리고 클라이언트가 명령을 실행하는 컨트롤러-클라이언트 모델을 사용합니다. Salt 에코시스템에서 컨트롤러는 Salt 마스터 서비스를 실행하는 서버입니다. Salt 미니언 서비스를 실행하고 특정 마스터에 등록된 노드인 하나 이상의 Salt 미니언에 명령을 내립니다.

Salt를 설명하는 다른 방식은 게시자-구독자 모델입니다. 마스터는 실행해야 하는 작업을 게시하고 미니언은 이 작업을 구독합니다. 특정 작업이 이 미니언에 적용되면 해당 작업이 실행됩니다. 미니언이 작업 실행을 마치면 작업 반환 데이터를 다시 마스터에 보냅니다.

미니언은 Salt 미니언 서비스를 실행하는 노드입니다. 이 서비스는 Salt 마스터의 명령을 수신 대기하고 요청된 작업을 수행합니다. vRealize Automation 클라우드 템플릿에서 미니언을 배포할 있습니다.

구성 관리에 SaltStack Config를 사용하기 시작하려면 먼저 관리하려는 모든 노드에 Salt 미니언 서비스를 설치해야 합니다. 또한 미니언의 키를 SaltStack Config에 보내고 수락하여 등록해야 합니다.

시작하기 전에

  • SaltStack Config를 설치 및 구성하고 vRealize Automation과 통합합니다.
  • SaltStack Config에서 관리되는 노드는 Salt 마스터에 연결할 수 있어야 하며 SaltStack Config 통합 지점 및 Salt 마스터와 동일한 네트워크에 상주해야 합니다.
  • 프라이빗 네트워크에 배포된 vSphere 시스템은 SaltStack Config 통합 및 Salt 마스터와의 연결을 시작할 수 있어야 합니다.

SSH를 통해 Salt 미니언 서비스 설치

SSH를 사용하여 Salt 미니언 서비스를 설치하는 프로세스는 해당 노드에서 실행 중인 운영 체제에 따라 다릅니다.

  • RedHat Linux 또는 CentOS에 Salt 미니언 서비스를 설치하는 방법에 대한 자세한 내용은 Salt 설치(설치 전) 항목을 참조하십시오.
  • 다른 운영 체제의 경우 http://repo.saltstack.com/에서 참조하십시오.
Salt 미니언 서비스를 설치한 후에는:
  1. /etc/salt/minion 디렉토리의 master.conf 파일을 편집하여 각 미니언이 마스터와 통신하도록 구성합니다. 이 파일에 마스터의 IP 주소를 입력합니다. 예: master: 192.0.2.1
  2. 미니언 서비스를 시작합니다.

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. 나머지 모든 노드에 대해 이전 단계를 반복합니다.

이러한 미니언 파일이 Salt 마스터를 가리키도록 구성한 후 미니언 키 업무 공간의 SaltStack Config 서비스에서 미니언 키를 수락합니다.

vRealize Automation 클라우드 템플릿을 사용하여 Salt 미니언 서비스 설치

클라우드 템플릿을 사용하여 Salt 미니언 서비스를 배포하려면 cloud-init(Linux) 또는 Cloudbase-init(Windows)에 대한 액세스 권한이 있어야 하며 사용에 능숙해야 합니다. vRealize Automation SaltStack Config 통합에 대해 구성된 Salt 마스터에 Salt 미니언을 추가하려면 클라우드 템플릿의 가상 시스템이 cloud-init(Linux) 또는 Cloudbase-init(Windows)를 지원해야 합니다.

다음 섹션에서는 클라우드 템플릿을 사용하여 Salt 미니언 서비스를 배포하는 방법을 설명합니다.

SaltStackConfiguration 속성 그룹

vRealize Suite Lifecycle Manager에서 SaltStack Config 서비스를 설치하고 구성하는 과정에서 SaltStackConfiguration이라는 vRealize Automation 속성 그룹이 생성됩니다. SaltStackConfiguration 속성 그룹 값은 vRealize Automation 클라우드 템플릿 또는 배포에서 SaltStack Config 통합을 구성할 때 사용합니다. 또한 vRealize Automation 템플릿(이전 명칭: Blueprint)의 cloud-init 또는 Cloudbase-init 기반 구성에서 미니언을 설치하는 데에도 사용합니다. SaltStackConfiguration의 두 속성은 masterAddress(SaltStack Config 통합 지점의 호스트 이름 설정과 매칭) 및 masterFingerprint입니다. 샘플 SaltStackConfiguration 속성 그룹은 아래와 같습니다.

vRealize Automation 속성 그룹 페이지와 SaltStack Config를 설치할 때 생성된 "SaltStackConfiguration" 속성 그룹이 화면에 표시됨

vRealize Automation에 대해 구성된 Salt 마스터에 미니언 추가

SaltStack Config가 설치되면 Salt 마스터 IP 주소가 지정됩니다. 이 마스터 IP 주소는 vRealize Automation 클라우드 템플릿에서 미니언을 배포할 때 masterAddress 속성으로 사용됩니다.

vRealize Automation 클라우드 템플릿 또는 배포에서 cloud-init 또는 Cloudbase-init 스크립팅을 사용하여 미니언을 설치하고 배포합니다. 이러한 형식 중 하나를 사용하는 클라우드 구성 스크립트를 나타내는 이미지 매핑을 사용할 수도 있습니다. vRealize Automation SaltStack Config 통합에 연결된 Salt 마스터에 Salt 미니언을 추가하려면 대상 시스템이 cloud-init(Linux) 또는 Cloudbase-init(Windows)를 지원해야 합니다. vRealize Automation 클라우드 구성 스크립팅은 두 가지 형식을 모두 지원합니다.

클라우드 템플릿에서 minionId 값과 cloudConfig 값을 사용하여 시스템 리소스를 구성하고 속성 그룹 SaltStackConfiguration을 참조합니다. SaltStackConfiguration 속성 그룹은 vRealize Suite Lifecycle Manager에서 SaltStack Config 서비스를 설치하고 구성하는 동안 생성됩니다. 여기에는 masterAddressmasterFingerprint 속성이 포함됩니다.

minionId 값은 클라우드 템플릿 코드의 cloudConfig 섹션에서 시스템의 /salt/minion_id에 대해 지정된 값과 일치해야 합니다.

Windows 기반 및 Linux 기반 vRealize Automation 클라우드 템플릿 코드의 예는 다음과 같습니다. 클라우드 구성 스크립팅은 다음 방법 중 하나를 사용하여 지정할 수 있습니다.
  • 클라우드 템플릿 코드에서 호출되는 vRealize Automation 이미지
  • 클라우드 템플릿 코드에서 호출되는 클라우드 구성 스크립트
  • 클라우드 템플릿 코드에 직접 추가되는 클라우드 구성 스크립트 컨텐츠

참고: Salt 미니언이 포함된 클라우드 템플릿을 배포할 때 배포가 vRealize Automation Cloud Assembly에 보이지 않으면 vRealize Automation Service Broker 서비스를 사용하여 배포를 표시할 수 있습니다.

예 - Linux 기반 배포 및 cloud-init

cloud-init를 지원하는 Linux 기반 시스템용 미니언을 배포하기 위한 샘플 클라우드 템플릿 구성이 아래에 나와 있습니다.
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}

예 - Windows 기반 배포 및 Cloudbase-init

Cloudbase-init를 지원하는 Windows 기반 시스템용 미니언을 배포하기 위한 샘플 클라우드 템플릿 구성이 아래에 나와 있습니다.
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

Powershell 명령을 구성하는 방법

다음 단계를 사용하여 cloudConfig 섹션에서 PowerShell 명령을 구성할 수 있습니다. 자세한 내용은 SaltStack Config 제품 설명서를 참조하십시오.
  1. Salt 저장소 웹 사이트에서 Salt 미니언 패키지를 다운로드합니다.
  2. Windows VM에 Salt 미니언 서비스를 설치합니다.
  3. 미니언 구성에서 Salt 마스터 호스트 이름 값을 업데이트합니다.
  4. 미니언 구성에서 Salt 마스터 지문 값을 업데이트합니다.
  5. minion_id를 Salt 마스터에서 미니언을 수락하는 데 사용될 VM 리소스 이름으로 설정합니다.
  6. 미니언을 다시 시작합니다.

Salt 미니언 배포에 대한 추가 정보

통합 SaltStack Config를 사용하여 vRealize Automation 클라우드 템플릿에서 Salt 미니언을 배포하는 대체 방법은 다음 VMware 블로그 문서를 참조하십시오.

일반적인 vRealize Automation Cloud Assembly 템플릿 정의 및 배포에 대한 관련 정보, 특히 SaltStack에 익숙하지만 vRealize Automation에는 익숙하지 않은 경우에는 vRealize Automation Cloud Assembly 배포 설계를 참조하십시오.