Патч становится пустым при запуске со сборкой упаковщика. Как это исправить

Я автоматизировал процесс сборки образа в облачной среде с помощью инструмента упаковщика.

Он устанавливает множество инструментов и применяет множество исправлений, используя инструмент пути 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

person RMK    schedule 08.06.2017    source источник
comment
Не могли бы вы обновить свою строку о том, как вы запускаете patch. Это не работает, и я ожидал, что это не то, что вы используете.   -  person Rickard von Essen    schedule 08.06.2017
comment
@RickardvonEssen, я обновил линию патчей   -  person RMK    schedule 08.06.2017
comment
Ваш патч расположен по адресу /etc/myprogram/myconfig.cfg.patch? Вы это подтвердили?   -  person Rickard von Essen    schedule 08.06.2017
comment
да. Это здесь ..   -  person RMK    schedule 08.06.2017
comment
В каких ситуациях инструмент исправления делает целевой файл пустым?   -  person RMK    schedule 08.06.2017
comment
Предоставьте полный шаблон упаковщика и скрипты. Вероятно, в ваших сценариях есть простая ошибка.   -  person Rickard von Essen    schedule 08.06.2017
comment
Давайте продолжим обсуждение в чате.   -  person RMK    schedule 08.06.2017
comment
я обновил свой вопрос   -  person RMK    schedule 08.06.2017


Ответы (1)


Измените свой сценарий, чтобы он читал:

pushd /etc/myprogram
patch -p 0 < /tmp/patches/myconfig.cfg.patch
person Rickard von Essen    schedule 08.06.2017