IT自動化 · 2 min read · Oct 26, 2025

AlmaLinux 9でのSalt IT自動化フレームワークの始め方

SaltまたはSaltstackは、管理者が複数のマシンに対してリモートでコマンドを直接実行できるオープンソースのIT自動化フレームワークです。Saltは主にPythonで書かれており、マスターとミニオンのアーキテクチャを使用して設計されています。SaltStackマスターはSalt構成管理の中央コントローラーであり、ミニオンはSaltStackマスターによって管理されるサーバーで、ターゲットサーバーとしてミニオンと呼ばれます。

SaltStackマスターはデフォルトでLinux OS上で実行されますが、ミニオンは任意のオペレーティングシステムで使用できます。Saltstackは、自動化デプロイメント、リモートタスク実行、インフラストラクチャをコードとして管理するための革命的な構成管理です。SaltStackは、物理および仮想サーバー、さらにはクラウドを含む複数のインフラストラクチャサーバーをプロビジョニングするためにも使用できます。

このチュートリアルでは、AlmaLinux 9サーバーにSaltをインストールする方法を示します。また、Saltモジュールの基本的な使用法を学び、最初のSaltステートプロジェクトを作成します。この場合、LEMPスタックをインストールするためのSaltステートプロジェクトを作成します。

前提条件

このガイドを始める前に、以下の条件を満たしていることを確認してください:

  • AlmaLinux 9サーバーが3台。
  • sudo管理者権限を持つ非ルートユーザー。
  • SELinuxのステータスがPermissiveまたはDisabledであること。

SaltマスターでのFirewalldの設定

Saltをインストールする前に、Saltマスターサーバーでポート45054506を開く必要があります。これらのポートは、SaltミニオンがSaltマスターに接続するために使用されます。これを実現するために、Firewalldを使用します。

以下のコマンドを実行して、Saltマスターサーバーのポート4505と4506を開きます。

sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp

次に、firewalldを再読み込みして変更を適用し、以下のコマンドを使用してfirewalldのオープンポートのリストを確認します。

sudo firewall-cmd --reload  
sudo firewall-cmd --list-all

コマンドを実行した後、ポート4505と4506がfirewalldに追加されます。

setup firewalld

Saltリポジトリの追加

Saltパッケージは公式のSaltリポジトリで入手できます。今、あなたはすべてのAlmaLinuxサーバー、Saltマスターとミニオンの両方にSaltリポジトリを追加します。

以下のコマンドを実行してSalt GPGキーをインポートします。

sudo rpm --import https://repo.saltproject.io/salt/py3/redhat/9/x86_64/SALT-PROJECT-GPG-PUBKEY-2023.pub

次に、以下のコマンドを使用してシステムにSaltリポジトリをダウンロードします。

curl -fsSL https://repo.saltproject.io/salt/py3/redhat/9/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

add repo

Salt GPGキーとリポジトリが追加されたら、以下のdnfコマンドを実行して、システム上の利用可能なリポジトリのリストを確認し、すべての利用可能なリポジトリのメタデータをダウンロードします。

sudo dnf repolist  
sudo dnf makecache

コマンドが成功した場合、受け取る出力は以下のようになります。

reload repo

Saltマスターのインストールと設定

Saltリポジトリを追加した後、メインのSaltマスターサーバーにsalt-masterパッケージをインストールして設定します。

以下のdnfコマンドを使用してsalt-masterパッケージをインストールします。インストールを続行するように求められたらyを入力します。

sudo dnf install salt-master

install salt-master

インストールが完了したら、以下のnanoエディタコマンドを使用してデフォルトのSalt構成/etc/salt/masterを開きます。

sudo nano /etc/salt/master

デフォルトのインターフェースオプションをローカルIPアドレスに、IDオプションをサーバーホスト名に変更します。この場合、SaltマスターサーバーはローカルIPアドレス192.168.5.50とホスト名masterで構成されています。

interface: 192.168.5.50  
id: master

