Я пытаюсь запустить скрипт при загрузке системы после автоматической установки кикстарта, скрипт просто меняет пул хранения по умолчанию для KVM. Но по какой-то причине изменения не вступают в силу, если я запускаю сценарий вручную или запускаю systemctl start pool.service все работает нормально и пул по умолчанию установлен, но если я запускаю systemctl enable pool.service через ks.cfg или вручную после установки и перезагрузки ничего не меняется. Я попытался установить pool.service на несколько типов (обычный, бездействующий и т.д.), Но, похоже, ничего не помогло.

Я работаю над CentOS 7 x64.

ks.cfg

wget http://my_server/scripts/virsh/pool.service -O /etc/systemd/system/pool.service
wget http://my_server/scripts/virsh/pool -O /usr/bin/pool
chmod 755 /usr/bin/pool
systemctl enable pool.service

файл pool.service

[Unit]
Description=Set default storage pool

[Service]
Type=idle
ExecStart=/usr/bin/pool

[Install]
WantedBy=multi-user.target

файл сценария пула

#!/bin/bash
/usr/bin/virsh pool-start default
/usr/bin/virsh pool-destroy default
/usr/bin/virsh pool-delete default
/usr/bin/virsh pool-undefine default
mkdir /srv/virtual_machines
/usr/bin/virsh pool-define-as default --type dir --target /srv/virtual_machines
/usr/bin/virsh pool-build default
/usr/bin/virsh pool-start default
/usr/bin/virsh pool-autostart default

systemctl disable pool.service

1 ответ1

1

Не используйте Type=idle - он был добавлен специально для приглашения к входу в систему и является почти таким же надежным, как бросок костей. Просто объявите зависимости явно. (Для кратковременного сценария, Type=oneshot является правильным.)

Ваш сервис связывается с libvirtd с помощью virsh , то есть он может работать только тогда, когда libvirtd уже запущен. Следовательно:

[Unit]
Requires=libvirtd.service
After=libvirtd.service

(Настройте, если ваш дистрибутив вызывает службу по-другому.)

Кроме того, самообслуживание может быть не самой лучшей идеей. Вместо этого вы можете использовать:

[Unit]
ConditionPathExists=!/srv/virtual_machines

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .