Прежде всего; Прошу прощения, если мой заголовок неверен, но я не хотел слишком "загромождать" его.
Я создаю сценарий bash, который используется для установки различных серверов на базе CentOS 6 и CentOS 7 с аппаратным рейдом и программным RAID 1. Пока что у меня все хорошо. CentOS 6 (аппаратный RAID и программный RAID 1) полностью готов.
Однако теперь у меня возникла проблема с переустановкой CentOS 7 через файл кикстарта, на котором уже установлен программный RAID 1. Для предварительно установленного аппаратного RAID это не проблема, так как я могу использовать "set root = 'hd0, gpt2'" в моем скрипте.
Я думаю, мне нужно использовать (на CentOS 7 с программным RAID 1) параметр "set root = 'mduuid / 950f53e3b96cf5bbde74b5665f8d124c'", правильно (первый вопрос)?
Итак, я попробовал на сервере следующее (извините, не совсем чистый писатель кода):
tmpraid=$(cat grub.cfg | grep -e 'set root=' | head -1)
tmpraid2="${tmpraid::-1}"
tmpraid3=${tmpraid2//set root=\'/}
Это приводит к следующему выводу на тестовом сервере: mduuid / 950f53e3b96cf5bbde74b5665f8d124c
Однако когда я использую это в своем скрипте, например:
ssh root@192.168.0.1 "tmpraid=$(cat /boot/grub2/grub.cfg | grep -e 'set root=' | head -1)"
ssh root@192.168.0.1 "tmpraid2="${tmpraid::-1}""
ssh root@192.168.0.1 "tmpraid3=${tmpraid2//set root=\'/}"
Он выведет: cat: /boot/grub2/grub.cfg: нет такого файла или каталога
Я предполагаю, что он пытается запустить эту команду на текущем сервере вместо целевого сервера?
Теперь по поводу моих вопросов.
Я надеюсь, что объяснил все достаточно подробно, чтобы получить помощь или совет по вышеизложенному. Если нет, не стесняйтесь спрашивать меня. Спасибо заранее.
//редактировать
Что ж, мне удалось заставить скрипт работать. Пришлось внести некоторые изменения после долгих поисков и экспериментов. Может быть, есть более простой способ добиться такого кикстарта, но если никто не объяснит, я попробую с этим.
ssh root@$nodeIP "wget http://192.50.100.200/files/getgrub -O /root/getgrub"
ssh root@$nodeIP "chmod +x /root/getgrub"
ssh root@$nodeIP "sh /root/getgrub"
getgrub=$(ssh root@$nodeIP "sh /root/getgrub")
Результат наконец сохраняется в getgrub. Так что я могу поэкспериментировать с этим.