完了したら、ファイルを保存して閉じます。

次に、以下のsystemctlコマンドを実行してsalt-masterサービスを開始し、有効にします。

sudo systemctl start salt-master  
sudo systemctl enable salt-master

最後に、以下のコマンドを実行してsalt-masterサービスが実行中であることを確認します。

sudo systemctl status salt-master

操作が成功した場合、表示される出力はactive (running)であり、salt-masterサービスが実行中であることを示します。

check salt-master

Saltミニオンのインストールと設定

Saltマスターの設定が完了したら、次のステップはsalt-minionをインストールし、ミニオンサーバーをSaltマスターに接続するように設定することです。

以下のdnfコマンドを実行して、ミニオンサーバーにsalt-minionパッケージをインストールします。インストールを確認するためにyを入力します。

sudo dnf install salt-minion

install salt-minion

インストール後、以下のnanoエディタコマンドを使用してデフォルトのSalt構成/etc/salt/minionを開きます。

sudo nano /etc/salt/minion

masterオプション内にSaltマスターのIPアドレスを入力します。

master: 192.168.5.50

インターフェースオプションにミニオンのローカルIPアドレスを入力し、IDオプションにサーバーホスト名を入力します。

interface: 192.168.5.20  
id: minion1

完了したら、ファイルを保存してエディタを終了します。

次に、以下のsystemctlコマンドを実行してsalt-minionサービスを開始し、有効にします。

sudo systemctl start salt-minion  
sudo systemctl enable salt-minion

salt-minionサービスが開始されたら、以下のコマンドを使用して確認します。

sudo systemctl status salt-minion

すべてがうまくいけば、出力はactive (running)となり、salt-minionサービスが実行中であることが確認されます。

check salt-minion

SaltミニオンをSaltマスターに登録

この時点で、salt-minionサービスは実行中です。それに伴い、Saltミニオンは自らをSaltマスターに登録するためのリクエストを送信します。Saltミニオンの登録を申請するには、Saltマスターでフィンガープリントキーを受け入れる必要があります。

Saltマスターに移動し、以下のsalt-keyコマンドを実行してフィンガープリントキーのリストを取得します。

salt-key --finger-all

ここでは、Saltミニオンサーバーminion1minion2のフィンガープリントが表示され、まだ「Unaccepted Keys」の状態です。

list keys

以下のコマンドを実行して、minion1およびminion2サーバーのSaltミニオンキーを受け入れます。

salt-key -a minion1  
salt-key -a minion2

キーを受け入れるように求められたらYを入力し、出力として「Key for minion minion1/2 accepted」のようなメッセージが表示されるはずです。

accept keys

次に、以下のコマンドを使用してSaltマスターでフィンガープリントキーのリストを再確認します。

salt-key --finger-all

ここでは、minion1およびminion2サーバーのSaltミニオンのフィンガープリントがAccepted Keysセクションに表示されます。

これで、SaltマスターからSaltミニオンサーバーをSaltコマンドラインを介して制御できるようになります。

以下のsaltコマンドを実行して、Saltマスターとミニオン間の接続を確認し、ミニオンサーバーでのSaltバージョンを確認します。

salt '*' test.ping  
salt '*' test.version

Saltマスターとミニオン間の接続が成功した場合、出力はTrueと表示されます。また、test.versionパラメータの結果としてSalt 3006.4がインストールされていることが確認できます。

test salt

さらに、以下のようにsaltコマンドを使用してターゲットミニオンを指定することもできます。

salt minion1 test.ping

Saltステートモジュールの基本的な使用法

次のセクションでは、Minionサーバーを管理するためのSaltステートモジュールの使用方法を学びます。cmdモジュールを使用して任意のLinuxコマンドを実行し、pkgモジュールを使用してパッケージとリポジトリを管理し、serviceモジュールを使用してサービスを管理するなど、いくつかのSaltステートモジュールを探ります。

cmdモジュールを介して任意のコマンドを実行

以下のコマンドを実行して、cmdステートモジュールを介して特定のLinuxコマンドを実行します。この例では、uname -aコマンドを使用してLinuxカーネルの詳細を確認します。

salt '*' cmd.run 'uname -a'

pkgモジュールを介してパッケージとリポジトリを管理

次に、以下のpkgステートモジュールを使用して、Minionサーバー上のパッケージとリポジトリを管理します。

pkg.list_reposを使用してリポジトリのリストを確認し、pkg.refresh_dbを使用してリポジトリを更新します。

salt '*' pkg.list_repos  
salt '*' pkg.refresh_db

以下のpkg.list_upgrades引数を使用して、利用可能なパッケージの更新のリストを確認することもできます。

salt '*' pkg.list_upgrades

特定のパッケージをインストールするには、以下のpkg.installを使用します。

salt '*' pkg.install vim

pkg install

serviceモジュールを介してサービスを管理

次に、serviceステートモジュールを使用してMinionサーバー上のサービスを管理できます。

service.available引数を使用して、ターゲットサーバーでサービスが利用可能であることを確認します。または、service.enabled引数を使用して、ターゲットサービスが有効であることを確認するか、service.get_runningを使用してサービスが実行中であることを確認できます。

salt '*' service.available chronyd  
salt '*' service.enabled chronyd  
salt '*' service.get_running

check service

最後に、service.execs引数を使用して特定のサービスによって実行される開始コマンドを確認することもできます。

salt '*' service.execs

最初のSaltステートの作成

このセクションでは、ターゲットMinionサーバーにLEMPスタック(Nginx、MariaDB、PHP-FPM)をインストールするための最初のSaltステートプロジェクトを作成します。

さらに進む前に、特定のバージョンのパッケージをインストールするために使用されるリポジトリモジュールを有効にするために、以下のコマンドを実行します。

salt '*' cmd.run 'sudo dnf module enable nginx:1.22 -y'  
salt '*' cmd.run 'sudo dnf module enable php:8.1 -y'

enable repo module via salt

次に、Saltステートを保存するために使用される新しい構成ディレクトリ/srv/salt/を作成します。

mkdir -p /srv/salt/

以下のコマンドを実行して、新しいプロジェクトディレクトリ/srv/salt/lempinit.slsファイルを作成します。

mkdir -p /srv/salt/lemp  
nano /srv/salt/lemp/init.sls

以下の構成をファイルに挿入します。この場合、pkgステートモジュールを介してMinionサーバーにLEMPスタックパッケージをインストールし、各サービスが実行中で有効であることをserviceステートモジュールを使用して確認します。

lemp_stack:  
  pkg.installed:  
   - pkgs:  
     - nginx  
     - mariadb-server  
     - php  
     - php-fpm  
  
ginx:  
  service.running:  
    - enable: True  
    - reload: True  
  
mariadb:  
  service.running:  
    - enable: True  
    - reload: True  
  
php-fpm:  
  service.running:  
    - enable: True  
    - reload: True

完了したら、ファイルを保存して閉じます。

次に、以下のコマンドを実行してlempプロジェクトの詳細なステート構成を表示します。

sudo salt * state.show_sls lemp

コマンドが実行されると、以下のような詳細な構成が表示されるはずです。

check salt state

次に、以下のコマンドを実行してlempステートをMinionサーバーに適用します。

sudo salt '*' state.apply lemp

自動インストールの生成されたレポートが表示されるはずです。この場合、両方のMinionサーバーにLEMPスタックパッケージが正常にインストールされました。

apply salt state

以下は、サービスが実行中で有効であるときの詳細です。

each services running

結論

結論として、AlmaLinux 9サーバーにSaltを段階的にインストールしました。AlmaLinuxサーバー上でSaltマスターとミニオンの両方をインストールおよび設定し、Saltステートモジュールの基本的な使用法を学び、LEMPスタックをインストールするための最初のSaltステートプロジェクトを作成しました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。