cbo*_*tig 11 swapfile systemd digital-ocean coreos
我看到,与标准cloud-config文件不同,runcmdCoreOS cloud-config文件中没有选项.目前,我通过向我添加以下内容来启用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
Run Code Online (Sandbox Code Playgroud)
然后在初始化我的CoreOS映像后,我必须ssh进入机器并运行:
sudo fallocate -l 1024m /1GiB.swap && sudo chmod 600 /1GiB.swap \
&& sudo chattr +C /1GiB.swap && sudo mkswap /1GiB.swap
sudo reboot
Run Code Online (Sandbox Code Playgroud)
在交换之前将启用(例如证明top).
看起来我应该能够在cloud-config文件本身中完成后面的命令,但是我不清楚如何runmcd在没有字段的情况下运行这些命令cloud-config.也许这可以通过编辑我的swap.service单位或者通过添加另一个来完成unit,但我还没弄清楚如何.
所以,这给我留下两个问题:(1)可以这样做还是总是需要手动运行最后的命令?(2)如果是前者,那怎么样?
正如在Github上的一个问题的答案中指出的那样,你最终会编写一个单元来调用你选择的命令.这个答案给出了一个使用任意命令的好例子:
#cloud-config
....
coreos:
units:
- name: runcmd.service
command: start
content: |
[Unit]
Description=Creates a tmp foo file
[Service]
Type=oneshot
ExecStart=/bin/sh -c "touch /tmp/foo;"
Run Code Online (Sandbox Code Playgroud)
@cboettig - 感谢您的单元文件示例和@philibaker注释,我得到了这个 - 基本上我唯一要做的就是将其更改为ExecStartPre:
ExecStartPre=/bin/bash -c "\
fallocate -l 2g $SWAPFILE && \
chmod 600 $SWAPFILE && \
chattr +C $SWAPFILE && \
mkswap $SWAPFILE && \
losetup -f $SWAPFILE"
Run Code Online (Sandbox Code Playgroud)
这包括预执行步骤中的整个设置。
| 归档时间: |
|
| 查看次数: |
2895 次 |
| 最近记录: |