パッカーツールを使用して、クラウド環境でイメージビルドプロセスを自動化しました。パッカービルドで実行するとパッチが空になります。これを修正するには
多くのツールをインストールし、linuxパスツールを使用して多数のパッチを適用します。
手動で行うと、すべてが正常に動作しています。しかし、パッカーの自動化では、パッチを適用した場合の問題が1つあります。
/etc/myprogram/myconfig.cfg
に設定ファイルがあります。
私はこのようなパッチを実行しています。
pushd /etc/myprogram patch -p 0 < myconfig.cfg.patch
手動で実行している場合、パッチが正常に適用されます。しかし、パッカーでは、ターゲットファイルが空になっています。
しかし、packerビルドのstdoutには、2ハンクが適用されたような出力があります。
どのような問題がありますか?これをデバッグするためのいくつかの提案をしてください。
packer build base.json
base.json
{
"builders": [
{
"flavor": "general1-8",
"image_name": "Havell Build {{ timestamp }}",
"source_image": "d944e490-f615-49a5-97f7-b80a8b0398d4",
"ssh_keypair_name": "packer-manual",
"ssh_private_key_file": "packer-manual.key",
"ssh_username": "root",
"type": "openstack"
}
],
"provisioners": [
{ "type": "shell",
"inline": "mkdir -p /tmp/patches/"
},
{
"type": "file",
"source": "patches/",
"destination": "/tmp/patches/"
},
{
"script": "apply_patches.sh",
"type": "shell"
}
]
}
apply_patches.sh
#!/bin/bash
set -ex
echo "*********************before************************"
echo "***************************************************"
cat /etc/myprogram/myconfig.cfg
echo "***************************************************"
echo "***************************************************"
pushd /etc/myprogram
patch -p 0 < myconfig.cfg.patch
echo "***********************after***********************"
echo "***************************************************"
cat /etc/myprogram/myconfig.cfg
echo "***************************************************"
echo "***************************************************"
exit 0
あなたが実行する方法についてのあなたのラインを更新でしたパッチ。それはうまくいかず、私はあなたが走っているものではないと思いました。 –
@RickardvonEssen、私はパッチラインを更新しました – RMK
あなたのパッチは '/ etc/myprogram/myconfig.cfg.patch'にありますか?それを確認しましたか? –