相关疑难解决方法(0)

在yaml中使用占位符

有没有办法在yaml中使用占位符,如下所示:

foo: &FOO
    <<propname>>: 
        type: number 
        default: <<default>>

bar:
    - *FOO 
       propname: "some_prop"
       default: "some default" 
Run Code Online (Sandbox Code Playgroud)

yaml indirection computed-properties template-variables

26
推荐指数
2
解决办法
6万
查看次数

如何在Ruby中的YAML文件中包含YAML文件

在YAML中是否有自定义标记,以便在YAML文件中包含YAML文件?

#E.g.:  
--- !include
filename: another.yml
Run Code Online (Sandbox Code Playgroud)

前一段时间问了一个类似的问题,没有相关的答案.

我想知道是否有是Ruby一些自定义标签类似这样一个为Python.

ruby yaml ruby-on-rails

17
推荐指数
3
解决办法
2万
查看次数

包含snakeyaml的YAML文件

我希望YAML文件包含一个include,类似于这个问题,但是使用Snakeyaml: 我如何在另一个文件中包含一个YAML文件?

例如:

%YAML 1.2
---
!include "load.yml"

!include "load2.yml"
Run Code Online (Sandbox Code Playgroud)

我遇到了很多麻烦.我定义了构造函数,我可以导入一个文档,但不能导入两个文档.我得到的错误是:

Exception in thread "main" expected '<document start>', but found Tag
 in 'reader', line 5, column 1:
    !include "load2.yml"
    ^
Run Code Online (Sandbox Code Playgroud)

有一个包含,Snakeyaml很高兴它找到了一个EOF并处理导入.有两个,它不开心(上图).

我的java源代码是:

package yaml;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.AbstractConstruct;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.Tag;

public class Main {
    final static Constructor constructor = new MyConstructor();

