sh #salt #reclass parser - 作为yaml文件的jq,用于遍历#Salt reclass和find / grep tree paterns中的所有路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh #salt #reclass parser - 作为yaml文件的jq,用于遍历#Salt reclass和find / grep tree paterns中的所有路径相关的知识,希望对你有一定的参考价值。

#!/bin/bash
# tl;dr
# yaml-grep; to extract partial branches based on the 'jq' regex pattern.

# install:
# wget https://gist.githubusercontent.com/epcim/f1c5b748fa7c942de50677aef04f29f8/raw/yg.sh -O yg; chmod +x yg

# usage:
# ./yg '.compute?.network'
#
# classes/system/nova/compute/cluster.yml
# {"engine":"neutron","host":"${_param:network_vip_address}","user":"neutron","password":"${_param:keystone_neutron_password}","port":9696,"tenant":"service"

PATTERN=$@
PATTERN=${PATTERN:-.parameters}

export GOPATH=${GOPATH:-$HOME/go}
export PATH=$PATH:$GOPATH/bin

# with pure python yq (much slower)
# sudo pip install git+git://github.com/kyle-long/yq.git@master
# for i in $(find . -name "*.yml"); do echo $i; cat $i | yq -ec "..|${PATTERN}| select(.!=null)" || printf '\e[A\e[K'; done

# with go yaml2json
if [ command -v yaml2json &>/dev/null ]; then
  if [ command -v go ]; then
    go get github.com/bronze1man/yaml2json
    pushd $GOPATH/src/github.com/bronze1man/yaml2json
    go install
    popd
  else
    echo "First install github.com/bronze1man/yaml2json"
  fi
fi

for i in $(find . -name "*.yml"); do echo $i; cat $i | yaml2json | jq -e "..|${PATTERN}| select(.!=null)" || printf '\e[A\e[K'; done

以上是关于sh #salt #reclass parser - 作为yaml文件的jq,用于遍历#Salt reclass和find / grep tree paterns中的所有路径的主要内容,如果未能解决你的问题,请参考以下文章

sh 使用密钥创建一个新的salt.php文件

sh salt formula kitchen init脚本,适用于tcpcloud公式

sh byobu自动从salt-master接受键创建窗口

ruby reclass_tree.rb

sh apache_log_parser

ArcGIS实验教程——实验四十三:ArcGIS栅格重分类(Reclass)案例详解