相关疑难解决方法(0)

如何将环境变量传递给buildspec.yml以进行AWS Codebuild

我的gatsby站点根目录中的buildspec.yml文件中有以下命令。

version: 0.2

phases:
  install:
    commands:
      - npm i npm@latest -g
      - npm install --global gatsby-cli
      - npm install
      - pip install --upgrade pip
      - pip install --upgrade awscli
  build:
    commands:
      - gatsby build
  post_build:
    commands:
      - aws s3 sync public/ s3://stagging
Run Code Online (Sandbox Code Playgroud)

我有2个环境,即停滞和生产。有没有一种方法可以使我的同步命令自动化,以便在执行代码构建时使用某种变量来更改环境。也许我可以通过命令行传递环境名称。

amazon-s3 amazon-web-services gatsby aws-codebuild

6
推荐指数
3
解决办法
7834
查看次数

Ansible和Playbook.如何将shell命令转换为yaml语法?

我是Ansible的新手,我不明白所有人如何在Ansible/YAML语法中轻松编写shell命令.可能是我错过了解释得很好的文档页面.

例如:playbook.yml如果我想在远程计算机中执行这些命令,我需要写入什么内容:

sudo apt-get install software-properties-common
sudo apt-key adv –recv-keys –keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mariadb.biz.net.id//repo/5.5/ubuntu precise main'
Run Code Online (Sandbox Code Playgroud)

我想会是这样的:

- name: install mariadb
  apt: ...
  sudo: yes
Run Code Online (Sandbox Code Playgroud)

syntax ubuntu yaml vagrant ansible

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

从 bash 中的 YAML 文件解析嵌套变量

此链接中的复杂.yaml文件需要输入到 bash 脚本中,该脚本作为在 Amazon Linux 2 的 EC2 实例上运行的自动化程序的一部分运行。请注意,上面链接中的文件包含许多对象,我需要提取这些对象在文件中定义的众多对象之一中定义的环境变量之一。 .yaml

具体来说,如何192.168.0.0/16CALICO_IPV4POOL_CIDR变量的值提取到 bash 变量中?

        - name: CALICO_IPV4POOL_CIDR
          value: "192.168.0.0/16"
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多关于解析更扁平、更简单的.yaml文件的其他帖子和博客条目,但这些其他示例都没有显示如何提取像这个问题中的valueofCALICO_IPV4POOL_CIDR这样的嵌套值。

bash yaml kubernetes

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

以编程方式应用多资源 Kubernetes YAML 文件中的单个资源

我有一个包含三个配置映射的文件,如下所示。

apiVersion: v1
data:
  TEST: "one"
kind: ConfigMap
metadata:
  name: test-config-one
---
apiVersion: v1
data:
  TEST: "two"
kind: ConfigMap
metadata:
  name: test-config-two
---
apiVersion: v1
data:
  TEST: "three"
kind: ConfigMap
metadata:
  name: test-config-three
Run Code Online (Sandbox Code Playgroud)

我试图仅应用于test-config-three集群。我知道我可以将其分解成自己的文件并运行kubectl apply -f test-config-three.yaml,但是有没有办法做到这一点而无需创建新文件?

我希望能够做类似的事情:

cat file.yml | yq <get only test-config-three> | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

yq似乎不支持在文件中查找单个资源。我还研究了kubesplit等工具,但它们倾向于将所有资源输出到单独的文件中。

有没有一种方法可以从包含多个资源的 yaml 文件中隔离并输出单个资源,而无需创建新文件?

更新

感谢@Inian 下面的回答,我能够让这个完整的命令正常工作。

cat file.yml | yq e 'select(.data.TEST == "three")' - | kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes kubectl yq

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

如何使用 bash 读取 yaml 或 env 文件

我有一个.yml文件,其内容如下:

env_values:
 stage: build
 before_script: some-value 
Run Code Online (Sandbox Code Playgroud)

stage所以我需要读取并获取和 的值before_script,因此它们将分别具有buildsome-value

bash 脚本中有一个很好的简单解决方法来读取此文件并获取值吗?

bash yaml

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

如何在bash中将json响应转换为yaml

我用jq从json文件中读取数据。我想将结果附加到yaml文件中,但无法正常工作。我对Shell编程很陌生。我的目标是在yaml文件中将“用户”附加到现有的“用户” -Array中。

这是我的json文件:

#$DEFAULTS_FILE

{"users":
  [
    {"name":"pi",
      "gecos": "Hypriot Pirate",
      "sudo":"ALL=(ALL) NOPASSWD:ALL",
      "shell": "/bin/bash",
      "groups":"users,docker,video",
      "plain_text_passwd":"pi",
      "lock_passwd":"false",
      "ssh_pwauth":"true",
      "chpasswd": {"expire": false}
    },
    {"name":"admin",
      "gecos": "Hypriot Pirate",
      "sudo":"ALL=(ALL) NOPASSWD:ALL",
      "shell": "/bin/bash",
      "primary-group": "users",
      "groups":"users,docker,adm,dialout,audio,plugdev,netdev,video",
      "ssh-import-id":"None",
      "plain_text_passwd":"pi",
      "lock_passwd":"true",
      "ssh_pwauth":"true",
      "chpasswd": "{expire: false}",
      "ssh-authorized-keys": ["ssh-rsa abcdefg1234567890 YOUR_KEY@YOURHOST.local"]
    }
  ]
  }
Run Code Online (Sandbox Code Playgroud)

我用它过滤:

cat $DEFAULTS_FILE | jq .users

我不知道如何将json转换为Yaml。

我的预期结果应该是:

users:
  - name:                pi
    gecos:               "Hypriot Pirate"
    sudo:                ALL=(ALL) NOPASSWD:ALL
    shell:               /bin/bash
    groups:              users,docker,video
    plain_text_passwd:   pi
    lock_passwd:         false
    ssh_pwauth:          true
    chpasswd: { expire:  false } …
Run Code Online (Sandbox Code Playgroud)

bash shell json yaml jq

4
推荐指数
7
解决办法
4354
查看次数

使用 shell 遍历 yaml

我有一个 config_file.yml 文件:

sample:
    sql: "select * from dbname.tableName where sampleDate>='2018-07-20';"
    config: {'hosts': [!!python/tuple ['192.162.0.10', 3001]]}

sample2:
    sql: "select * from dbname.tableName where sampleDate<='2016-05-25';"
    config: {'hosts': [!!python/tuple ['190.160.0.10', 3002]]}
Run Code Online (Sandbox Code Playgroud)

我想使用 shell 脚本遍历它的键值对直到 EOF。基本上我希望能够遍历每个 sql 直到 EOF,并在 shell 循环中执行每个 sql。

尝试查看大量文档,但他们没有足够的信息如何使用 shell 循环遍历 yaml。

任何想法或例子都会非常有帮助......

谢谢!

编辑:

我已经在使用 ->

parse_yaml() {
local prefix=$2
local s='[[:space:]]*' w='[a-zA-Z0-9_]*' fs=$(echo @|tr @ '\034')
sed -ne "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" -e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $1 |
awk -F$fs '{
  indent = length($1)/2;
  vname[indent] = $2;
  for (i in vname) { …
Run Code Online (Sandbox Code Playgroud)

bash shell yaml loops

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