AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 780203
Accepted
Hazim
Hazim
Asked: 2016-06-02 00:20:52 +0800 CST2016-06-02 00:20:52 +0800 CST 2016-06-02 00:20:52 +0800 CST

cloud-config 文件未加载,单元未在从 AMI 创建的机器上启动

  • 772

我们正在编写使用 terraform(在 AWS 上)执行以下操作的代码:

  1. 使用我们提供的 cloud-config yaml 文件创建一个 core-os 实例 (1)
  2. 从该实例创建 AMI

到目前为止,该过程运行良好。

当我们通过 AWS 控制台从该 AMI 启动实例 (2) 时。新启动的实例不使用 cloud-config 文件。

它 (2) 具有通过 cloud-config yaml 文件在实例 (1) 中创建的服务/系统单元。但是这些服务已经死了。如果我们明确地使用它们启动它们,它们工作得很好systemctl

我们如何确保从该 AMI 创建的任何实例都应该在启动时启动这些服务/系统单元,或者应该加载该云配置文件?

(我们也将 cloud-config yaml 保存在机器内部的某个位置,如果我们通过 手动运行 cloud-config 文件coreos-cloudinit --from-file=path/to/file/cloud-config.yaml,一切正常。但我们希望它在启动时无需任何手动步骤即可工作)

这是我们的云配置文件

#cloud-config
coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
    # specify the initial size of your cluster with ?size=X
    discovery: https://discovery.etcd.io/2cb27f1fecb57e14837016e04547aa32
    # multi-region and multi-cloud deployments need to use $public_ipv4
    advertise-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    initial-advertise-peer-urls: http://127.0.0.1:2380
    # listen on both the official ports and the legacy ports
    # legacy ports can be omitted if your application doesn't depend on them
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://0.0.0.0:2380,http://0.0.0.0:7001
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: hello.service
      command: start
      content: |
        [Unit]
        Description=hello_docker
        After=docker.service
        Requires=docker.service

        [Service]
        TimeoutStartSec=0
        ExecStartPre=-/usr/bin/docker rm busybox1
        ExecStartPre=/usr/bin/docker pull busybox
        ExecStart=/usr/bin/docker run --rm --name busybox1 busybox /bin/sh -c "while true; do echo Hello Docker; sleep 1; done"
        ExecStop=/usr/bin/docker stop busybox1
amazon-web-services systemd cloud-config amazon-ami coreos
  • 2 2 个回答
  • 271 Views

2 个回答

  • Voted
  1. Rob
    2016-06-02T08:58:18+08:002016-06-02T08:58:18+08:00

    您不需要制作自己的 CoreOS AMI,只需使用官方的 CoreOS AMI。将相同的 cloud-config 文件传递​​给您要创建的每个框,单元将启动。这使您的基础架构比您必须对内容进行快照更不可变。

    • 0
  2. Best Answer
    Hazim
    2016-06-02T22:12:06+08:002016-06-02T22:12:06+08:00

    我缺少的是,第一个实例 (1) 使用脚本作为用户数据,然后通过 cloud-init 命令运行 cloud-config。

    相反,我必须将我的云配置复制到 /usr/share/oem/ 中,以便 AMI 创建的实例默认也使用该云配置。

    此外,以下内容可能会帮助面临类似问题的人,但如前所述,它不会在第一次启动时启动。

    您需要启用服务(确保它们具有安装部分)。

    #cloud-config
    
    coreos:
      units:
        - name: "example.service"
          enable: true
          content: |
            [Service]
            Type=oneshot
            ExecStart=/usr/bin/echo Hello World
    
            [Install]
            WantedBy=multi-user.target
    

    此服务不会在第一次启动时启动(因为该单元在 systemd 实现 multi-user.target 后启用)但它将在后续启动时运行。

    此外,在拍摄快照时,请确保您之前删除了 /etc/machine-id。否则,所有机器都将具有相同的 ID。

    参考:链接

    • 0

相关问题

  • 与 AWS 中的其他系统相比,CentOS 报告的总内存较低

  • 如何在 Amazon Linux 服务器上升级到 Java 1.8?

  • 了解 Amazon AWS 使用数据

  • 亚马逊提供的负载均衡服务体验如何?

  • ELB 中现有节点的 AWS 自动缩放问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve