Slide 1

Slide 1 text

2021/12/15 VMware DevOps Meetup #11 @IrieMasahiro Salt でサーバに味付けを (REM@STER Version)

Slide 2

Slide 2 text

自己紹介 入江 正博 @IrieMasahiro • 某情報通信系企業 クラウド/インフラコンサルタント • VMUG 仮想インフラ部会 • vExpert 2019-2021

Slide 3

Slide 3 text

本発表は… ● vExperts Advent Calendar 2021 12/13 投稿 “Salt でサーバに味付けを”の使い回しリマスター ○ https://adventar.org/calendars/6689 ● こぼれネタやデモを添えて

Slide 4

Slide 4 text

本旨アジェンダ ● Salt とは ● Salt のアーキテクチャ ○ Master - Minion ○ Salt SSH ○ デモ 1 ● Salt の機能 ○ Grains ○ Remote Execution ○ State ○ Pillar ○ デモ 2 ● まとめ

Slide 5

Slide 5 text

Salt とは

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

時は2020年10月 VMware社によるSaltStack 社の買収完了を発表

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Salt って有名なの? ● 歴史は結構長い ○ 2011 年初版リリース、Ansible (2012 年)より前 ● 自分は割と最近に初めて知った… ○ Ansible, Chef, Puppet は聞いたことあったけど… ○ 世の中的には有名?

Slide 10

Slide 10 text

Google トレンド調べ ● Salt, Ansible, Chef, Puppet で調査 ● 過去 5 年分

Slide 11

Slide 11 text

Google トレンド調べ ● Salt, Ansible, Chef, Puppet で調査 世界的に大人気ではないか!(白目)

Slide 12

Slide 12 text

Google トレンド調べ2 ● この結果、絶対ノイズ混ざってるだろ… ○ Salt とか Chef とか料理の話かと ○ Puppet も… ※ 一般的なイメージ ● カテゴリを”コンピュータ”で絞ってやり直し

Slide 13

Slide 13 text

Google トレンド調べ2 ● カテゴリを”コンピュータ”で絞ってやり直す やっぱり圧倒的ではないか!(白目)

Slide 14

Slide 14 text

Salt はググラビリティが低い… ● コンピュータで Salt というと暗号化の話が… ● 何となくお察しの通り、知名度はそこまでない? ○ “SaltStack” で検索 ↓ 多分こんなものかと ※ 個人の感想です

Slide 15

Slide 15 text

Salt のアーキテクチャ

Slide 16

Slide 16 text

Salt の構成

Slide 17

Slide 17 text

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 で操作

Slide 18

Slide 18 text

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 が使えない場合に

Slide 19

Slide 19 text

ここでデモ

Slide 20

Slide 20 text

Salt の機能

Slide 21

Slide 21 text

Grains ● 管理対象のハードや OS 、ネットワークなど、 あまり変更されない静的に近い情報 ○ Minion で生成される情報 ● Master から参照が可能 ● システム情報だけでなく、ユーザ任意の値も可能 ○ サーバグルーピングやメタ情報の付与 → タスク実行時の対象ホスト指定の条件フィルタに

Slide 22

Slide 22 text

Remote Execution ● 指定した管理対象でコマンドを実行 ○ pssh とか Fabric と同じようなもの ● 汎用的な操作や API を叩くようなものは Execution Module として用意されている ○ https://docs.saltproject.io/en/latest/ref/modules/all/index.html#all-salt-modules ○ 足りなければ独自拡張も可能

Slide 23

Slide 23 text

State ● 構成をファイルに記述 (/srv/salt) ● Salt がファイル内容に従って処理を実行 ● 構成を記述するファイルが State と呼ばれる ○ パッと見 YAML 形式 ○ Jinja2 テンプレートなので制御を仕込むことも可能 ● どの Minion にどの State を適用するかも記述 ○ top.sls に Minion 名や Grain での条件指定と適用する State 名のマッピング記述

Slide 24

Slide 24 text

Pillar ● 変数や Secret をファイルに記述 (/srv/pillar) ● Master 上で定義、格納して管理 ○ Grains と Pillar の違い ● Grains は Minion 上で生成、管理 ● Pillar は Master 上で生成、管理 ● State からは実行時に Pillar を参照 ○ {{ pillar[‘hoge’] }} で参照 ● State と同様に top.sls で Minion やグループ毎に 値の定義が可能

Slide 25

Slide 25 text

ここでデモ

Slide 26

Slide 26 text

まとめ ● Salt とは OSS の自動化、構成管理ツール ● Master-Minion のクライアント/サーバ型 ○ Salt SSH によるエージェントレスも可 ● State と Remote Execution による構成管理 ○ Minion 上の Grains に静的情報 ○ Master 上の Pillar に変数やシークレット情報 ● 他にも beacon や reactor、salt-runner など ○ 機会があればそのウチ…(まだ触ってない) ● 知名度(情報量)がネックか…?

Slide 27

Slide 27 text

ところで vRealize Automation SaltStack Config Download 不可能なので何も試せず… そのウチ試用できればなぁ…

Slide 28

Slide 28 text

EOP