Rpm

無法將變數從 kickstart 傳遞到 rpm

  • January 8, 2021

我有一個需要安裝到不同伺服器中的通用軟體包。安裝是通過相同的 kickstart 模板文件完成的。因此,kickstart 模板用於為每個伺服器生成 kickstart,然後在不同的伺服器中執行,並將相同的包安裝到這些伺服器中。在這個包中,我需要創建 ssh 密鑰(我設法正確地做到了這一點,並且在 key-gen 的註釋部分我想傳遞一個對於每個伺服器都不同的變數。)所以我認為應該怎麼做就是在這個模板文件中創建一個變數,然後把這個變數傳給spec文件。所以:

在 kickstart 模板中,我這樣做:

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 工作正常,但沒有評論。

在執行 scriptlet 之前,環境由 rpm 淨化。

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

%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  ""

也應該處理文件的(不)存在以及該文件的更好位置。我會把它留給你:)

引用自:https://unix.stackexchange.com/questions/627624