设置虚拟机管理器


在 Compute Engine 上,您可以使用虚拟机管理器来管理虚拟机上运行的操作系统。

如需查看设置虚拟机以使用虚拟机管理器所需的步骤,请参阅设置概览

设置虚拟机管理器后,您可以查看通过 OS Config API 执行的 API 操作的审核日志,请参阅查看 虚拟机管理器审核日志

准备工作

  • 查看项目的 OS Config 配额
  • 如果您尚未设置身份验证,请进行设置。 身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

设置概览

您可以通过以下两种方式启用虚拟机管理器:

  • 自动启用:应用于整个 Google Cloud 项目。您可以通过 Google Cloud 控制台完成自动启用。您可能还需要手动执行某些步骤。
  • 手动启用:可以按虚拟机启用,也可以为整个 Google Cloud 项目启用。

手动

如需手动设置虚拟机管理器,请完成以下步骤:

  1. 在您的 Google Cloud 项目中,启用 OS Config API
  2. 在每个虚拟机上,检查是否安装了 OS Config 代理。 如果尚未安装 OS Config 代理,请安装该代理。
  3. 针对您的项目或每个虚拟机,设置 OS Config 代理的实例元数据。 如需在虚拟机或项目中激活 OS Config 代理,必须执行此步骤。
  4. 验证所有虚拟机是否都具有附加的服务账号。您无需向此服务账号授予任何 IAM 角色。 虚拟机管理器使用此服务账号签署对 API 服务的请求。
  5. 如果您的虚拟机在专用 VPC 网络中运行,并且无法访问公共互联网,请启用专用 Google 访问通道
  6. 如果您为虚拟机使用 HTTP 代理,请配置 HTTP 代理
  7. 可选。针对您的项目或每个虚拟机,停用不需要的功能

自动

首次转到 Google Cloud 控制台中的任何虚拟机管理器页面时,您可以选择自动启用虚拟机管理器。

如果您按照引导步骤操作,则可以使用自动启用功能完成以下任务:

  • 在 Google Cloud 项目上启用 OS Config Service API
  • 在 Google Cloud 项目中安装了该代理的所有虚拟机上激活该代理

自动启用。

支持的操作系统

如需查看支持虚拟机管理器的操作系统版本的完整列表,请参阅操作系统详细信息

启用 OS Config Service API

在您的 Google Cloud 项目中,启用 OS Config API。

控制台

在 Google Cloud 控制台中,启用 OS Config API。

启用 OS Config API

gcloud

如需启用 API,请运行以下命令:

gcloud services enable osconfig.googleapis.com

检查 OS Config 代理是否已安装

OS Config 代理默认安装在版本日期为 v20200114 或之后的 CentOS、Container-Optimized OS (COS)、Debian、Red Hat Enterprise Linux (RHEL)、Rocky Linux、SLES、Ubuntu 和 Windows Server 映像上。如需了解安装了 OS Config 代理的操作系统版本,请参阅操作系统详细信息。在您启用代理元数据启用服务 API 之前,这些代理会以空闲方式运行。

Linux

如需检查您的 Linux 虚拟机是否安装了该代理,请运行以下命令:

sudo systemctl status google-osconfig-agent

如果代理已安装且正在运行,则会输出如下内容:

google-osconfig-agent.service - Google OSConfig Agent
Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
Main PID: 369 (google_osconfig)
 Tasks: 8 (limit: 4374)
Memory: 102.7M
CGroup: /system.slice/google-osconfig-agent.service
        └─369 /usr/bin/google_osconfig_agent

如果尚未安装 OS Config 代理,请安装该代理。

Windows

如需检查您的 Windows 虚拟机是否安装了代理,请运行以下命令:

PowerShell Get-Service google_osconfig_agent

如果代理已安装且正在运行,则会输出如下内容:

Status   Name               DisplayName
------   ----               -----------
Running  google_osconfig... Google OSConfig Agent

如果尚未安装 OS Config 代理,请安装该代理。

安装 OS Config 代理

