镜像服务 IMS-安装Cloud-Init工具:采用官方提供的包源安装Cloud-Init工具(优先推荐)

时间:2023-12-25 16:39:09

采用官方提供的包源安装Cloud-Init工具(优先推荐)

在不同操作系统的云服务器上安装Cloud-Init工具的方法不同,请在root用户下执行相关安装操作。

以下将介绍SUSE、CentOS、Fedora、Debian和Ubuntu操作系统安装Cloud-Init工具的具体方法。其他操作系统类型,请安装并配置对应类型的Cloud-Init工具,例如,使用CoreOS操作系统时需安装并配置coreos-cloudinit。

  • SUSE操作系统

    SUSE操作系统的Cloud-Init网络安装地址:

    https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/

    http://download.opensuse.org/repositories/Cloud:/Tools/

    在上述提供的网络安装地址下选择相应操作系统版本的repo安装包进行安装。

    以SUSE Enterprise Linux Server 12为例,Cloud-Init工具的安装步骤如下。

    1. 登录到创建Linux私有镜像所使用的云服务器
    2. 执行以下命令,安装SUSE 12的网络安装源。

      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_12_SP3/Cloud:Tools.repo

    3. 执行以下命令,更新网络安装源。

      zypper refresh

    4. 执行以下命令,安装Cloud-Init。

      zypper install cloud-init

    5. 执行以下命令,设置Cloud-Init为开机自启动服务。
      • SUSE 11:

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

        service cloud-init-local status; service cloud-init status; service cloud-config status; service cloud-final status

      • SUSE 12以及openSUSE 12/13/42:

        systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

        systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      对于SUSE和openSUSE操作系统,请执行以下步骤禁止动态修改云服务器名称。

      1. 执行以下命令,使用vi编辑器打开“dhcp”文件。

        vi etc/sysconfig/network/dhcp

      2. 将“dhcp”文件中的“DHCLIENT_SET_HOSTNAME”的值修改为“no”。
  • CentOS操作系统
    CentOS操作系统的Cloud-Init网络安装地址如表1所示。请在提供的网络安装地址下选择相应的epel-release安装包进行安装。
    表1 Cloud-Init网络安装地址

    操作系统类型

    版本

    网络安装地址

    CentOS

    6系列32位

    https://archives.fedoraproject.org/pub/archive/epel/6/i386/

    6系列64位

    https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/

    7系列64位

    https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/

    1. 执行以下命令安装Cloud-Init:

      yum install 网络安装地址/epel-release-x-y.noarch.rpm

      yum install cloud-init

      “网络安装地址”表示Cloud-Init对应的epel-release安装包的地址,x-y”表示当前操作系统对应的Cloud-Init epel-release版本号,执行命令时需参考表1以及实际使用的安装包版本进行替换。

      • 以CentOS 6系列64位为例,当前版本号为6.8,则命令修改为:

        yum install https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

      • 以CentOS 7系列64位为例,当前版本号为7.14。则命令修改为:

        yum install https://archives.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  • Fedora操作系统

    安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/yum.repo.d/fedora.repo”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考相关Fedora官网信息配置软件包安装源。

    1. 执行以下命令,安装Cloud-Init。

      yum install cloud-init

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

  • Debian和Ubuntu操作系统

    安装Cloud-Init前,请确认操作系统已经配置好对应的网络安装源地址,请查看“/etc/apt/sources.list”文件中是否已配置相关软件包安装源地址,如果没有配置相关地址源,请参考Debian或者Ubuntu官网信息配置软件包安装源。

    1. 执行以下命令,安装Cloud-Init。

      apt-get update

      apt-get install cloud-init

    2. 执行以下命令,设置Cloud-Init为开机自启动服务。

      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    以cloud-init-23.2.2版本为例,介绍Centos、Fedora、Ubuntu、Debian和SUSE操作系统安装Cloud-Init工具的具体方法,安装步骤如下。

    cloud-init-23.2.2.tar.gz源码包下载地址:https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz

  • Centos 7/Fedora (Fedora-Server-36)操作系统

    依赖python3 环境,确认已经安装python3。

    1. 查询当前系统环境是否已安装cloud-init, 执行有结果表示已经安装。
      cloud-init -v
    2. 删除cloud-init缓存目录。
      rm -rf /var/lib/cloud/*
    3. 安装cloud-init依赖包
      yum install python3-pip -y
      yum install python3-devel
    4. 执行如下命令,下载cloud-init压缩包。
      wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz
    5. 执行如下命令,解压cloud-init压缩包。
      tar -zxvf cloud-init 23.2.2.tar.gz
    6. 执行如下命令进入cloud-init-23.2.2目录文件夹,并安装所有依赖库。
      cd cloud-init23.2.2
      pip3 install -r requirements.txt
    7. 执行如下命令安装cloud-init。
      python3 setup.py build
      python3 setup.py install --init-system system
    8. 在配置文件/etc/cloud/cloud.cfg禁用cloud-init接管网络(可选)。
      vi /etc/cloud/cloud.cfg

      添加如下内容:

      network:
        config: disabled
    9. 重启cloud-init, 查看cloud-init 状态。
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    10. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    11. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local 

  • Ubuntu22.0.4/debian11操作系统

    依赖python3 环境,确认已经安装python3。

    1. 检查并清理系统自带的cloud-init可能存在冗余的配置文件。
      rm -rf /var/lib/cloud/*
      rm -f /var/log/cloud-init*

      删除/etc/cloud/cloud.cfg.d/目录下除了log相关的配置文件外的所有文件。

    2. 执行如下命令更新apt,检查是否有wget,没有则安装。
      sudo apt update
      sudo apt install wget 
    3. 执行如下命令,安装依赖包。
      apt-get install cloud-guest-utils -y
      apt-get install python3-pip -y
      apt-get install python3-devel
    4. 执行以下命令,下载cloud-init压缩包。
      wget https://launchpad.net/cloud-init/trunk/23.2.2/+download/cloud-init-23.2.2.tar.gz
    5. 执行如下命令,解压cloud-init压缩包。
      tar -zxvf cloud-init 23.2.2.tar.gz
    6. 进入cloud-init目录。
      cd cloud-init
    7. 执行如下命令安装所有依赖库。
      pip3 install -r requirements.txt
    8. 执行如下命令安装cloud-init。
      python3 setup.py install
    9. 在vi /etc/cloud/cloud.cfg配置禁止cloud-init接管网络(可选)。

      1.当cloud-init版本等于高于0.7.9版本,且用户需要自定义网络时,在cloud-init安装完成后,请执行如下命令,在编辑器中打开/etc/cloud/cloud.cfg。

      vi /etc/cloud/cloud.cfg

      2.输入i, 在/etc/cloud/cloud.cfg中将network修改为disabled, 禁用Cloud-Init接管网络配置(若没有该配置项请增加):

      network:
        config: disabled
    10. 重启cloud-init, 查看cloud-init 状态
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    11. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    12. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local

  • SUSE Enterprise Linux Server 15操作系统

    依赖python3 环境,确认已经安装python3。

    1. 执行如下命令查看历史已配置好的安装源。
      zypper lr
    2. 执行如下命令删除历史配置的suse的cloud-init的源。
      zypper rr 步骤1中执行结果显示的序号
    3. 执行如下命令配置suse源。
      zypper ar https://ftp5.gwdg.de/pub/opensuse/repositories/Cloud:/Tools/SLE_15_SP4/Cloud:Tools.repo
    4. 执行如下命令刷新suse源。
      zypper refresh
    5. 执行如下命令安装cloud-init。
      zypper install cloud-init
    6. 安装cloud-init成功后,执行cloud-init -v,若出现类似下图报错提示,需执行如下命令安装依赖包。

      pip install requests pyyaml oauthlib jsonschema jsonpatch jinja2 configobj
    7. 检查cloud-init是否安装成功,若出现下图报错提示,则需要在/etc/cloud/cloud.cfg配置datasource_list。
      datasource_list: [ OpenStack ]
      datasource:
        OpenStack:
          metadata_urls: ['http://169.254.169.254']
          max_wait: 120
          timeout: 5
          apply_network_config: false
    8. 修改配置文件后,重启cloud-init, 并查看cloud-init 的状态
      systemctl restart cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service 
      systemctl status cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
    9. 设置cloud-init相关服务为开机自启动。
      systemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service

    10. 执行如下命令检查cloud-init版本以及是否正常运行。
      cloud-init -v
      cloud-init init --local
support.huaweicloud.com/bestpractice-ims/ims_bp_0023.html