Использование переменных окружения в блоках systemd

В статье объясняется использование переменных окружения (Environment) в блоках служб systemd.

systemd --version

Директива Environment

В systemd есть директива Environment, которая устанавливает переменные окружения для выполняемых процессов.

  • Директива принимает список назначений переменных, разделенных пробелами.
  • Этот параметр может быть указан более одного раза, в этом случае будут установлены все перечисленные переменные.

Если одна и та же переменная задана дважды, более поздняя установка отменяет более раннюю. Если этой опции присвоена пустая строка, список переменных окружения обнуляется, все предыдущие назначения не имеют эффекта.

Для примера, настроим демон etcd2 на использование шифрования. Просто создайте /etc/systemd/system/etcd2.service.d/30-certificates.conf для etcd2.service:

Затем выполним команды ниже, чтобы применить новое окружения к демону etcd2:

Директива EnvironmentFile

EnvironmentFile аналогична директиве Environment, но считывает переменные окружения из текстового файла. Текстовый файл должен содержать назначения переменных, разделенных новыми строками.

Этот файл окружения может быть включен другими службами для внесения динамической конфигурации. Вот пример файла окружения при запуске на DigitalOcean (IP-адреса были удалены):

Этот файл окружения может быть использован и его переменные могут быть использованы. Вот пример drop-in для etcd-member.service, который запускает coreos-metadata.service и затем использует сгенерированные результаты:

Другие примеры

Использование IP-адресов хостов и EnvironmentFile

Можно записать IP-адреса хостов в файл /etc/network-environment и хатем запускать свои контейнеры Docker следующим образом:

Этот блок-файл запустит Docker-контейнер nginx и привяжет его к определенному IP-адресу и порту.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий