Я автоматизировал процесс сборки образа в облачной среде с помощью инструмента упаковщика.
Он устанавливает множество инструментов и применяет множество исправлений, используя инструмент пути Linux.
Все работает так, как ожидалось, если делать вручную. Но с автоматизацией упаковщика я столкнулся с одной проблемой с применением патча.
Файл конфигурации находится по адресу /etc/myprogram/myconfig.cfg
.
У меня такой патч.
pushd /etc/myprogram
patch -p 0 < myconfig.cfg.patch
Патч успешно применяется при запуске вручную. Но с упаковщиком этот целевой файл становится пустым.
Но в стандартном выводе сборки упаковщика я вижу вывод, как применено 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
/etc/myprogram/myconfig.cfg.patch
? Вы это подтвердили? - person Rickard von Essen   schedule 08.06.2017