Я настраиваю 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
функции.