如何无缝重命名一个小兵?

时间:2017-12-05 07:23:43

标签: salt-stack

我正在考虑转移到salt(目前使用ansible)来管理一组独立的物联网设备(实际上是Raspberry Pi)。

设备将安装一个通用映像,我将在salt(客户端)安装的顶部添加,以及指向salt-master的配置文件,这将是提供由奴才消耗的州文件。

状态文件包含名称的HTTP查询,然后将其应用于设备(​​作为其主机名)。显而易见的问题是,在那个阶段,仆从已经使用先前(通用)名称在salt-master注册。

如何处理这种情况?具体来说:如何将新主机名传播到salt-master? (只是更改主机名并重新启动没有帮助,我假设主机名是在服务器上捆绑的,带有小兵的ID)。

更普遍的问题是salt是否是适合这种情况的正确产品(其中设置小兵的状态更改其名称等)

2 个答案:

答案 0 :(得分:6)

您的Minion ID基于安装期间的主机名。在安装salt-minion后更改主机名时,Minion ID将不会更改。

小号ID在/etc/salt/minion_id中指定。 当您更改Minion ID时:

  • Minion将使用新的身份证明自己,并停止收听旧ID。
  • Master会将新的Minion Id检测为新的Minion,并在Unaccepted Keys中显示一个新密钥。
  • 接受Master上的密钥后,您只能使用新密钥使用Minion。旧密钥仍在Master上接受,但不再起作用。

我可以为您的情况提出两种解决方案:

  1. 使用salt-ssh来配置你的爪牙。 Master将使用SSH连接到您的Raspberry PI。它将设置正确的主机名,安装和配置salt-minion。完成此操作后,您的小兵将使用正确的ID连接到主人。但是这需要师父知道仆从何时何地可以使用......
  2. 您提到了设置主机名的状态。更改Minion ID并以相同状态重新启动minion服务。这将更改Minion ID,但您需要接受新密钥。请注意,当您重新启动salt-minion服务时,minion将永远不会报告成功完成的状态。

答案 1 :(得分:0)

这是更改主机名/ 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