无法将变量从 kickstart 传递到 rpm

无法将变量从 kickstart 传递到 rpm

我有一个通用包需要安装到不同的服务器上。安装是通过相同的 kickstart 模板文件完成的。因此,kickstart 模板用于为每个服务器生成 kickstart,然后在不同的服务器中执行,并将相同的包安装到这些服务器中。在这个包中,我需要创建 ssh 密钥(我设法正确执行此操作,并且在密钥生成的注释部分中,我想传递一个对于每个服务器都不同的变量。)所以我认为应该如何完成就是在这个模板文件中创建一个变量,然后将该变量传递给spec文件。所以:

在启动模板中我这样做:

svr_name=<xsl:value-of select="$node"/>
 
packages=("svr_xxxxxxx_common"
           "svr_common"
)

对于每个 kickstart 实例来说,这都是不同的。在我在 %post 阶段所做的一个包的内部:

ssh-keygen -q -t rsa -f /home/xxx/.ssh/id_rsa -C "${svr_name}" -N ""

但这是行不通的。安装后该变量显示为不存在。 ssh-keygen 工作正常但没有评论。

答案1

在执行 scriptlet 之前,rpm 会清理环境。

您可以使用文件。例如,在启动中:

%pre
echo "svr_XXX" > /foo

然后在%postrpm 的 scriptlet 中。

%post
SVR_NAME=$(cat /foo)
ssh-keygen -q -t rsa -f /home/xxx/.ssh/id_rsa -C "${SVR_NAME}" -N  ""

还应该处理文件的(不)存在以及该文件的更好位置。我把它留给你:)

相关内容