    private static class ImportConstruct extends AbstractConstruct {
        @Override
        public Object construct(Node node) {
            if (!(node …
Run Code Online (Sandbox Code Playgroud)

yaml snakeyaml

11
推荐指数
1
解决办法
2939
查看次数

YAML:添加外部文档的链接/引用

如何添加YAML指向例如另一个网站的文件的链接?描述字段没问题.

我阅读了YAML文档,但找不到"外部引用"的引用.

yaml

7
推荐指数
1
解决办法
8079
查看次数

GitLab 中的 Concat 变量名

我们在一个团队中使用 Gitlab 项目。每个开发人员在云端都有自己的 Kubernetes 集群,在 GitLab 中有自己的分支。我们使用 GitLab-CI 自动构建新容器并将它们部署到我们的 Kubernetes 集群。

目前我们有一个.gitlab-ci.yml看起来像这样的东西:

variables:
    USERNAME: USERNAME
    CI_K8S_PROJECT: ${USERNAME_CI_K8S_PROJECT}
    REGISTRY_JSON_KEY_FILE: ${USERNAME_REGISTRY_JSON_KEY_FILE}
    [...]

stages:
  - build
  - deploy
  - remove

build-zeppelin:
  stage: build
  image: docker:latest
  variables:
    image_name: "zeppelin"
  only:
    - ${USERNAME}@Gitlab-Repo
  tags:
    - cloudrunner
  script:
    - docker login -u _json_key -p "${REGISTRY_JSON_KEY_FILE?}" https://eu.gcr.io
    - image_name_fqdn="eu.gcr.io/${CI_K8S_PROJECT?}/${image_name?}:latest"
    - docker build -t ${image_name_fqdn?} .
    - docker push ${image_name_fqdn?} 
    - echo "Your new image is '${image_name_fqdn?}'. Have fun!"

[...]
Run Code Online (Sandbox Code Playgroud)

因此,一开始我们通过使用 USERNAME 前缀来引用重要信息。这工作得很好,但有问题,因为我们需要在来自另一个用户的每个拉取请求之后更正它们。

因此,我们寻找一种方法来使 gitlab-ci 文件对每个开发人员都相同,同时仍然引用一些针对每个开发人员不同的 …

yaml gitlab-ci

7
推荐指数
1
解决办法
1万
查看次数

Ansible 清单可以包含另一个清单吗?

我们有一组在应用程序的不同实例之间共享的服务器,并且希望它们的列表成为一个单独的文件,以及其他特定于实例的清单(包括它)。

(我知道,这可以通过动态库存来完成,但可以这么说,这些都是代码,我们希望我们的服务器列表保留数据。)

对于 INI 库存,这是不可能的,但对于 YAML 来说,这是非常接近的。例如,这个答案显示了如何通过!include向 Python 的 YAML 解析器添加处理程序来完成此操作。然后我们可以这样写:

all:
  group1:
    host1:
    host2:
  sharedservers: !include shared-servers.yaml
Run Code Online (Sandbox Code Playgroud)

如何将此功能添加到自己的 Ansible 存储库中——最好不要实现全新的库存插件(尽管从 Ansible 的现有插件继承也可以)?

yaml include ansible ansible-inventory

7
推荐指数
2
解决办法
1万
查看次数

将一个 Yaml 文件包含在另一个文件中

我想要一个基本配置文件,其他配置文件使用它来共享通用配置。

例如,如果我有一个base.yml文件

foo: 1

bar:
  - 2
  - 3
Run Code Online (Sandbox Code Playgroud)

然后是第二个some_file.yml文件

foo: 2

baz: "baz"
Run Code Online (Sandbox Code Playgroud)

我希望最终得到一个合并的配置文件

foo: 2

bar:
  - 2
  - 3

baz: "baz"
Run Code Online (Sandbox Code Playgroud)

编写处理标签的自定义加载器很容易!include

class ConfigLoader(yaml.SafeLoader):

    def __init__(self, stream):
        super().__init__(stream)
        self._base = Path(stream.name).parent

    def include(self, node):
        file_name = self.construct_scalar(node)
        file_path = self._base.joinpath(file_name)

        with file_path.open("rt") as fh:
            return yaml.load(fh, IncludeLoader)
Run Code Online (Sandbox Code Playgroud)

然后我可以解析一个!include标签。所以如果我的文件是

inherit:
   !include base.yml

foo: 2

baz: "baz"
Run Code Online (Sandbox Code Playgroud)

但现在基本配置是一个映射。即如果我加载文件我最终会得到

foo: 1

bar:
  - 2
  - 3
Run Code Online (Sandbox Code Playgroud)

但是如果我不将标签作为映射的一部分,例如

!include base.yml

foo: 2

baz: …
Run Code Online (Sandbox Code Playgroud)

python yaml config pyyaml ruamel.yaml

5
推荐指数
1
解决办法
1万
查看次数

这是有效的YAML吗?

因此,对于我在C#问题中解析文本,我得到了YAML的指导.我正在推荐这个图书馆的墙,所以这是一个快速的.

heading:
 name: A name
 taco: Yes
 age: 32

heading:
 name: Another name
 taco: No
 age: 27
Run Code Online (Sandbox Code Playgroud)

等等.这有效吗?

validation yaml well-formed

4
推荐指数
1
解决办法
3387
查看次数

Spring Boot&Liquibase示例

Spring Boot和MySQL在这里.试图让我的Spring Boot应用程序使用Liquibase进行数据库迁移,并在文档中看到Spring Boot 内置了对Liquibase的支持.

但是在阅读完这些文档之后,我还有几个相关的问题:

  • db/changelog/db.changelog-master.yaml文件的基本目的是什么?是存储Liquibase配置(指示Liquibase的行为),还是我应该将实际的顺序SQL更改(" 迁移 ")本身放在哪里?
    • 理想情况下,我希望有一个src/main/resources/migrations目录并将我的迁移更改存储为单独的SQL文件,如下所示:
    • src/main/resources/migrations/001-schema.sql
    • src/main/resources/migrations/002-init.sql
    • src/main/resources/migrations/003-changing-account-types.sql
    • ...等等.是否可以通过Spring Boot配置Liquibase来实现这一目的?
  • Spring Boot什么时候运行这些Liquibase迁移?在app启动时?如果Spring Boot应用程序实际上在节点集群上运行(比如负载平衡URL后面的5个节点),该怎么办?将Spring Boot运行Liquibase运行5次,每个节点运行一次吗?或者它是否意识到一个节点是" 主迁移者 "等?

database-migration liquibase spring-boot

3
推荐指数
1
解决办法
5114
查看次数

使用 kubectl 命令在 YAML 中使用环境变量

如何在 YAML 文件中使用环境变量?

我正在使用 kubectl 创建一个命名空间,并想知道如何使用变量而不是testnamespacename: $var

apiVersion: v1
kind: Namespace
metadata:
  name: testnamespace
spec:
  finalizers:
  - kubernetes
Run Code Online (Sandbox Code Playgroud)

kubectl

3
推荐指数
1
解决办法
5860
查看次数

如何扩展 go-yaml 以支持自定义标签

我花了一些时间阅读go-yaml的代码和文档,但除了分叉项目之外,我还没有找到任何方法来做到这一点。

我想扩展 YAML 解组器,以便它可以接受自定义 YAML 标记(!include <file>在本例中),这反过来又允许我添加对包含文件的支持。这可以使用其他 YAML 库轻松实现,就像这个答案中一样。

有没有办法使用库(或另一个 yaml 库)的公共接口来完成此任务?

yaml go

3
推荐指数
1
解决办法
2548
查看次数