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 ミニオン サービスをインストールするプロセスは、これらのノードで実行されているオペレーティング システムによって異なります。
- RedHat Linux または CentOS への Salt ミニオン サービスのインストールの詳細については、Salt のインストール(インストール前)を参照してください。
- 他のオペレーティング システムについては、http://repo.saltstack.com/を参照してください。
/etc/salt/minion.d
ディレクトリ内にmaster.conf
ファイルを作成して、各ミニオンがマスターと通信するように構成します。このファイルで、マスターの IP アドレスを指定します。例:master: 192.0.2.1
- ミニオン サービスを開始します。
sudo systemctl enable salt-minion
sudo systemctl start salt-minion
- 残りのすべてのノードについて、前の手順を繰り返します。
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 プロパティ グループが作成されます。vRealize Automation クラウド テンプレートまたは展開で SaltStack Config 統合を構成するとき、この SaltStackConfiguration プロパティ グループの値を使用します。また、ミニオンをインストールするために、vRealize Automation テンプレート(旧称ブループリント)の cloud-init または Cloudbase-init ベースの構成でも使用します。SaltStackConfiguration には 2 つのプロパティがあります。1 つは SaltStack Config 統合ポイントの [ホスト名] 設定と一致する masterAddress、もう 1 つは masterFingerprint です。以下に 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 サービスがインストールおよび構成されるときに作成されます。ここには、masterAddress プロパティと masterFingerprint プロパティが含まれます。
minionId 値は、クラウド テンプレート コードの cloudConfig
セクションでマシンの /salt/minion_id
に指定された値と一致する必要があります。
- クラウド テンプレート コードから呼び出される vRealize Automation イメージ
- クラウド テンプレート コードから呼び出されるクラウド構成スクリプト
- クラウド テンプレート コードに直接追加されるクラウド構成スクリプトのコンテンツ
注:Salt ミニオンを含むクラウド テンプレートを展開しても vRealize Automation Cloud Assembly に展開が表示されない場合は、vRealize Automation Service Broker サービスを使用することによって展開を表示できます。
例:Linux ベースの展開と cloud-init
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
例:Windows ベースの展開と Cloudbase-init
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
セクションで構成できます。
- Salt repo Web サイトから Salt ミニオン パッケージをダウンロードします。
- Windows 仮想マシンに Salt ミニオン サービスをインストールします。
- ミニオンの構成にある Salt マスター ホスト名の値を更新します。
- ミニオンの構成にある Salt マスターのフィンガープリントの値を更新します。
- Salt マスターでミニオンを受け入れるために使用される仮想マシン リソース名を
minion_id
に設定します。 - ミニオンを再起動します。
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 の操作は初めての場合は特に重要です。