deployment - 存储在 gcp 云存储桶中的 yaml 文件的 GCP 部署管理器配置“无法解析 YAML”错误
问题描述
我正在使用 GCP 部署管理器来部署 gcp 云存储桶。我的 YAML 文件上传到另一个现有的 gcp 云存储桶中,我在 gcp cloud shell 上运行以下命令以创建部署。我在命令中指定链接 url 以创建部署(见下文)
$gcloud config set project my-project-name
$gcloud deployment-manager deployments create bkt-deployer --config https://storage.cloud.google.com/mybucket/UCABkt-V4.yaml
我得到以下错误
Failed to parse YAML: mapping values are not allowed here
in "<unicode string>", line 11, column 14:
font-family: 'Open Sans';
^ (line: 11)
尽管指定了错误的存储桶名称,但我认为我得到了 YAML 解析错误,所以我怀疑这是由于 YAML 无法访问的问题。我尝试修复存储桶和单个 YAML 的权限,但无济于事。我仍然得到这个错误,在我看来这确实具有误导性。
虽然实际的 YAML 格式不相关,但仅供参考,我的 YAML 文件如下所示(参见代码块)
resources:
- name: deployment-manager-bucket-2
type: storage.v1.bucket
properties:
predefinedAcl: projectPrivate
projection: full
location: US
storageClass: STANDARD
lifecycle:
rule:
- action:
type: SetStorageClass storage_class = "NEARLINE"
condition:
age: 30
- action:
type: SetStorageClass storage_class = "COLDLINE"
condition:
age: 90
所以几个问题
1) 向部署管理器提供 YAML 配置的最佳方式是什么?将 yaml 配置文件上传到 gcp 对象存储桶,然后像我一样指定其链接 URL,这是一个最佳选择吗?或者是否有另一种方法可以将 YAML 路径提供给 gcp cloud shell 以进行部署创建?
2)假设最终我克服了指定部署路径的障碍,我的 YAML 并确保没有访问和权限问题,我的 YAML 语法看起来还好吗?尤其是在老化 30 天和 90 天时分别分配 Nearline 和 Coldline 存储类的生命周期规则规范
非常感谢您的帮助。
此致
约格什
解决方案
您的 YAML 文件接缝的开头已损坏:
resources:
- name: deployment-manager-bucket-2
type: storage.v1.bucket
properties:
类型和属性之前缺少空格。
然后,您在部署中遇到的问题是因为您的 yaml 文件不可访问。您在访问错误页面的 CSS 中遇到了“字体系列”问题。自己试试吧!curl -L https://storage.cloud.google.com/mybucket/UCABkt-V4.yaml
你应该得到
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=300, initial-scale=1" name="viewport">
<meta name="google-site-verification" content="LrdTUW9psUAMbh4Ia074-BPEVmcpBxF6Gwf0MSgQXZs">
<title>Sign in - Google Accounts</title>
<style>
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
...
因此,您必须使您的文件或存储桶可公开访问。不是很安全和专业。
我提出一个解决方案:使用Cloud Build。
- 使用
gsutil
builder 将您的文件放入 Cloud Build 环境 - 使用
gcloud
builder 运行部署管理器
Cloud Build 具有访问您项目的存储桶的权限。
推荐阅读
- android - 是否可以在 QEMU-AARCH64 上安装 Android 通用系统映像 (GSI)
- javascript - 如何使用 requirejs 正确实现 Cookiebot?
- python-3.x - 在诗歌中将依赖转移到 --dev
- laravel - 在我的本地环境中,env 值有时会在 laravel 5.8 中返回 null
- r - Brms:在序数回归中绘制三向交互
- javascript - 发送表单后将带逗号的更改字符串切割为不带逗号的字符串
- java - 使用 JDK11 从 2.2.2 升级后的 Spring boot 2.3.3 停止在 Apache HTTP/1.1 上使用 AJP
- php - Wordpress 自定义帖子类型正在重写所有其他帖子类型、页面和帖子的 URL
- node.js - 如何避免节点 child_process exec 中的命令注入
- javascript - 如何从 axios 获取重定向响应?