【问题标题】:GCP deployment manager configuration "failed to parse YAML" error with yaml file stored in gcp cloud store bucket存储在 gcp 云存储桶中的 yaml 文件的 GCP 部署管理器配置“无法解析 YAML”错误
【发布时间】:2019-09-23 17:04:26
【问题描述】:

我正在使用 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?错误消息看起来像是您使用了文档编辑器,它会格式化文本以供显示。

标签: deployment google-cloud-platform yaml google-cloud-storage


【解决方案1】:

您的 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

  1. 使用 gsutil builder 将您的文件导入 Cloud Build 环境
  2. 使用gcloud builber 运行部署管理器

Cloud Build 有权限访问您项目的存储桶。

【讨论】:

  • YAML 格式问题在我的帖子中。我更正了帖子:-)。关于使用“云构建”的建议有帮助。谢谢@guillaume
【解决方案2】:

感谢@guillaume 的评论,我找到了失败的确切原因 当我从云外壳执行“wget”到从云存储获取的“链接”URL 时,我没有得到 YAML 本身,但我得到了一个重定向链接,我认为浏览器会遵循该重定向链接,但部署管理器命令行没有。它尝试将服务器响应解释为 YAML 并引发错误。请参阅下面的 wget 响应
所以现在我知道了原因——我想我得出的结论是,使用 gcp 存储桶为部署管理器存储 yaml 是一个坏主意。

简单的解决方案。 - 在 gcp 命令行工具中编辑您的 yaml 文件,或直接将它们上传到您的 shell 并在本地使用。

为了大家的利益,我在问题中编辑了我的 YAML。现在那里的东西现在完全有效:-)

wget https://storage.cloud.google.com/mybucket/myyaml.yaml
--2019-09-24 12:15:23--  
https://storage.cloud.google.com/mybucket/myyaml
Resolving storage.cloud.google.com 
(storage.cloud.google.com)...    
Connecting to storage.cloud.google.com 
(storage.cloud.google.com)| :443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://accounts.google.com/ServiceLogin? service=cds&passive=1209600&continue=https://storage.cloud.google .com/mybucket/myyaml.yaml&followup=https://storage.cloud.google.com/dmybucket/myyaml.yaml [following]
--2019-09-24 12:15:23--  
https://accounts.google.com/ServiceLogin?service=cds&passive=1209600&continue=https://storage.cloud.google.com/mybucket/myyaml.yaml&followup=https://storage.cloud.google.com/dmybucket/myyaml.yaml
Resolving accounts.google.com (accounts.google.com)...
Connecting to accounts.google.com 
(accounts.google.com) ... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘myyaml.yaml’

myyaml.yaml [ <=>                            ]  xx.xxK  --.-KB/s    in 0.0xxs

【讨论】:

    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2019-07-26
    • 2021-01-23
    • 1970-01-01
    • 2021-01-11
    • 2022-06-10
    相关资源
    最近更新 更多