Назад | Перейти на главную страницу

Модули systemd: [Install] vs. команда: start (cloud-config)

Я настраиваю systemd в файле облачной конфигурации для CoreOS. Если я правильно понимаю, у меня есть два способа запустить устройство при загрузке:

Альтернатива 1: используйте [Install]-секция (как описано в цифровых океанах гиды):

- name: initialize_data
  content: |
    [Unit]
    Description=Run a command

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/mkdir /foo

    [Install]
    WantedBy=multi-user.target

Альтернатива 2: отбросьте [Install]-раздел и использование command: start:

- name: initialize_data
  command: start
  content: |
    [Unit]
    Description=Run a command

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/mkdir /foo

Есть ли недостатки запуска агрегата с помощью command: start? Я понимаю, что не могу контролировать, какой блок он запустится после, но что еще? Будет ли это честь [Unit]-директивы, такие как Requires= и After=?

Похоже, что в CoreOS разница небольшая. Когда systemd используется в других дистрибутивах Linux, разница в том, что start только запускает службу, это не вызывает ее начать при загрузке. Это то что enable делает, обрабатывая [Install] раздел файла systemd.

Однако в документации CoreOS говорится, что cloud-config команды обрабатываются при каждой загрузке. Итак, указав услугу в start через cloud-config, услуга по сути включен также.

CoreOS, вероятно, включает оба варианта, чтобы предоставить вам полную гибкость доступа к обоим. systemd функции.