SaltStack 自動化管理:構成から設定管理、実践まで

SaltStackは、インフラ構成管理およびリモート実行を行うための強力なツールです。本記事では、基本的な環境構築から、高度な設定管理、および実用的なサービス運用例までを解説します。

1. SaltStackのアーキテクチャ

SaltStackは主に以下の3つの実行モードで動作します。

  • Local: 設定ファイルのみを使用し、マスターなしで実行。
  • Master/Minion: 中央管理サーバー(Master)から各ノード(Minion)を制御。
  • Salt SSH: エージェントレスでSSH経由の実行。

2. 環境構築と認証

Master(192.168.3.12)とMinion(192.168.3.19)を導入し、通信を確立します。

# マスター側での承認
salt-key -a node2.chinasoft.com
    

通信確認には test.ping モジュールを使用します。

# 全ノードの疎通確認
salt '*' test.ping
    

3. 設定管理(State System)

SLSファイルを用いてシステム状態を定義します。Apacheをインストールする例を挙げます。

# /srv/salt/webserver.sls
apache_pkg:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel

apache_service:
  service.running:
    - name: httpd
    - enable: True
    

実行コマンド:salt '*' state.sls webserver

4. データシステム(GrainsとPillar)

  • Grains: MinionのOS、IP、ホスト名などの静的属性。salt '*' grains.itemsで確認可能。
  • Pillar: Masterから定義する動的データ。機密情報の保持に適しており、pillar_rootsで管理します。

5. 実践:HAProxyとKeepalivedによるロードバランサ構成

プロダクション環境を想定し、HAProxyのインストールと設定を自動化します。インストール状態を定義する際に cmd.runfile.managed を活用し、環境に応じた設定ファイルを配布します。

# 例:HAProxyの自動設定
/etc/haproxy/haproxy.cfg:
  file.managed:
    - source: salt://haproxy/files/haproxy.cfg
    - template: jinja
    - context:
      bind_ip: 192.168.3.11
    

Keepalivedと組み合わせることで、VIPの浮動化を実現し、高可用性(HA)環境を構築可能です。

6. 運用効率化と拡張

SaltStackの実行結果をMySQLに保存することで、監査やジョブの追跡が容易になります。returner機能を有効にし、MasterとMinionの両方でDB接続設定を行います。

また、カスタムGrainsやモジュールをPythonで記述し、_grains/_modules/ ディレクトリに配置して saltutil.sync_all を実行することで、機能拡張も柔軟に行えます。

タグ: saltstack automation ConfigurationManagement InfrastructureAsCode HAProxy

8月2日 05:40 投稿