在按照下列步骤安装代理之前,请先检查您的虚拟机上是否已运行代理

在每个虚拟机上,安装 OS Config 代理。您可以使用下列其中一种方法安装 OS Config 代理:

手动安装代理

可使用这种方法在现有虚拟机上安装 OS Config 代理。

如需安装代理,请完成以下步骤:

  1. 连接到要在其上安装 OS Config 代理的虚拟机

  2. 安装 OS Config 代理。

    Windows Server

    如需在 Windows Server 上安装 OS Config 代理,请运行以下命令:

    googet -noconfirm install google-osconfig-agent
    

    Ubuntu

    如需在 Ubuntu 虚拟机上安装 OS Config 代理,请运行以下命令:

    1. 设置 Ubuntu 代码库。

      • 对于 Ubuntu 20.04 及更高版本,请运行以下命令:

        1. 添加 Ubuntu 代码库。

          sudo su -c "echo 'deb http://packages.cloud.google.com/apt google-compute-engine-focal-stable main' > \
          /etc/apt/sources.list.d/google-compute-engine.list"
          
        2. 导入 Google Cloud 公钥。

          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
          sudo apt-key add -
          
      • 对于 Ubuntu 18.04 及更高版本,请运行以下命令:

        1. 添加 Ubuntu 代码库。

          sudo su -c "echo 'deb http://packages.cloud.google.com/apt google-compute-engine-bionic-stable main' > \
          /etc/apt/sources.list.d/google-compute-engine.list"
          
        2. 导入 Google Cloud 公钥。

          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
          sudo apt-key add -
          
      • 对于 Ubuntu 16.04,请运行以下命令:

        1. 添加 Ubuntu 代码库。

          sudo su -c "echo 'deb http://packages.cloud.google.com/apt google-compute-engine-xenial-stable main'> \
          /etc/apt/sources.list.d/google-compute-engine.list"
          
        2. 导入 Google Cloud 公钥。

          curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
          sudo apt-key add -
          
    2. 安装 OS Config 代理。

      sudo apt update
      sudo apt -y install google-osconfig-agent
      

    Debian

    如需在 Debian 虚拟机上安装 OS Config 代理,请运行以下命令:

    sudo apt update
    sudo apt -y install google-osconfig-agent
    

    添加 Google Cloud 代码库和公钥

    如果您使用的虚拟机实例并非通过 Google 提供的映像创建,或收到“unable to locate package”的错误消息,请完成下列步骤以添加 Google Cloud 代码库并导入公钥。

    添加代码库并导入密钥之后,您就可以运行相应的命令来安装 OS Config 代理。

    • 对于 Debian 9 (Stretch),请运行以下命令:

      1. 添加 Debian 代码库。

        sudo su -c "echo 'deb http://packages.cloud.google.com/apt \
        google-compute-engine-stretch-stable main'> /etc/apt/sources.list.d/google-compute-engine.list"
        
      2. 导入 Google Cloud 公钥。

        curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
        sudo apt-key add -
        
    • 对于 Debian 10 (Buster),请运行以下命令:

      1. 添加 Debian 代码库。

        sudo su -c "echo 'deb http://packages.cloud.google.com/apt \
        google-compute-engine-buster-stable main'> /etc/apt/sources.list.d/google-compute-engine.list"
        
      2. 导入 Google Cloud 公钥。

        curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
        sudo apt-key add -
        

    RHEL/CentOS/Rocky

    如需在 RHEL 7/8、CentOS 7/8 虚拟机或 Rocky Linux 8/9 上安装 OS Config 代理,请运行以下命令:

    sudo yum -y install google-osconfig-agent
    

    SLES/openSUSE

    如需在 SLES 或 OpenSUSE 虚拟机上安装 OS Config 代理,请运行以下命令:

    1. 设置 SLES 代码库。

      • 对于 SLES 12,请运行以下命令:

        sudo su -c "cat > /etc/zypp/repos.d/google-compute-engine.repo <<EOM
        [google-compute-engine]
        name=Google Compute Engine
        baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-sles12-stable
        enabled=1
        gpgcheck=1
        repo_gpgcheck=0
        gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
          https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
        EOM"
        
      • 对于 SLES 15 和 OpenSUSE 15,请运行以下命令:

        sudo su -c "cat > /etc/zypp/repos.d/google-compute-engine.repo <<EOM
        [google-compute-engine]
        name=Google Compute Engine
        baseurl=https://packages.cloud.google.com/yum/repos/google-compute-engine-sles15-stable
        enabled=1
        gpgcheck=1
        repo_gpgcheck=0
        gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
          https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
        EOM"
        
        
    2. 导入适用于 Google Cloud 的 GPG 密钥。

      sudo rpm --import https://packages.cloud.google.com/yum/doc/yum-key.gpg \
      --import https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
      
    3. 安装 OS Config 代理。

      sudo zypper -n --gpg-auto-import-keys install --from google-compute-engine google-osconfig-agent
      

使用启动脚本安装代理

您还可以使用手动安装命令创建启动脚本,并在创建虚拟机的过程中安装 OS Config 代理。

  1. 复制适用于您的操作系统的手动命令
  2. 为虚拟机创建方法提供启动脚本

    例如,如果您使用 gcloud compute instances create 命令创建 Debian 10 虚拟机,则您的命令类似于以下内容:

    gcloud compute instances create VM_NAME \
       --image-family=debian-10 --image-project=debian-cloud \
       --metadata startup-script='#! /bin/bash
       apt update
       apt -y install google-osconfig-agent'

    VM_NAME 替换为虚拟机名称。

  3. 验证启动脚本是否完成运行。如需验证启动脚本是否完成运行,您可以查看日志或查看串行控制台

设置元数据值

您可以设置每个虚拟机上的实例元数据或适用于项目中所有虚拟机的项目元数据。

在您的 Google Cloud 项目或虚拟机上,将 enable-osconfig 元数据值设置为 TRUE。将 enable-osconfig 元数据值设置为 TRUE 可启用以下功能:

  • 补丁
  • 操作系统政策
  • OS Inventory Management
    • 对于早期版本的 OS Inventory Management,您还必须将 enable-guest-attributes 元数据值设置为 TRUE。 如果这两个元数据值均未设置,则信息中心会显示虚拟机的 no data。较高版本则不需要这样做。如需了解这两个 OS Inventory Management 版本,请参阅 OS Inventory Management 版本

控制台

您可以使用下列其中一种方法将元数据值应用于您的 Google Cloud 项目或虚拟机:

  • 方法 1:在项目级元数据中设置 enable-osconfig,以将此项设置应用于项目中的所有虚拟机。

    1. 在 Google Cloud 控制台中,转到元数据页面。

      转到元数据

    2. 点击修改

    3. 添加以下元数据条目:

      键:enable-osconfig
      值:TRUE

      对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

      • 键:enable-osconfig
        值:TRUE
      • 键:enable-guest-attributes
        值:TRUE
    4. 点击保存以应用更改。

  • 方法 2:创建实例时,在虚拟机元数据中设置 enable-osconfig

    1. 在 Google Cloud 控制台中,转到创建实例页面。

      转到“创建实例”

    2. 指定虚拟机详情。

    3. 展开高级选项部分,然后执行以下操作:

      1. 展开管理部分。
      2. 元数据部分中,点击添加一项以添加以下元数据条目:

        enable-osconfig
        TRUE

        对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

        • enable-osconfig
          TRUE
        • enable-guest-attributes
          TRUE
    4. 如需创建虚拟机,请点击创建

  • 方法 3:在现有虚拟机的元数据中设置 enable-osconfig

    1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

      转到“虚拟机实例”

    2. 点击要为其设置元数据值的虚拟机的名称。

    3. 实例详情页面上,点击修改以修改设置。

    4. 自定义元数据下,添加以下元数据条目:

      键:enable-osconfig
      值:TRUE

      对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

      • 键:enable-osconfig
        值:TRUE
      • 键:enable-guest-attributes
        值:TRUE
    5. 点击保存以将更改应用于虚拟机。

