web-dev-qa-db-ja.com

ミニオンの名前をシームレスに変更するにはどうすればよいですか?

スタンドアロンのIoTデバイス(実用的にはRaspberry Pi)のセットを管理するために、salt(現在はansibleを使用)に移行することを検討しています。

デバイスは一般的なイメージでインストールされ、それにsalt(クライアント側)のインストールと、状態を提供するsalt-masterを指す構成ファイルが追加されます。ミニオンによって消費されるファイル。

状態ファイルには、名前のHTTPクエリが含まれており、デバイスに(ホスト名として)適用されます。明らかな問題は、その段階で、ミニオンが以前の(一般的な)名前でsalt-masterにすでに登録されていることです。

そのような状況にどう対処するか?具体的には、新しいホスト名をsalt-masterに伝播する方法は? (ホスト名を変更して再起動するだけでは役に立ちませんでした。ホスト名はサーバー上でミニオンのIDにバンドルされていると思います)。

より一般的な質問は、saltがそのような状況(ミニオンの状態を設定すると名前が変わるなど)に適した製品であるかどうかです。

6
WoJ

Minion IDは、インストール中のホスト名に基づいています。 salt-minionをインストールした後でホスト名を変更しても、ミニオンIDは変更されません。

ミニオンIDは/etc/salt/minion_idで指定されます。ミニオンIDを変更する場合:

  • ミニオンはマスターへの新しいIDで自分自身を識別し、古いIDのリッスンを停止します。
  • マスターは新しいミニオンIDを新しいミニオンとして検出し、Unaccepted Keysに新しいキーを表示します。
  • マスターでキーを受け入れると、新しいキーでのみミニオンを使用できるようになります。古いキーはマスターで引き続き受け入れられますが、機能しなくなります。

私はあなたの状況のた​​めに2つの解決策を思いつくことができます:

  1. Salt-sshを使用してミニオンをプロビジョニングします。マスターはSSHを使用してRaspberryPiに接続します。正しいホスト名を設定し、salt-minionをインストールして構成します。これが完了すると、ミニオンは正しいIDでマスターに接続します。しかし、これにはマスターがいつどこでミニオンが利用可能かを知る必要があります...
  2. ホスト名が設定されている状態についておっしゃいました。ミニオンIDを変更し、同じ状態でミニオンサービスを再起動します。これによりミニオンIDが変更されますが、後で新しいキーを受け入れる必要があります。ミニオンでsalt-minionサービスを再起動したときに、ミニオンが正常に終了した状態を報告することはないことに注意してください。
8
Gijs Brandsma

これは、hostname/minion_idを変更するための短いスクリプトです。また、バッチジョブでもうまく機能するはずです。次のようにスクリプトを呼び出すだけです:Sudo ./change-minion-id oldminionid newminionid

change-minion-id:

#! /bin/bash

newserver="$(echo $2)"
salt "$1" cmd.run "echo $newserver > /etc/hostname && hostname $newserver && hostname > /etc/salt/minion_id" && salt "$1" service.restart "salt-minion" && salt-key -d $1 -y && salt-key -a $newserver -y
0
deput_d