Категорії
Solaris

Создание зависимостей для SMF сервисов

Буду рассказывать всё на примере, так понятнее. Имеем selenium, который зависит от Xvfb. И так, нужно что бы сначала стартовал Xvfb, а потом уже selenium, и была зависимость selenium от Xvfb.

1) Создание сервиса Xvfb.

Для запуска создаём скрипт /opt/scripts/xvfb.sh. На основе этого скрипта создаём SMF сервис:

# svcbundle -i -s service-name=application/xvfb -s model=daemon -s start-method="/opt/scripts/xvfb.sh"

2) Создание сервиса selenium.

Для запуска создаём скрипт /opt/scripts/selenium.sh. На основе этого скрипта создаём SMF сервис:

# svcbundle -i -s service-name=application/selenium -s model=daemon -s start-method="/opt/scripts/selenium.sh"

3) Создание зависимостей.

Зависимости можно создавать 2-мя путями: правка манифеста и последующий импорт и через svccfg. Расскажу про оба метода

– Правка манифеста.

Определяем нужный для правки манифест

# svcs -l svc:/application/selenium:default | grep manifest
manifest /lib/svc/manifest/site/selenium.xml

и вносим такой блок (с отступами) как можно выше, например после строки <service version=”1″ type=”service” name=”application/selenium”>

<dependency name='xvfb'
grouping='require_all'
restart_on='none'
type='service'>
<service_fmri
value='svc:/application/xvfb:default' />
</dependency>

Далее делаем импорт и рестарт svc:/system/manifest-import:default :

# svccfg import /lib/svc/manifest/site/selenium.xml
# svcadm restart svc:/system/manifest-import:default

После этого можно посмотреть зависимости:

# svcs -d svc:/application/selenium:default
STATE STIME FMRI
online Nov_05 svc:/milestone/multi-user:default
online Nov_05 svc:/application/xvfb:default

– Через svccfg

Тут всё проще и изящнее. Если кратко – то создаём группу и присваиваем ей соответствующие атрибуты:

# svccfg -s svc:/application/selenium:default addpg xvfb dependency
# svccfg -s svc:/application/selenium:default setprop xvfb/grouping = astring: require_all
# svccfg -s svc:/application/selenium:default setprop xvfb/entities = fmri: svc:/application/xvfb:default
# svccfg -s svc:/application/selenium:default setprop xvfb/restart_on = astring: none
# svccfg -s svc:/application/selenium:default setprop xvfb/type = astring: service

После этого делаем refresh selenium и смотрим:

# svcadm refresh svc:/application/selenium:default
# svcs -d svc:/application/selenium:default
STATE STIME FMRI
online Nov_05 svc:/milestone/multi-user:default
online Nov_05 svc:/application/xvfb:default

Новые добавленные property можно посмотреть через svcprop:

# svcprop svc:/application/selenium:default | grep xvfb
xvfb/entities fmri svc:/application/xvfb:default
xvfb/grouping astring require_all
xvfb/restart_on astring none
xvfb/type astring service

Примечание.

Метод через svccfg не отображает изменения в манифесте xml.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff