SaltStack Config サービスをインストールして統合したら、SaltStack Config を使用して管理する予定のすべてのノードに Salt ミニオン サービスをインストールし、実行、登録する必要があります。ノードに Salt ミニオン サービスを展開するには、vRealize Automation クラウド テンプレートを使用するか、SSH を介してサービスをインストールします。

Salt とその SaltStack Config に対する関係

SaltStack Config は Salt 上で実行されます。Salt は Python ベースのオープンソースのリモート実行フレームワークで、次の目的に使用されます。

  • 構成管理
  • 自動化
  • プロビジョニング
  • オーケストレーション

Salt は、SaltStack Config の中核機能の基盤となるテクノロジーです。SaltStack Config は Salt を強化および拡張して、使いやすさを高める追加の機能を提供します。

Salt は、コントローラがクライアントに対してコマンドを発行し、クライアントがそのコマンドを実行するというコントローラ/クライアント モデルを使用します。Salt エコシステムの中で、コントローラは Salt マスター サービスを実行するサーバです。コントローラは 1 つ以上の 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 ミニオン サービスをインストールするプロセスは、これらのノードで実行されているオペレーティング システムによって異なります。

Salt ミニオン サービスをインストールした後は、次の手順に従います。
  1. /etc/salt/minion.d ディレクトリ内に 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) へのアクセス権を持ち、使用に慣れている必要があります。SaltStack Config 統合用に構成された Salt マスターに Salt ミニオンを追加するには、クラウド テンプレート内の仮想マシンが cloud-init (Linux) または Cloudbase-init (Windows) をサポートしている必要があります。

以降のセクションでは、クラウド テンプレートを使用して Salt ミニオン サービスを展開する方法を説明します。

SaltStackConfiguration プロパティ グループ

vRealize Suite Lifecycle ManagerSaltStack Config サービスをインストールおよび構成するプロセスでは、SaltStackConfiguration という名前の vRealize Automation プロパティ グループが作成されます。vRealize Automation クラウド テンプレートまたは展開で SaltStack Config 統合を構成するとき、この SaltStackConfiguration プロパティ グループの値を使用します。

また、ミニオンをインストールするために、vRealize Automation テンプレート(旧称ブループリント)の cloud-init または Cloudbase-init ベースの構成でも使用します。SaltStackConfiguration には 2 つのプロパティがあります。1 つは SaltStack Config 統合ポイントの [ホスト名] 設定と一致する masterAddress、もう 1 つは 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 ManagerSaltStack Config サービスがインストールおよび構成されるときに作成されます。ここには、masterAddress プロパティと masterFingerprint プロパティが含まれます。

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 コマンドの構成方法

PowerShell コマンドは、クラウド テンプレートの cloudConfig セクションで構成します。

PowerShell コマンドを有効にする前に、Salt repo Web サイトから Salt ミニオン パッケージをダウンロードします。次に、以下の手順を実行します。
  1. Windows 仮想マシンに Salt ミニオン サービスをインストールします。
  2. ミニオンの構成にある Salt マスター ホスト名の値を更新します。
  3. ミニオンの構成にある Salt マスターのフィンガープリントの値を更新します。
  4. Salt マスターでミニオンを受け入れるために使用される仮想マシン リソース名を minion_id に設定します。
  5. ミニオンを再起動します。

Salt ミニオンの展開に関する詳細

統合 SaltStack Config を使用して vRealize Automation クラウド テンプレートから Salt ミニオンを展開する別の方法については、Cloud Assembly and ABX Secrets (and how to use them for installing vRealize SaltStack Minion Agents)を参照してください。

vRealize Automation Cloud Assembly テンプレートの定義および展開の全般的な関連情報については、vRealize Automation Cloud Assembly 展開の設計を参照してください。SaltStack に関する知識があり、vRealize Automation の操作は初めての場合は特に重要です。