Как установить переменные sysctl в CoreOS cloud-init?
Я ищу способ установить CoreOS sysctl
настройки во время его cloud-init
этап.
Версия CoreOS cloud-init
допускает только несколько директив конфигурации и не совпадает с обычными cloud-init
, Например, нет runcmd
раздел (см. http://coreos.com/docs/cluster-management/setup/cloudinit-cloud-config/).
systemd
предоставляет способ управления sysctl
настройки файлов ( http://www.freedesktop.org/software/systemd/man/sysctl.d.html). Я использую CoreOS cloud-init
write_files
раздел для создания файла в /etc/sysctl.d/50-nf_conntrack.conf
, Но он не будет поднят, потому что конфигурация облака CoreOS происходит после sysctl.d
Конфигурация уже состоялась.
Возможно, я мог бы как-то использовать другой systemd
файл модуля для перезапуска sysctl.d
единица измерения? Как это могло быть достигнуто?
3 ответа
Смотрите ответ на трекер CoreOS Github: https://github.com/coreos/bugs/issues/747
В будущем может быть более простой способ, но сейчас вы можете просто написать модуль для вызова systemd-sysctl во время cloudinit; он будет запущен после записи любых файлов, указанных в write_files:
#cloud-config .... coreos: units: - name: update-sysctl.service command: start content: | [Unit] Description=Update sysctl values written by cloud-config [Service] ExecStart=/usr/lib/systemd/systemd-sysctl ...
Спасибо за другие за некоторые советы.
Вы можете сделать это для запуска произвольных команд, похожих на runcmd.
- name: runcmd.service
command: start
content: |
[Unit]
Description=Runs a command
[Service]
Type=oneshot
ExecStart=/bin/sh -c "touch /etc/environment;"
Вы можете просто позвонить sysctl
на файл, чтобы настройки вступили в силу немедленно, и файл конфигурации будет использоваться для последующих перезагрузок (если ваш экземпляр является постоянным).
Я бы использовал команду запуска для этого.
runcmd:
- sysctl -p /etc/sysctl.d/50-nf_conntrack.conf