$30 off During Our Annual Pro Sale. View Details »

Cooking operations with Salt

Cooking operations with Salt

MasahiroIrie

July 27, 2022
Tweet

More Decks by MasahiroIrie

Other Decks in Technology

Transcript

  1. 2022/7/27 Japan VMUG vExpert が語る #17
    @IrieMasahiro
    Salt で運用に味付けを

    View Slide

  2. 自己紹介
    入江 正博
    @IrieMasahiro
    • ヴイエムウェア株式会社
    テクニカルアカウントマネージャー
    • Japan VMUG
    • vExpert 2019-2022
    • 先週 Double VCP になりました
    (DCV2022 / NV2022)
    次は DTM? 先は長い…

    View Slide

  3. アジェンダ
    ● Salt のおさらい
    ● Beacons と Reactor
    ● まとめ
    ● おまけ
    ※ 注
    本発表内容は発表者個人の調査、検証に基づく見解であり、所属する会社、組織、及び、
    その関係者の見解と完全に一致するものではありません。

    View Slide

  4. Salt のおさらい

    View Slide

  5. ここまでやってきた Salt 話
    ● vExpert Advent Calendar 2021 12/13 投稿分
    ○ Salt でサーバに味付けを
    https://vhoge.hateblo.jp/entry/2021/12/13/090516
    ● VMware DevOps Meetup #11
    ○ Salt でサーバに味付けを (REM@STER VERSION)
    https://www.youtube.com/watch?v=vqglTqVghZA
    https://speakerdeck.com/mirie_sd/cooking-the-server-
    with-salt-rem-at-ster-version

    View Slide

  6. Salt とは
    ● オープンソースの自動化、構成管理ツール
    ○ Ansible, Chef, Puppet の仲間
    ● Python で実装
    ● SaltStack 社が主導で開発
    → VMware 社が SaltStack 社を買収(2020/10)
    ○ 現在もオープンソースプロジェクトとして開発中
    ■ https://github.com/saltstack/salt
    ● 「サルト」って読みそうだけど「ソルト」

    View Slide

  7. vRealize Automation SaltStack Config
    旧 SaltStack Enterprise
    vRealize のポートフォリオの一つとして取り込み

    View Slide

  8. Salt の構成

    View Slide

  9. Salt の構成
    ● Master-Minion によるクライアント/サーバ構成
    ○ 管理対象にエージェント (salt-minion) をインストール
    ○ 単独ホストなら masterless minion 構成も可能
    ● Master-Minion 間は ZeroMQ による通信
    ○ Minion → Master へ 4505/tcp, 4506/tcp
    ● Minion が導入できない環境には Proxy Minion
    ○ Proxy Minion が管理対象に SSH や REST API で操作
    ● Salt SSH でエージェントレス構成も
    ○ ただし、基本的には salt-minion 推奨

    View Slide

  10. Salt の概念・機能
    ● Grains
    ○ Minion で生成されるシステム情報やユーザ定義情報
    ○ 実行対象のフィルタリング条件に
    ● Pillar
    ○ Master で管理される情報、変数や Secret 情報
    ● State
    ○ あるべき構成を記述したファイル
    ○ salt が state に従ってサーバ構成を実行
    ● Remote Execution
    ○ Minion にて実行するアドホックな処理

    View Slide

  11. ここでデモ

    View Slide

  12. Salt は構成管理ツール…
    ● ここまでなら構成管理ツール
    ○ 細かい差はあれど、他のツールでもできそう
    ● Salt の真価は Beacons / Reactor
    → 今日はこの話
    ,j;;;;;j,. ---一、 ` ―--‐、_ l;;;;;;
    {;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;;
    ヾ;;;ハ ノ .::!lリ;;r゙
    `Z;i 〈.,_..,. ノ;;;;;;;;> そんなふうに考えていた時期が
    ,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. 俺にもありました
    ~''戈ヽ `二´ r'´:::. `!

    View Slide

  13. Beacons

    Reactor

    View Slide

  14. Beacons

    View Slide

  15. Beacons
    すみません、言いたかっただけです…

    View Slide

  16. Beacons
    ● Minion でイベントを検知し、Master に通知する
    ○ 例えば…
    ■ ユーザのログイン、特定コマンドの実行
    ■ inotify によるファイル変更
    ■ サービスやプロセスの状態変更
    ■ load avg. や CPU、メモリなどのメトリクス情報
    ■ 他色々 (https://docs.saltproject.io/en/latest/ref/beacons/all/index.html)
    ● 監視する対象を minion の設定に定義
    ● salt-minion が監視、通知を行う

    View Slide

  17. Salt の構成
    ● Master-Minion によるクライアント/サーバ構成
    ○ 管理対象にエージェント (salt-minion) をインストール
    ● Master-Minion 間は ZeroMQ による通信
    ○ Minion → Master へ 4505/tcp, 4506/tcp
    ● Minion が導入できない環境には Proxy Minion
    ○ Proxy Minion が管理対象に SSH や REST API で操作
    ● Salt SSH でエージェントレス構成も
    ○ ただし、基本的には salt-minion 推奨
    というわけで…
    Salt の真価を発揮するなら
    salt-minion は必須!

    View Slide

  18. Beacons 検知サンプル
    hostname:saltminion01 で
    nginx サービスが ruuning:false(=stop) にな
    ったことを検知して Master に通知

    View Slide

  19. Reactor

    View Slide

  20. Reactor
    特に思いつかなかった…

    View Slide

  21. Reactor
    ● 検知した Beacon をトリガーにアクションを実行
    ○ reactor 用の sls を記述 (ex. /srv/reactor/hoge.sls)
    ○ どの Minion や何の Beacon かは渡される json から
    state 内で判断して処理を分岐することが可能
    ● state を自動で呼び出して実行
    ○ サービスだけの再起動
    ○ 構築用 state に従い、あるべき姿を再構成
    ○ メールや SNMP、Slack などでの通知

    View Slide

  22. ここでデモ

    View Slide

  23. Beacons / Reactor って夢があるよね?
    ● システム監視に
    ○ プロセスやサービスの停止を検知してアラート発報
    ○ CPU やメモリの値を見てアラート発報
    ○ アラートもメール や SNMP、Slack、自前での実装も etc
    ● 障害対応自動化に
    ○ システム停止を検知して所定の手順を実行
    ○ なんならシステム丸ごと再デプロイ
    ● バッチ処理の自動化にも?
    ○ ファイル出力をトリガーに後続処理
    ○ スケジュール実行も可能 (Beacons とは関係ないけど)

    View Slide

  24. ただの構成管理ツールではなく
    ,.ィ , - 、._ 、
    . ,イ/ l/  ̄ ̄`ヽ!__
    ト/ |' { `ヽ. ,ヘ
    N│ ヽ. ` ヽ /ヽ / ∨
    N.ヽ.ヽ、 , } l\/ `′
    . ヽヽ.\ ,.ィイハ | _|
    ヾニー __ _ -=_彡ソノ u_\ヽ、 | \
    .  ゙̄r=<‐モミ、ニr;==ェ;ュ<_ゞ-=7´ヽ >
    . l  ̄リーh ` ー‐‐' l‐''´冫)'./ ∠__
    ゙iー- イ'__ ヽ、..___ノ トr‐' /
    l `___,.、 ./│ /_
    . ヽ. }z‐r--| / ト, | ,、
    >、`ー-- ' ./ / |ヽ l/ ヽ ,ヘ
    _,./| ヽ`ー--‐ _´.. ‐''´ ./ \、 \/ ヽ/
    -‐ '''"  ̄ / :| ,ゝ=< / | `'''‐- 、.._
    / !./l .\ ./ │ _
    _,> '´|l. ミ:ゝ、 _/,´\ ./|._ , --、 | i´!⌒!l r:,=i
    . | | l. / |= ヽ/ | .|l⌒l lニ._ | ゙ー=':| |. L._」
    l. | l./ .! / | i´|.ー‐' | / | |. ! l
    . l. |. .! .| / .!.|"'|. l' │-==:|. ! ==l ,. -‐;
    l | l. .| / | i=!ー=;: l | l. | | / //
    l | l .|/ !│ l l、 :| | } _|,.{:: 7
    l | l ./ .| |__,.ヽ、__,. ヽ._」 ー=:::レ' ::::::|; 7
    . l | l / .|. \:::::\::::: ヽ ::::::!′ :::| .:/
    . l | .∨ ! /ヽ::: `::: :::: ...
    つまり Salt は
    統合運用自動化ツールだ
    ったんだよ!!
    言い過ぎ?

    View Slide

  25. まとめ
    ● Salt とは OSS の自動化、構成管理ツール
    ● Beacons と Reactor でイベントドリブンな
    自動化が可能
    ○ Beacons はイベント通知
    ○ Reactor で通知をトリガーに処理を実行
    ○ もはや統合運用自動化ツール?
    ● やはり知名度(情報量)がネックか…?
    ○ 個人的には運用全てを All-in-one でやりきらなくてもツールチェインでもい
    いのではないのかな…とも

    View Slide

  26. おまけ
    ● vRealize Automation SaltStack Config

    View Slide

  27. おまけ
    ● vRealize Automation SaltStack Config
    ○ Salt の管理 GUI (RaaS:Returner as a Service)
    ○ アプライアンス VM とは別に RHEL/SLES への手動
    インストール(※)も可能 ※ただし非推奨
    ○ salt-master を内包、既存の salt-master をぶらさげ
    ることも可能
    ○ Master 管理の構成ファイル(State や Pillar 等)の閲覧
    編集も可能

    View Slide

  28. おまけ

    View Slide

  29. おまけ

    View Slide

  30. 試してないけど…

    View Slide

  31. EOP

    View Slide