LINUX.ORG.RU

Нету HOSTNAME в env

 ,


0

1

Всем доброго дня.

Столкнулся с тем, что на ubuntu в env нету переменной HOSTNAME. На CentOS7 есть, больше посмотреть негде. Подскажите как добавить переменную туда на постоянной основе. Нужна именно в env и для всех сессий, всех процессов прямо с загрузки ОС.

Про export HOSTNAME знаю, в моем случае он не подходит.

В /etc/environment нельзя использовать HOSTNAME=$(hostname), а вбивать на каждом ручками - не выход.

Где правильно прописать и как это реализовано в центоси? Неужто это где-то при сборке ядра указывается?

★★

Про export HOSTNAME знаю, в моем случае он не подходит.

Почему?

Вообще оно при логине должно как-то там подтягиваться, можешь посмотреть видит ли его hostnamectl --status, а вообще оно должно лежать в /etc/hostname.

micronekodesu ()
Ответ на: комментарий от micronekodesu

Не подходит так как в энв за переменной будет ходить демон, запущенный из systemd. Научить демона ходить за хостнэймом куда-то еще не представляется возможности.

В убунте HOSTNAME внезапно из глобальных перетекло в переменные шела. Тоесть из баша я конечно вижу echo $HOSTNAME, а вот демон как раз не видит.

Ну и так как это все предстоит раскидывать на n-дцать машин, дублировать где-то содержимое /etc/hostname не вариант.

chenger ★★ ()
Ответ на: комментарий от chenger

Добавь наверно теги systemd да ubuntu.

Научить демона ходить за хостнэймом куда-то еще не представляется возможности.

А сам сервис можешь править? Можно запускать демон через шелл, типа

ExecStart=/bin/bash -c 'HOSTNAME=$(cat /etc/hostname) /usr/bin/daemon'
micronekodesu ()

Значит, сноси убунту и установи всем именно centos7. Посмотрл в федорах, начиная с 24-ой - пусто, нет ничего в этом /etc/environment , посмотрел в redhat 7.x - тоже пусто. На всякий случай взглянул в centos 6.x - и там ничего нет в /etc/environment

Если твоей программе надо непременно в /etc/environment искать hostname, а такое возможно только в centos7, то убунту надо определённо сносить. Не подходят другие ОСи для твоей программы.

anonymous ()
Ответ на: комментарий от micronekodesu

А сам сервис можешь править? Можно запускать демон через шелл, типа

Могу, но по-хорошему сервис я должен раскидывать одинаково и на центось и на убунты ансиблом. Поэтому хотел привести просто одну переменную к одинаковому виду.

ubuntu добавил, а systemd тут не особо при чем.

Значит, сноси убунту и установи всем именно centos7.

Кому всем? Это серваки, десяток, с настроенными аппликухами и всякими базами. Смешно.

chenger ★★ ()
Последнее исправление: chenger (всего исправлений: 1)
Ответ на: комментарий от chenger

я должен раскидывать одинаково и на центось и на убунты ансиблом

Ансиблом можно туда хоть сразу хостнейм каждой машины писать, используя для сервиса модуль template и переменную ansible_hostname (если ничего не путаю, все переменные можно увидеть запустив ansible с модулем setup (-m setup) или собрав факты (facts) в плейбуке).

micronekodesu ()
Последнее исправление: micronekodesu (всего исправлений: 1)
Ответ на: комментарий от Aceler

Устраивает, вопрос - куда, чтобы потом демон получил это. он видит только переменные, которые видит env

Ансиблом можно

Да, можно, но если понадобятся другие переменные потом, придется опять что-то собирать, поэтому сразу ищу как правильно получить переменную в env везде и без лишних морок.

Сообразил что ансиблом можно в /etc/environment записывать полученный ансиблом хостнэйм. Но это тоже как-то. Маловероятно что в /etc/hostname сменится что-то, но при этом менять сразу надо и в environment

chenger ★★ ()
Последнее исправление: chenger (всего исправлений: 2)

пишешь в /lib/systemd/system/my_stupid_service.service:

Environment=HOSTNAME=$(hostname)
или ченить типа
EnvironmentFile=-/etc/default/my_stupid_service
и соответственно в /etc/default/my_stupid_service
HOSTNAME=$(hostname)
...

PROFIT?

Ip0 ★★★★ ()