Amazon Elastic Compute Cloud
Linux 实例用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

作为本地虚拟机运行 Amazon Linux 2

使用 Amazon Linux 2 虚拟机 (VM) 映像进行本地开发和测试。这些映像适用于以下虚拟化平台:

  • VMWare

  • KVM

  • VirtualBox (Oracle VM)

  • Microsoft Hyper-V

要将 Amazon Linux 2 虚拟机映像用于受支持的虚拟化平台之一,需要执行以下操作:

步骤 1:准备 seed.iso 启动映像

seed.iso 启动映像包含启动新虚拟机所需的初始配置信息,如网络配置、主机名和用户数据。

注意

seed.iso 启动映像仅包括启动 VM 所需的配置信息。不包括 Amazon Linux 2 操作系统文件。

要生成 seed.iso 启动映像,需要两个配置文件:

  • meta-data - 此文件包括 VM 主机名和静态网络设置。

  • user-data - 此文件配置用户账户,并指定其密码、密钥对以及访问机制。默认情况下,Amazon Linux 2 VM 映像会创建 ec2-user 用户帐户。使用 user-data 配置文件设置默认用户账户的密码。

创建 seed.iso 启动盘

  1. 创建名为 seedconfig 的新文件夹,用于存储 meta-datauser-data 配置文件。

  2. 创建 meta-data 配置文件。

    1. 添加 VM 主机名。

      local-hostname: vm_hostname
    2. 指定任何自定义网络设置,如网络接口名称。

      #network-interfaces: | # iface interface_name inet static

    例如,以下代码块显示指定 VM 主机名 (amazonlinux.onprem) 的 meta-data 配置文件的内容,配置默认网络接口 (eth0),并为必要的网络设备指定静态 IP 地址。

    local-hostname: amazonlinux.onprem # eth0 is the default network interface enabled in the image. You can configure static network settings with an entry like the following. network-interfaces: | iface eth0 inet static address 192.168.1.10 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254
  3. 创建 user-data 配置文件。

    1. 以纯文本格式为默认 ec2-user 用户账户指定自定义密码:

      #cloud-config #vim:syntax=yaml users: # A user by the name `ec2-user` is created in the image by default. - default chpasswd: list: | ec2-user:plain_text_password # In the above line, do not add any spaces after 'ec2-user:'.

      注意

      请务必将 plain_text_password 占位符替换为您所选的明文密码。

    2. (可选) 创建其他用户账户并指定其访问机制、密码和密钥对。有关受支持的指令的更多信息,请参阅模块

    3. (可选) 默认情况下,VM 每次启动时,cloud-init 都会应用网络设置。将以下代码添加到 user-data 配置文件,以防止 cloud-init 在每次启动时都应用网络设置,并保留首次启动期间应用的网络设置。

      # NOTE: Cloud-init applies network settings on every boot by default. To retain network settings from first boot, add following ‘write_files’ section: write_files: - content: | # Disable network configuration after first boot network: config: disabled path: /etc/cloud/cloud.cfg.d/80_disable_network_after_firstboot.cfg

    例如,以下代码块显示额外创建三个用户的 user-data 配置文件的内容,为默认用户账户 ec2-user 指定自定义密码,并阻止 cloud-init 在每次启动时应用网络设置。

    #cloud-config # vim:syntax=yaml users: # A user by the name ec2-user is created in the image by default. - default # The following entry creates user1 and assigns a plain text password. # Please note that the use of a plain text password is not recommended from security best practices standpoint. - name: user1 groups: sudo sudo: ['ALL=(ALL) NOPASSWD:ALL'] plain_text_passwd: myp@ssw0rd lock_passwd: false # The following entry creates user2 and attaches a hashed password to the user. Hashed passwords can be generated with: # python -c 'import crypt,getpass; print(crypt.crypt(getpass.getpass()))' - name: user2 passwd: hashed-password lock_passwd: false # The following entry creates user3, disables password-based login and enables an SSH public key. - name: user3 ssh-authorized-keys: - ssh-public-key-information lock_passwd: true chpasswd: list: | ec2-user:myp@ssw0rd # In the above line, do not add any spaces after 'ec2-user:'. # NOTE: Cloud-init applies network settings on every boot by default. To retain network settings from first boot, uncomment the following ‘write_files’ section: #write_files: - content: | # Disable network configuration after first boot network: config: disabled path: /etc/cloud/cloud.cfg.d/80_disable_network_after_firstboot.cfg
  4. meta-datauser-data 配置文件放在步骤 1中创建的 seedconfig 文件夹中。

  5. 使用 meta-datauser-data 配置文件创建 seed.iso 启动映像。

    对于 Linux,请使用类似 genisoimage 的工具。导航到 seedconfig 文件夹,执行以下命令:

    $ genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data

    对于 macOS,请使用类似 hdiutil 的工具。从 seedconfig 文件夹往上导航一级,执行以下命令:

    $ hdiutil makehybrid -o seed.iso -hfs -joliet -iso -default-volume-name cidata seedconfig/

步骤 2:下载 Amazon Linux 2 VM 映像

我们为受支持的每个虚拟化平台提供不同的 Amazon Linux 2 VM 映像。下载所选平台对应的 VM 映像:

步骤 3:启动并连接到新 VM

要启动和连接到新 VM,必须要有 seed.iso 启动映像 (在步骤 1 中创建) 和 Amazon Linux 2 VM 映像 (在步骤 2 中下载)。

注意

首次启动时,必须将 seed.iso 启动映像连接到 VM。

在 VM 启动后,使用 user-data 配置文件中定义的用户账户之一登录。在首次登录后,可以将启动映像与 VM 断开连接。