11

cloud-config標準ファイルとは異なり、runcmdCoreOScloud-configファイルにはオプションがありません。現在、次を my に追加して、CoreOS マシンでスワップを有効にしていますcloud-config

units:
    - name: swap.service
      command: start
      content: |
        [Unit]
        Description=Turn on swap

        [Service]
        Type=oneshot
        Environment="SWAPFILE=/1GiB.swap"
        RemainAfterExit=true
        ExecStartPre=/usr/sbin/losetup -f ${SWAPFILE}
        ExecStart=/usr/bin/sh -c "/sbin/swapon $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
        ExecStop=/usr/bin/sh -c "/sbin/swapoff $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
        ExecStopPost=/usr/bin/sh -c "/usr/sbin/losetup -d $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"

        [Install]
        WantedBy=local.target

次に、CoreOS イメージを初期化した後、マシンに ssh して実行する必要があります。

sudo fallocate -l 1024m /1GiB.swap && sudo chmod 600 /1GiB.swap \
&& sudo chattr +C /1GiB.swap && sudo mkswap /1GiB.swap

sudo reboot

スワップが有効になる前 (例: で証明top)。

ファイル自体で後者のコマンドを実行できるはずですが、フィールドcloud-configなしでそのようなコマンドを実行する方法がわかりません。おそらくこれは、ユニットを編集するか、別のユニットを追加することで実行できますが、その方法はよくわかりません. runmcdcloud-configswap.serviceunit

したがって、2 つの質問が残ります。(1) これは可能ですか、それとも最後のコマンドを手動で実行する必要があるのでしょうか。(2) 前者の場合、どのように?

4

2 に答える 2

3

@cboettig - ユニット ファイルの例と @philibaker のメモのおかげで、これを実行できました。基本的に、ExecStartPre次のように変更するだけで済みました。

ExecStartPre=/bin/bash -c "\
    fallocate -l 2g $SWAPFILE && \
    chmod 600 $SWAPFILE && \
    chattr +C $SWAPFILE && \
    mkswap $SWAPFILE && \
    losetup -f $SWAPFILE"

これには、preexec ステップのセットアップ全体が含まれます。

于 2014-12-12T16:58:21.597 に答える