Как установить переменные 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-initwrite_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
Другие вопросы по тегам