> For the complete documentation index, see [llms.txt](https://help.aikido.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.aikido.dev/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-mdm-guides/linux/linux-rollout-reference.md).

# Linux 展開リファレンス

以下の各方法 [Linux への展開](/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-mdm-guides/linux.md) どれも同じことをします。ホスト用のパッケージを取得し、環境内のユーザーグループトークンを使ってインストールし、その後ユーザーを新しいログインシェルへ移します。このページでは、共通の手順を一度だけ説明します。各ガイドでは、それぞれのツールでのやり方を示し、理由についてはここへのリンクを案内します。

## トークンがパッケージに渡る仕組み

次の `.deb` と `.rpm` パッケージは読み取り `AIKIDO_TOKEN` インストール中にそれを読み取り、それに対してデバイスを登録します。変数は、実行するプロセスの環境に存在していなければなりません `apt`, `dnf`、または `dpkg`そのため、どのガイドでもそれは他の場所ではなく、インストール手順そのものに設定します。

設定 `AIKIDO_TOKEN` まず自分のシェルで設定しても何の意味もありません。Ansible、Chef、Puppet は、実行元のマシンの環境を引き継がず、Docker ビルドからもそれは見えません。

1つのトークンで1つの Aikido をカバーします [ユーザーグループ](/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/user-groups-for-aikido-endpoint.md)トークンが、デバイスが参加するグループを選ぶものだからです。異なるグループのマシンにはそれぞれトークンが必要で、別々の inventory グループ、Hiera レイヤー、data bag item、または module instance に保持します。

## トークンをログと state に残さない

トークンが必要なのは初回インストール時だけですが、ほとんどのツールは実行した内容を記録します。各ガイドではそれぞれのツールのマスキング機能を使っているため、確認すべき残りは、その値がまだどこに残るかです:

| ツール        | トークンがまだ漏れる可能性のある場所                                                     |
| ---------- | ---------------------------------------------------------------------- |
| Ansible    | 平文の group vars。Ansible Vault に入れてください                                  |
| Chef       | 平文の data bag。暗号化された data bag か Chef Vault を使ってください                     |
| Puppet     | ディスク上のインストールスクリプト、および下にキャッシュされた catalog `/opt/puppetlabs/puppet/cache` |
| Terraform  | State、〜にレンダリングされるものについて `user_data`. `TF_LOG=DEBUG` 出力もマスクされません        |
| Packer     | ある `.pkrvars.hcl` ファイルです。代わりに、秘密ストアからトークンを渡してください                      |
| cloud-init | インスタンスメタデータサービス、および `/var/log/cloud-init-output.log`                   |
| Docker     | トークンが次とともに渡される場合の、イメージとそのビルド履歴 `--build-arg`                           |

{% hint style="warning" %}
マスキングは、インストール失敗時に必要なエラーも隠してしまいます。全台で無効にするのではなく、単一のテストホストだけで無効にしてください。
{% endhint %}

### 代わりに起動時にトークンを取得する

クラウドインスタンスでは、user data と state に対する最もきれいな対処は、そこにトークンを置かないことです。マシンに秘密ストアを読み取れる ID を与え、インストール時に取得させます:

{% code title="user-data" overflow="wrap" %}

```yaml
#cloud-config
runcmd:
  - curl -fsSLo /tmp/aikido.deb https://github.com/AikidoSec/safechain-internals/releases/latest/download/EndpointProtection-amd64.deb
  - |
    AIKIDO_TOKEN=$(aws ssm get-parameter \\
      --name /aikido/device-protection-token \\
      --with-decryption \\
      --query Parameter.Value \\
      --output text)
    export AIKIDO_TOKEN
    apt-get install -y /tmp/aikido.deb
  - rm -f /tmp/aikido.deb
```

{% endcode %}

参照先は自分のクラウドに置き換えてください: `az keyvault secret show` マネージド ID を使って、または `gcloud secrets versions access` サービス アカウントを使ってください。

## 保護が有効になるとき

インストールでは、システム全体の環境変数（`NODE_EXTRA_CA_CERTS` と `UV_SYSTEM_CERTS`）を通じて Node.js と uv を Aikido CA に向けます。すでに実行中のシェルやサービスにはそれらは見えないため、新しいログインシェルを開くか再起動するまで保護は完全ではありません。

自動化の実行から、作業中のマシンを再起動しないでください。そのユーザーにはログアウトして再度ログインしてもらうか、保守作業時間内に再起動してください。無人のマシンでは、各ガイドがそれぞれのツール用に示しているように、インストールの最後に再起動します。

## 繰り返し実行を軽くする

Ansible、Chef、Puppet は play や converge のたびに再実行されるため、エージェントの有無を確認してダウンロードとインストールを保護してください。保護された実行は、すでに導入済みのマシンでは何もせず、トークンにも一切触れません:

| プラットフォーム                | 確認                                                                                        |
| ----------------------- | ----------------------------------------------------------------------------------------- |
| Debian と Ubuntu         | `dpkg-query -W -f='${db:Status-Status}' aikido-endpoint-protection \| grep -qx installed` |
| RHEL、Rocky Linux、CentOS | `rpm -q aikido-endpoint-protection`                                                       |
| どちらか                    | `aikidoctl --simple`                                                                      |

使用 `dpkg-query` ではなく `dpkg -s` Debian 系で。 `dpkg -s` また、削除されたが purge されていないパッケージでも成功するため、誰かが次を実行したマシンは `apt remove aikido-endpoint-protection` あなたのツールからはインストール済みに見え、その後も converge され直しません。

## デバイスの識別方法

Linux でのデバイス ID は次に従います `/etc/machine-id`。同じファイルで起動したマシンはデバイス一覧で 1 つのエントリを共有するため、1台を除いて可視性を失います。イメージビルドや VM テンプレートの最後の手順としてこのファイルを空にすると、systemd が各マシンの初回起動時に新しい ID を書き込みます。

コンテナイメージは例外です。1つのイメージから作られた各コンテナは同じデバイスとして報告され、これは通常 CI では望ましい動作です。

## バージョンとアップグレード

次の `releases/latest/download` URL は常に最新リリースに解決されます。代わりに自分のスケジュールで全台を更新したい場合は、パッケージを社内にミラーし、ツールの参照先をそのミラーに向けてください。

アップグレードではデバイスの登録が維持され、トークンも不要なので、既存のものの上に新しいパッケージをインストールしてください。エージェントが存在すると自動化がインストールをスキップする場合は、そのチェックをバージョン対応にするか、アップグレード実行の間だけ一時的に外してください。参照 [アップグレード](/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-mdm-guides/linux/install-device-protection-for-linux.md#upgrading).

## トラブルシューティング

| 問題                                                   | 修正                                                                                                                                                                                                                                |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| パッケージはインストールされますが、デバイスがダッシュボードに表示されません               | `AIKIDO_TOKEN` はインストールコマンドに対して設定されていませんでした。構成管理ツールはローカル環境をホストへ引き継がないため、タスク自体で変数を設定してから、パッケージを再度インストールしてください                                                                                                                       |
| `apt` または `dnf` ファイルをインストールするのではなく、リポジトリ内のパッケージを探します | 名前ではなくパスを指定してください: `apt install ./EndpointProtection-amd64.deb`。先頭の `./` が、パッケージマネージャーにそれをローカルファイルとして扱わせます                                                                                                                        |
| Red Hat系ホストではインストールが失敗します                            | ビルドをメジャーバージョンに合わせてください:  `el9` バージョン9ではこのパッケージを、そして `el10` バージョン10ではこのパッケージを                                                                                                                                                      |
| サービスが実行されていません                                       | 実行します `systemctl status aikido-endpoint-protection`、その後 `sudo aikidoctl diagnostics` 詳細を送信してください                                                                                                                                  |
| Node.js または uv が、まだ Aikido の証明書を拒否します                | インストールすると設定されます `NODE_EXTRA_CA_CERTS` と `UV_SYSTEM_CERTS` システム全体に設定され、実行中のシェルには反映されません。新しいログインシェルを開くか、デバイスを再起動してください                                                                                                              |
| トークンが実行出力やログに表示されます                                  | ツールのマスキング機能を使用してください: `no_log` Ansibleでは、 `sensitive true` Chefでは、 `Sensitive()` Puppetでは                                                                                                                                         |
| 複数のマシンがデバイス一覧の1つのエントリを共有しています                        | 同じものを使って起動しました `/etc/machine-id`。Linux でのデバイス識別はそのファイルに従うため、クローン元のイメージでそれを消去し、初回起動時に systemd に新しいものを書き込ませてください                                                                                                                    |
| トレイアイコンが表示されません                                      | Ubuntu 以外の GNOME では想定どおりで、見た目の問題です。参照: [Linux でのトレイアイコン対応](/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-mdm-guides/linux/install-device-protection-for-linux/tray-icon-support-on-linux.md) |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.aikido.dev/docs/docs-ja/aikido-device-protection/deploying-aikido-endpoint/device-protection-mdm-guides/linux/linux-rollout-reference.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
