У нас есть один набор переключателей и отдельных VLAN для общего трафика, соединения посетителя (только Интернет), Трафик управления (МОТ), SAN (iSCSI) и медицинское исправление.
Статья Wikipedia имеет намного больше информации, включая использование.
Времена меняются, как и передовой опыт.
текущий лучший способ сделать это - запустить systemctl edit myservice
, который создаст файл переопределения для вас или позволяет редактировать существующий.
В обычных установках будет создан каталог /etc/systemd/system/myservice.service.d
, а внутри этого каталога будет создан файл, имя которого заканчивается на .conf
( обычно override.conf
), и в этом файле вы можете добавить или переопределить любую часть модуля, поставляемого дистрибутивом.
Например, в файле / etc / systemd / system / myservice.service.d / myenv.conf
:
[Service]
Environment="SECRET=pGNqduRFkB4K9C2vijOmUDa2kPtUhArN"
Environment="ANOTHER_SECRET=JP8YLOc2bsNlrGuD6LVTq7L36obpjzxd"
Также обратите внимание, что если каталог существует и пуст, ваша служба будет отключена! Если вы не собираетесь помещать что-либо в каталог,
http: // 0pointer .de / public / systemd-man / systemd.exec.html # Environment = - у вас есть два варианта (один уже указан Майклом):
Environment=
и
EnvironmentFile=
Ответ зависит от того, должна ли переменная быть константа (т. е. не должна изменяться пользователем, получающего модуль) или переменная (предполагается, что она устанавливается пользователем).
Поскольку это ваш локальный модуль, граница довольно размыта, и в любом случае будет работать. Однако, если вы начнете распространять его, и он окажется в / usr / lib / systemd / system
, это станет важным.
Если значение не нужно изменять для каждого экземпляра, предпочтительным способом было бы поместить его как Environment =
непосредственно в файл модуля:
[Unit]
Description=My Daemon
[Service]
Environment="FOO=bar baz"
ExecStart=/bin/myforegroundcmd
[Install]
WantedBy=multi-user.target
Преимущество то есть переменная хранится в одном файле с модулем. Следовательно, файл модуля легче перемещать между системами.
Однако вышеприведенное решение не работает, когда системный администратор должен изменить значение переменной среды локально. В частности, новое значение необходимо будет устанавливать каждый раз при обновлении файла модуля.
В этом случае должен использоваться дополнительный файл. Как - обычно зависит от политики распространения.
Одно особенно интересное решение - использовать каталог /etc/systemd/system/myservice.service.d
. В отличие от других решений, этот каталог поддерживается самой системой systemd и, следовательно, не имеет путей для конкретных дистрибутивов.
В этом случае вы помещаете файл типа /etc/systemd/system/myservice.service.d/local.conf
, который добавляет недостающие части файла модуля:
[Service]
Environment="FOO=bar baz"
После этого systemd объединяет два файла при запуске службы (не забудьте systemctl daemon-reload
после изменения любого из них). И поскольку этот путь используется systemd напрямую, вы не используете для этого EnvironmentFile =
.
Если значение предполагается изменить только в некоторых из затронутых систем, вы можете объединить оба решения , предоставляя значение по умолчанию непосредственно в устройстве и локальное переопределение в другом файле.
вы помещаете файл вроде /etc/systemd/system/myservice.service.d/local.conf
, который добавляет недостающие части файла модуля:
[Service]
Environment="FOO=bar baz"
После этого systemd объединяет два файла при запуске службы (не забудьте systemctl daemon-reload
после изменения любого из них). И поскольку этот путь используется systemd напрямую, вы не используете для этого EnvironmentFile =
.
Если значение предполагается изменить только в некоторых из затронутых систем, вы можете объединить оба решения , предоставляя значение по умолчанию непосредственно в устройстве и локальное переопределение в другом файле.
вы помещаете файл вроде /etc/systemd/system/myservice.service.d/local.conf
, который добавляет недостающие части файла модуля:
[Service]
Environment="FOO=bar baz"
После этого systemd объединяет два файла при запуске службы (не забудьте systemctl daemon-reload
после изменения любого из них). И поскольку этот путь используется systemd напрямую, вы не используете для этого EnvironmentFile =
.
Если значение предполагается изменить только в некоторых из затронутых систем, вы можете объединить оба решения , предоставляя значение по умолчанию непосредственно в устройстве и локальное переопределение в другом файле.