gcloud

使用 project-info add-metadata 或带有 --metadata=enable-osconfig=TRUE 标志的 instances add-metadata 命令。

您可以使用下列其中一种方法将元数据值应用于项目或虚拟机:

  • 方法 1:在项目级元数据中设置 enable-osconfig,以将此项设置应用于项目中的所有实例:

    gcloud compute project-info add-metadata \
      --project PROJECT_ID \
      --metadata=enable-osconfig=TRUE
    

    对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

    gcloud compute project-info add-metadata \
      --project PROJECT_ID \
      --metadata=enable-guest-attributes=TRUE,enable-osconfig=TRUE
    

    PROJECT_ID 替换为您的项目 ID。

  • 方法 2:在现有实例的元数据中设置 enable-osconfig

    gcloud compute instances add-metadata VM_NAME \
      --metadata=enable-osconfig=TRUE
    

    对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

    gcloud compute instances add-metadata VM_NAME \
      --metadata=enable-guest-attributes=TRUE,enable-osconfig=TRUE
    

    VM_NAME 替换为虚拟机名称。

  • 方法 3:创建实例时,在实例元数据中设置 enable-osconfig

    gcloud compute instances create VM_NAME \
      --metadata=enable-osconfig=TRUE
    

    对于早期版本的 OS Inventory Management,请同时设置 enable-osconfigenable-guest-attributes

    gcloud compute instances create VM_NAME \
      --metadata=enable-guest-attributes=TRUE,enable-osconfig=TRUE
    

    VM_NAME 替换为虚拟机名称。

REST

您可以在 Google Cloud 项目级层或实例级层设置元数据值。

必须在元数据属性中设置以下键值对:

  • 键:enable-osconfig
    值:TRUE

对于早期版本的 OS Inventory Management,还要添加以下键值对:

  • 键:enable-guest-attributes
    值:TRUE

配置 HTTP 代理

如果您为虚拟机使用 HTTP 代理,请运行以下命令以设置 http_proxyhttps_proxy 环境变量。您还应通过配置 no_proxy 环境变量来排除元数据服务器 (169.254.169.254),使得 OS Config 代理可以访问本地元数据服务器。

Linux

在系统范围的配置文件中添加以下环境变量。例如,在 CentOS 7 中,将代理设置添加到 /etc/systemd/system.conf 文件中:

  http_proxy="http://PROXY_IP:PROXY_PORT"
  https_proxy="http://PROXY_IP:PROXY_PORT"
  no_proxy=169.254.169.254,metadata,metadata.google.internal  # Skip proxy for the local Metadata Server.
 

PROXY_IPPROXY_PORT 分别替换为您的代理服务器的 IP 地址和端口号。

Windows

从管理员命令提示符运行以下命令。

  setx http_proxy http://PROXY_IP:PROXY_PORT /m
  setx https_proxy http://PROXY_IP:PROXY_PORT /m
  setx no_proxy 169.254.169.254,metadata,metadata.google.internal /m

PROXY_IPPROXY_PORT 分别替换为您的代理服务器的 IP 地址和端口号。

Google 建议您通过添加 no_proxy 环境变量来排除 *.googleapis.com,以避免 OS Config 代理发生连接问题。如果您只想将特定虚拟机连接到 OS Config 代理,请为虚拟机所在的可用区添加前缀,并使用格式 [zone-name]-osconfig.googleapis.com。例如 us-central1-f-osconfig.googleapis.com

停用不需要的功能

对于您可能不需要的功能,可以通过设置以下元数据值来将其停用:osconfig-disabled-features=FEATURE1,FEATURE2

FEATURE1,FEATURE2 替换为以下任意值:

  • OS Inventory Management:osinventory
  • 补丁和操作系统政策:tasks
  • 操作系统客机政策(Beta 版):guestpolicies

