CoreOS - Cloud-Config不保存文件

时间:2015-03-18 04:21:43

标签: coreos

我正在尝试编写一个“初始”cloud-config文件,在我的默认Cloud-Config文件替换它并接管之前进行一些设置。这就是它的样子,但无论何时运行“clustersetup.service”,它都找不到本应保存的clustersetup.sh文件。当然,如果我从终端运行它,它的工作正常。我做错了什么?

#cloud-config

coreos:
  etcd:
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  fleet:
    public-ip: $private_ipv4
  units:
    - name: clustersetup.service
      command: start
      content: |
        [Unit]
        Description=Cluster Setup

        [Service]
        ExecStartPre=/usr/bin/wget -q http://10.0.2.2:8080/clustersetup.sh -O ~/clustersetup.sh
        ExecStart=/usr/bin/bash ~/clustersetup.sh
        ExecStop=/usr/bin/bash

2 个答案:

答案 0 :(得分:1)

systemd指定的路径不能是相对的。再次尝试指定完整路径/home/core/clustersetup.sh

答案 1 :(得分:0)

在我的发行版(ubuntu)中,bash在/ bin中。你能做的一件事是:

    ExecStartPre=/bin/bash -c '/usr/bin/wget -q http://10.0.2.2:8080/clustersetup.sh -O ~/clustersetup.sh'
    ExecStart=/bin/bash -c ~/clustersetup.sh'

我认为在推动它时,你会得到〜的正确扩展。但是,〜将相对于执行脚本的进程id(我不知道肯定是核心)。如果你想确定,你可以:

    ExecStartPre=/bin/bash -c '/usr/bin/wget -q http://10.0.2.2:8080/clustersetup.sh -O ~core/clustersetup.sh'
    ExecStart=/bin/bash -c ~core/clustersetup.sh'

我没有测试过这个。我同意@Brian的意见,明确的路径是一个更好的主意。一般来说,最好不要让shell参与执行。