Ищу способ установить 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
unit файл, чтобы перезапустить sysctl.d
Ед. изм? Как этого добиться?
См. Ответ в системе отслеживания проблем CoreOS на github: https://github.com/coreos/bugs/issues/747#issuecomment-142764415
В будущем может быть более простой способ, но сейчас вы можете просто написать модуль для вызова 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