使用以下方法之一停用元数据值。

控制台

您可以使用下列其中一种方法针对 Google Cloud 项目或虚拟机停用元数据值:

  • 方法 1:在项目级别的元数据中停用功能,以将此项设置应用于项目中的所有实例。

    1. 在 Google Cloud 控制台中,转到元数据页面。

      转到元数据

    2. 点击修改

    3. 添加以下元数据条目:

      键:osconfig-disabled-features
      值:FEATURE1,FEATURE2

      例如:
      键:osconfig-disabled-features
      值:osinventory,guestpolicies

    4. 点击保存以应用更改。

  • 方法 2:在现有虚拟机的元数据中停用功能。

    1. 在 Google Cloud 控制台中,转到虚拟机实例页面。

      转到“虚拟机实例”

    2. 点击要设置元数据值的虚拟机的名称。

    3. 实例详情页面上,点击修改以修改虚拟机设置。

    4. 自定义元数据下,添加以下元数据条目:

      键:osconfig-disabled-features
      值:FEATURE1,FEATURE2

      例如:
      键:osconfig-disabled-features
      值:osinventory

    5. 点击保存以将更改应用于虚拟机。

gcloud

使用 project-info add-metadata 或带有 --metadata=osconfig-disabled-features 标志的 instances add-metadata gcloud 命令

如果您要停用多项功能,则标志的格式必须为 --metadata=osconfig-disabled-features=FEATURE1,FEATURE2。请参阅示例 2。

示例

示例 1 如需使用 Google Cloud CLI 在 Google Cloud 项目级层停用补丁,请运行以下命令:

gcloud compute project-info add-metadata \
    --project PROJECT_ID \
    --metadata=osconfig-disabled-features=tasks

示例 2 如需使用 Google Cloud CLI 在项目级层停用操作系统政策和 OS Inventory Management,请运行以下命令:

gcloud compute project-info add-metadata \
    --project PROJECT_ID \
    --metadata=osconfig-disabled-features=osinventory,guestpolicies

PROJECT_ID 替换为您的项目 ID。

REST

您可以在 Google Cloud 项目级层或实例级层设置元数据值。

必须在元数据属性中设置以下键值对:

  • 键:osconfig-disabled-features
  • 值:可以是以下任一标志或这些标志的组合:
    • osinventory
    • tasks
    • guestpolicies

活跃 OS Config 代理的要求

要想使 OS Config 代理被视为活跃并且可计费,它必须满足以下所有要求:

  • 必须设置虚拟机管理器。
  • 虚拟机必须处于 RUNNING 状态,并且 OS Config 代理必须正在与 OS Config 服务通信。

    如果虚拟机停止、暂停或断开与网络的连接,则该虚拟机上的代理不会被视为活跃代理。

验证设置

完成设置过程后,您可以验证设置

启用完整的虚拟机管理器功能

如果您的项目中未启用虚拟机管理器,并且您在创建虚拟机期间安装 Ops Agent,则会在受限模式下启用虚拟机管理器。在此模式下,虚拟机管理器会免费提供一部分功能,虚拟机数量不受限制。例如,您可以在操作系统政策页面上查看虚拟机的操作系统政策分配,但无法创建或修改操作系统政策分配。

如需为安装了 Ops Agent 的虚拟机启用所有虚拟机管理器功能,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到操作系统政策页面。

    转到“操作系统政策”

  2. 点击启用完整的虚拟机管理器功能以启用所有虚拟机管理器功能。

    自动启用完整的虚拟机管理器

停用 OS Config 代理

停用 OS Config 代理不会影响虚拟机的行为。您可以按照与停止操作系统的其他服务相同的方式停用此代理。

Linux

如需使用 systemctl 停用代理,请运行以下命令:

sudo systemctl stop google-osconfig-agent
sudo systemctl disable google-osconfig-agent

Windows

如需使用 powershell 停用代理,请运行以下命令:

PowerShell Stop-Service google_osconfig_agent [-StartupType disabled]

后续步骤