web-dev-qa-db-ja.com

CoreOS cloud-initでsysctl変数を設定するにはどうすればよいですか?

cloud-initステージでCoreOSsysctl設定を行う方法を探しています。

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ユニットを再起動できますか?これはどのように達成できますか?

4
Andy Shinn

CoreOS github Issue Trackerの回答を参照してください: https://github.com/coreos/bugs/issues/747#issuecomment-142764415

将来的にはもっと簡単な方法があるかもしれませんが、今のところ、cloudinit中にsystemd-sysctlを呼び出すユニットを書くだけです。 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 ...
3
IanB

いくつかのヒントを他の人に感謝します。

これを実行して、runcmdと同様の任意のコマンドを実行できます。

- name: runcmd.service
  command: start
  content: |
    [Unit]
    Description=Runs a command

    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c "touch /etc/environment;"
2
devnull

自分でファイルに対してsysctlを呼び出すだけで、設定がすぐに有効になり、構成ファイルは後で再起動するために使用されます(インスタンスが永続的である場合)。

これには コマンドの実行 を使用します。

runcmd:
- sysctl -p /etc/sysctl.d/50-nf_conntrack.conf
0
Michael Hampton