Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cooking the server with Salt (REM@STER Version)

MasahiroIrie
December 15, 2021

Cooking the server with Salt (REM@STER Version)

MasahiroIrie

December 15, 2021
Tweet

More Decks by MasahiroIrie

Other Decks in Technology

Transcript

  1. 本旨アジェンダ • Salt とは • Salt のアーキテクチャ ◦ Master -

    Minion ◦ Salt SSH ◦ デモ 1 • Salt の機能 ◦ Grains ◦ Remote Execution ◦ State ◦ Pillar ◦ デモ 2 • まとめ
  2. Salt とは • オープンソースの自動化、構成管理ツール ◦ Ansible, Chef, Puppet の仲間 •

    Python で実装 • SaltStack 社が主導で開発 → VMware 社が SaltStack 社を買収 ◦ 現在もオープンソースプロジェクトとして開発中 ▪ https://github.com/saltstack/salt
  3. Salt って有名なの? • 歴史は結構長い ◦ 2011 年初版リリース、Ansible (2012 年)より前 •

    自分は割と最近に初めて知った… ◦ Ansible, Chef, Puppet は聞いたことあったけど… ◦ 世の中的には有名?
  4. Google トレンド調べ2 • この結果、絶対ノイズ混ざってるだろ… ◦ Salt とか Chef とか料理の話かと ◦

    Puppet も… ※ 一般的なイメージ • カテゴリを”コンピュータ”で絞ってやり直し
  5. Salt の構成 • Master-Minion によるクライアント/サーバ構成 ◦ 管理対象にエージェント (salt-minion) をインストール ▪

    対象は Linux / Windows / UNIX などサーバ系が中心に • Master-Minion 間は ZeroMQ による通信 ◦ Minion → Master へ 4505/tcp, 4506/tcp • Minion が導入できない環境には Proxy Minion ◦ vCenter や NW 機器など、汎用的な OS 以外の環境 ◦ Proxy Minion が管理対象に SSH や REST API で操作
  6. Minion のインストール面倒… • そんなあなたに Salt SSH • エージェント (salt-minion) 不要の構成

    ◦ Master から ssh 接続でゴニョゴニョしてくれる ▪ Master での対象ホスト指定 (/etc/salt/roster) ▪ Salt SSH 用のユーザ + sudo 用 NOPASSWD ▪ Salt SSH 用公開鍵 (/etc/salt/pki/master/ssh/salt-ssh.rsa.pub) • Minion に比べるとモッサリ感… ◦ 基本的には salt-minion 推奨 ▪ 初回の salt-minon インストール時に ▪ どうしても Minion が使えない場合に
  7. Grains • 管理対象のハードや OS 、ネットワークなど、 あまり変更されない静的に近い情報 ◦ Minion で生成される情報 •

    Master から参照が可能 • システム情報だけでなく、ユーザ任意の値も可能 ◦ サーバグルーピングやメタ情報の付与 → タスク実行時の対象ホスト指定の条件フィルタに
  8. Remote Execution • 指定した管理対象でコマンドを実行 ◦ pssh とか Fabric と同じようなもの •

    汎用的な操作や API を叩くようなものは Execution Module として用意されている ◦ https://docs.saltproject.io/en/latest/ref/modules/all/index.html#all-salt-modules ◦ 足りなければ独自拡張も可能
  9. State • 構成をファイルに記述 (/srv/salt) • Salt がファイル内容に従って処理を実行 • 構成を記述するファイルが State

    と呼ばれる ◦ パッと見 YAML 形式 ◦ Jinja2 テンプレートなので制御を仕込むことも可能 • どの Minion にどの State を適用するかも記述 ◦ top.sls に Minion 名や Grain での条件指定と適用する State 名のマッピング記述
  10. Pillar • 変数や Secret をファイルに記述 (/srv/pillar) • Master 上で定義、格納して管理 ◦

    Grains と Pillar の違い • Grains は Minion 上で生成、管理 • Pillar は Master 上で生成、管理 • State からは実行時に Pillar を参照 ◦ {{ pillar[‘hoge’] }} で参照 • State と同様に top.sls で Minion やグループ毎に 値の定義が可能
  11. まとめ • Salt とは OSS の自動化、構成管理ツール • Master-Minion のクライアント/サーバ型 ◦

    Salt SSH によるエージェントレスも可 • State と Remote Execution による構成管理 ◦ Minion 上の Grains に静的情報 ◦ Master 上の Pillar に変数やシークレット情報 • 他にも beacon や reactor、salt-runner など ◦ 機会があればそのウチ…(まだ触ってない) • 知名度(情報量)がネックか…?
  12. EOP