【问题标题】:CoreOS - Cloud-Config not saving fileCoreOS - 云配置不保存文件
【发布时间】:2015-03-18 04:21:42
【问题描述】:

我正在尝试编写一个“初始”云配置文件,该文件在我的默认云配置文件替换它并接管之前进行一些设置。这就是它的样子,但是当它运行“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

【问题讨论】:

    标签: coreos


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在我的发行版 (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'
      

      我认为当你将 ~ 推入 shell 时,你会得到适当的扩展。但是, ~ 将与执行脚本的进程 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 参与执行。

      【讨论】:

        猜你喜欢
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 2015-01-20
        • 2012-08-01
        • 1970-01-01
        相关资源
        最近更新 更多