킥스타트에서 rpm으로 변수를 전달할 수 없습니다.

킥스타트에서 rpm으로 변수를 전달할 수 없습니다.

다른 서버에 설치해야 하는 공통 패키지가 있습니다. 설치는 동일한 kickstart 템플릿 파일을 통해 수행됩니다. 따라서 킥스타트 템플릿은 각 서버에 대한 킥스타트를 생성하는 데 사용되며, 이 킥스타트는 다른 서버에서 실행되고 동일한 패키지를 이러한 서버에 설치합니다. 이 패키지에서는 ssh 키를 생성해야 합니다(올바르게 수행했으며 키 생성의 주석 섹션에서 각 서버마다 다른 변수를 전달하고 싶습니다.) 그래서 제가 생각하는 방법은 Create입니다. 이 템플릿 파일에 변수를 추가한 다음 해당 변수를 사양 파일에 전달합니다. 그래서:

시작 템플릿에서는 다음을 수행합니다.

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

이는 킥스타트 인스턴스마다 다릅니다. %post 단계에서 만든 패키지 내부:

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

그러나 이것은 작동하지 않습니다. 설치 후 이 변수는 존재하지 않는 것으로 나타납니다. ssh-keygen은 잘 작동하지만 코멘트는 없습니다.

답변1

스크립틀릿을 실행하기 전에 rpm은 환경을 정리합니다.

파일을 사용할 수 있습니다. 예를 들어, 시작 시:

%pre
echo "svr_XXX" > /foo

%post그런 다음 rpm의 스크립틀릿 에서 .

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

파일의 존재 여부와 해당 파일의 더 나은 위치도 처리해야 합니다. 나는 당신에게 맡깁니다 :)

관련 정보