安装cloud-init服务

最近更新时间:2019-10-30 19:54:37

使用自定义镜像时,为保证运行该镜像的实例能成功完成初始化配置,建议用户在服务器上安装cloud-init服务。

目前仅Linux云服务器支持安装cloud-init服务。

前提条件

  • 要安装cloud-init的云服务器必须可以正常访问外网。
  • 登录服务器的账户必须是root用户。对于Ubuntu系统,需要换至root帐号。

操作步骤

准备工作

  1. 检查镜像中是否已包含cloud-init服务。如果是,卸载原有的cloud-init服务。
    • 对于CentOS操作系统,使用以下命令:
      rpm -e cloud-init
      rm -rf /etc/conf/cloud/*
      rm -rf /var/lib/cloud/*
    • 对于Ubuntu操作系统,使用以下命令:
      apt-get purge cloud-init 
    • 对于Debian操作系统,使用以下命令:
      rm /usr/bin/cloud-init*  
  2. 检查镜像环境的Python解释器版本,如果为Python2.6及以下版本,需要安装下列依赖组件:

    • requests:执行pip install 'requests<2.20.0'命令安装requests 2.20.0版本以下的版本。
    • jsonschema:执行pip install 'jsonschema<=2.5.1'命令安装jsonschema 2.5.1版本以下的版本。
    • setuptools:执行pip install setuptools==36.7.0命令安装setuptools 37版本以下的版本。
  3. 获取cloud-init源码包

安装cloud-init服务

  1. 解压 cloud-init 安装包。
    tar -zxvf cloud-init-18.3.tar.gz
  2. 进入 cloud-init 安装包目录cloud-init-18.3
    cd cloud-init-18.3
  3. 安装 python-pip。

    apt-get/yum install python-pip -y
  4. 安装依赖包。
    pip install -r requirements.txt
  5. 安装 cryptography。

    pip install cryptography           # Python 2.7 执行此命令
    pip install 'cryptography<=1.3.1'  # Python 2.6 执行此命令
  6. 安装 cloud-init。
    python setup.py build
    python setup.py install --init-system systemd # systemd 自启动管理服务,执行此命令
    python setup.py install --init-system sysvinit # sysvinit 自启动管理服务,执行此命令
    python setup.py install --init-system upstart # upstart 自启动管理服务(ubuntu 14使用),执行此命令.

设置cloud-init服务开机自启动

如果操作系统使用 sysvinit 自启动管理服务,使用以下命令:

chkconfig --add cloud-init-local
chkconfig --add cloud-init
chkconfig --add cloud-config
chkconfig --add cloud-final
chkconfig cloud-init-local on
chkconfig cloud-init on
chkconfig cloud-config on
chkconfig cloud-final on

如果操作系统使用 systemd 自启动管理服务,具体操作步骤如下所示。

  1. 对于Ubuntu和Debian操作系统,执行以下命令:
    ln -s /usr/local/bin/cloud-init* /usr/bin/
  2. 所有操作系统都需执行以下命令:
    systemctl enable cloud-init-local.service
    systemctl start cloud-init-local.service
    systemctl enable cloud-init.service
    systemctl start cloud-init.service
    systemctl enable cloud-config.service
    systemctl start cloud-config.service
    systemctl enable cloud-final.service
    systemctl start cloud-final.service
    systemctl status cloud-init-local.service
    systemctl status cloud-init.service
    systemctl status cloud-config.service
    systemctl status cloud-final.service
  3. 对于CentOS和Fedora操作系统,执行以下命令:
    ln -s /usr/lib/systemd/system/cloud-config.target  /usr/lib/systemd/system/multi-user.target.wants/cloud-config.target
  4. 对于Ubuntu和Debian操作系统,执行以下命令:
    ln -s /lib/systemd/system/cloud-config.target  /lib/systemd/system/multi-user.target.wants/cloud-config.target

如果操作系统使用 upstart 自启动管理服务,对于Ubuntu和Debian操作系统,使用以下命令:

ln -s /usr/local/bin/cloud-init* /usr/bin/

金山云,开启您的云计算之旅

注册有礼