我看到,與標準cloud-config
文件不同,CoreOS cloud-config
文件中沒有runcmd
選項。目前,我通過添加以下到我的cloud-config
使CoreOS計算機上的交換:在CoreOS雲配置中執行命令(例如添加交換)
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
文件本身,後者的命令,但我不是我怎麼能在cloud-config
沒有runmcd
場運行這些命令清楚。也許這可以通過編輯我的swap.service
單元或者可能通過添加另一個unit
來完成,但我還沒有弄清楚如何。因此,這給我留下了兩個問題:(1)可以這樣做,還是總是需要手動運行最後的命令? (2)如果前者如何呢?