Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

Salt のおさらい

Slide 5

Slide 5 text

ここまでやってきた 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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Salt の構成

Slide 9

Slide 9 text

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 推奨

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

ここでデモ

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Beacons と Reactor

Slide 14

Slide 14 text

Beacons

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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 は必須!

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Reactor

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

ここでデモ

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

ただの構成管理ツールではなく ,.ィ , - 、._ 、 . ,イ/ 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 は 統合運用自動化ツールだ ったんだよ!! 言い過ぎ?

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

おまけ ● vRealize Automation SaltStack Config

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

おまけ

Slide 29

Slide 29 text

おまけ

Slide 30

Slide 30 text

試してないけど…

Slide 31

Slide 31 text

EOP