> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 初期セットアップ

設定ディレクトリの初期化、暗号鍵 (encryption key) の生成、および環境の動作確認を行います。

これはセットアップ全体の**ステップ 2** にあたります。

1. SambaRack Manager ソフトウェアのインストール
2. **初期セットアップと動作確認** — このページ
3. [インベントリへの SambaRack の追加](srm-rack-admin)
4. [デバイス認証情報の設定](srm-device-credentials)

***

## グローバルフラグ

以下のフラグはすべての `snctl` コマンドで使用でき、セットアップ時にも日常の運用時にも役立ちます。

| フラグ | 説明 |
| - | - |
| `--snctl-dir <path>` | 設定、インベントリ、認証情報を保持するディレクトリ (デフォルト `$HOME/.snctl`)。指定したパスがそのまま使用され、`.snctl` セグメントは付加されません。環境変数: `SNCTL_DIR` |
| `-o, --output <format>` | 出力形式: `text` (デフォルト)、`wide`、または `json` |
| `--log-level <level>` | ログレベル: `debug`、`info`、`warn`、または `error`。環境変数: `SNCTL_LOG_LEVEL` |

***

## ステップ 1: 設定の初期化

単一のコマンドで SambaRack Manager を初期化します。

```bash theme={}
snctl config init --defaults --service-account <path>
```

<Note>
  **これが推奨される初期化方法です。**`--defaults` を指定すると、すべてのデフォルトパスが対話なしで受け入れられます。また、最初から `--service-account` を渡しておけば、後で `snctl config update` を実行して追加する必要がなくなります。設定・ログ・キャッシュのデフォルトの場所は標準的な Linux (XDG) の規約に従うため、ほとんどの環境ではパスの上書きは不要です。
</Note>

期待される出力:

```text theme={}
Initializing new configuration...
✓ Generated new encryption key at /path/.snctl/encryption.key
✓ Created credentials file at /path/.snctl/credentials.json.enc
Creating new empty inventory...
✓ Created empty inventory at /path/.snctl/inventory.json
✓ Created logs directory at /path/.snctl/logs
✓ Configuration updated at /path/.snctl/config.yaml

Initialization complete!

Configuration Summary

Setting           Value
----------------  -----------------------------------------------
Config Directory  /path/.snctl
Config File       /path/.snctl/config.yaml
Inventory         /path/.snctl/inventory.json
Encryption Key    /path/.snctl/encryption.key
Credentials       /path/.snctl/credentials.json.enc
Logs              /path/.snctl/logs
Service Account   /path/sambanova-sa.json
Cache Location    /path/.cache/snctl/firmware
Version           1.0.0
Last Updated      2026-08-19T12:36:26Z
```

<Note>
  **フォルダにすでに設定ファイルが存在する場合、初期化は中止されます**。例:

  ```text theme={}
  files already exist in /home/user1/.snctl: encryption.key, inventory.json, credentials.json.enc, config.yaml
  ```

  `config init` に空のディレクトリを指定するか、先に既存のファイルを削除してください。
</Note>

### 作成されるファイル

```text theme={}
.snctl/
  ├── config.yaml                 # Main configuration file
  ├── credentials.json.enc        # Encrypted credentials (created with blank placeholders)
  ├── encryption.key              # AES-GCM encryption key used to encrypt credentials
  └── inventory.json              # Your infrastructure inventory (empty initially)
```

ログはこのディレクトリの外にある `$XDG_STATE_HOME/snctl/logs` に書き込まれます。`XDG_STATE_HOME` が未設定の場合は `~/.local/state/snctl/logs` が使用されます。

### 初期化フラグ

明示的に設定する価値があるのは次の 1 つのフラグだけです。それ以外はすべて、標準的な Linux の場所がデフォルトとして使用されます。

| フラグ | 説明 |
| - | - |
| `--service-account <path>` | GCS サービスアカウントの JSON ファイルへのパス |

```bash theme={}
# Recommended
snctl config init --defaults --service-account /etc/snctl/sambanova-sa.json
```

この設定は初期化後にも変更できます。[設定の更新 (任意)](#設定の更新-任意) をご参照ください。

### (任意) カスタム設定ディレクトリの使用

設定を `~/.snctl` 以外の場所に置く必要がある場合は、初期化時に `--config-dir` を渡します。この場合、`config init` の最後に以下の案内が表示されます。

```text theme={}
Note: Configuration created at /path/to/custom/.snctl/config.yaml
To use this configuration, run 'export SNCTL_DIR=/path/to/custom/.snctl' or use --snctl-dir
```

以降のすべてのコマンドは、設定の場所を知る必要があります。以下のいずれかを選択してください。

**オプション 1 — 環境変数を設定する (推奨):**

```bash theme={}
export SNCTL_DIR=/path/to/custom/.snctl
```

永続化するには、この行をシェルの rc ファイル (`~/.bashrc` または `~/.zshrc`) に追加してください。

**オプション 2 — コマンドごとに `--snctl-dir` を渡す:**

```bash theme={}
snctl --snctl-dir /path/to/custom/.snctl node list
```

<Note>
  いずれのオプションでも、指定したパスがそのまま使用されます。CLI が `.snctl` セグメントを付加することはありません。`snctl config init` に渡したのと同じパスを使用してください。
</Note>

***

## ステップ 2: セットアップの確認

次に進む前に、以下の 3 つの確認をすべて実行してください。

**snctl が動作することを確認する:**

```bash theme={}
snctl version
```

```text theme={}
version:      1.0.0      # Exact version may vary
commit:       2c82328
build_time:   2026-07-14T08:05:35Z
go_version:   go1.25.11
os_arch:      linux/amd64
```

**現在の設定を表示する:**

```bash theme={}
snctl config show
```

```powershell theme={}
Configuration Summary
Setting           Value
----------------  -------------------------------------------
Config Directory  /home/user1/.snctl
Config File       /home/user1/.snctl/config.yaml
Inventory         /home/user1/.snctl/inventory.json
Encryption Key    /home/user1/.snctl/encryption.key
Credentials       /home/user1/.snctl/credentials.json.enc
Logs              /home/user1/.local/state/snctl/logs
Service Account   /home/user1/ss-svcops-artifacts-reader.json
Cache Location    /home/user1/.cache/snctl/firmware
Version           1.0.0
Last Updated      2026-07-14T08:38:32.111853Z
```

**Config Directory** が想定どおりのパスであることを確認してください。以降のすべてのコマンドは、この場所から設定を読み込みます。

<Note>
  SambaRack Manager のアップグレード後に `snctl config show` を実行すると、`config.yaml` に記録されたバージョンが現在実行中のバージョンと異なる場合、`config.yaml` が現在のバージョンに更新されます。
</Note>

***

## ステップ 3: 必要な依存関係の確認

```bash theme={}
snctl diag doctor
```

すべての依存関係が満たされている場合の期待される出力:

```shellscript theme={}
Checking system dependencies...

Dependency         Status  Path                              Description
-----------------  ------  --------------------------------  -------------------------
ipmitool           OK      /usr/bin/ipmitool                 IPMI interface tool
gbtipmitool-linux  OK      /usr/local/bin/gbtipmitool-linux  IPMI interface tool
ssh                OK      /usr/bin/ssh                      Secure shell client
sshpass            OK      /usr/bin/sshpass                  SSH password provider
ping               OK      /usr/bin/ping                     Network connectivity test
curl               OK      /usr/bin/curl                     HTTP client
in.tftpd           OK      /usr/sbin/in.tftpd                TFTP daemon
jq                 OK      /usr/bin/jq                       JSON processor
sed                OK      /usr/bin/sed                      Stream editor
grep               OK      /usr/bin/grep                     Pattern search
awk                OK      /usr/bin/awk                      Text processor
bc                 OK      /usr/bin/bc                       Calculator
screen             OK      /usr/bin/screen                   Terminal multiplexer

✓ Your system is ready to use snctl!
```

不足しているものがある場合、出力の最後に以下が表示されます。

```shellscript theme={}
Some dependencies are missing. Please install them and try again.
```

`MISSING` と報告されたものをインストールし、次に進む前に `snctl diag doctor` を再実行してください。問題が解決しない場合は、SambaNova のサポート窓口までお問い合わせください。

<Warning>
  このステップを省略しないでください。`snctl` は使用時に依存関係を再チェックしないため、ツールの不足は後になって電源操作やファームウェア操作の失敗として表面化します。しかもそのエラーは、不足しているツールではなく、デバイスや認証情報の問題を指し示すことがよくあります。
</Warning>

***

## ステップ 4: 暗号鍵の安全な保管

暗号鍵は `<config-directory>/encryption.key` にあります。この鍵は `config init` の実行時に一度だけ生成され、保存したデバイス認証情報を復号できる唯一の手段です。

暗号鍵は以下の操作に必要です。

* シークレットの復号
* インフラストラクチャに対するコマンドの実行

<Warning>
  暗号鍵にアクセスできる人は誰でも、保存されているすべてのシークレットを復号できます。このファイルは相応に厳重に保護してください。共有ストレージへのコピー、バージョン管理システムへのコミット、サポートバンドルへの同梱は行わないでください。
</Warning>

***

## 設定の更新 (任意)

以下の 2 つの設定はいずれも任意で、初期化後いつでも変更できます。[ステップ 1](#ステップ-1-設定の初期化) で `--service-account` を渡した場合、本セクションの作業は不要です。

### GCS サービスアカウント

```bash theme={}
snctl config update --service-account /path/to/service-account.json
```

クリアするには空文字列を渡します。

```bash theme={}
snctl config update --service-account ""
```

現在有効なパスは、`snctl config show` の **Service Account** に表示されます。

### ファームウェアキャッシュの場所

`snctl` がダウンロードするファームウェアイメージはローカルにキャッシュされ、デフォルトではシステム標準のキャッシュディレクトリ配下に保存されます。より大きなボリュームや共有ボリュームにキャッシュを置く必要がある場合は、上書きします。

```bash theme={}
snctl config update --cache-location /data/snctl-cache
```

デフォルトに戻すには空文字列を渡します。

```bash theme={}
snctl config update --cache-location ""
```

現在有効な場所は、`snctl config show` の **Cache Location** に表示されます。

***

## セキュリティに関する考慮事項

以下の現時点での制限にご注意ください。暗号鍵の保護については [ステップ 4](#ステップ-4-暗号鍵の安全な保管) も併せてご参照ください。

### アクセス制御

<Warning>
  snctl にアクセスできる人は誰でも、すべてのインフラストラクチャを管理する完全な権限を持ちます。
</Warning>

現在、`snctl` はロールベースアクセス制御 (RBAC) をサポート**していません**。これは以下を意味します。

* snctl にアクセスできるすべてのユーザーが、すべての操作を実行できます
* 読み取り専用権限と書き込み権限の分離はありません
* 監視操作と電源操作の区別はありません
* ネットワーク管理者とシステム管理者を分離できません

### 監査とロギング

現在、`snctl` は、誰がどの操作を実行したかを記録する監査ログを保持**していません**。

***

## 次のステップ

ラックをインベントリに追加します。[ラック管理](srm-rack-admin) をご参照ください。
