우리는 YAML 구성 파일을 포함하는 워크플로를 구현하고 이를 실제로 사용하기 전에 몇 가지 사항을 변경하고 이를 수행할 수 있는 좋은 명령줄 도구를 찾고 있습니다.
이는 기존 노드에 대상별 값(예: URL)을 설정하는 것만큼 간단할 수 있지만 YAML 파일의 전체 블록을 추가하거나 수정할 수 있으면 좋을 것입니다. 완벽한 세상에서 나는 XSLT의 축만큼 강력한 것을 원합니다.
우리는 이것을 Docker 파일의 Maven과 함께 사용할 것입니다. 우리는 Debian 기반 이미지를 선호하지만 꼭 필요한 것은 아닙니다.
답변1
마이크 파라yq
YAML 작업을 위해 제가 즐겨 사용하는 도구입니다. 예를 들어 Kubernetes 네임스페이스 정의 파일을 사용하면 다음과 같습니다.
네임스페이스 이름 추출:
yq read deploy/namespace.yaml metadata.name
태그 추가:
yq write deploy/namespace.yaml metadata.labels.name demo
(이렇게 하면 기존 노드가 대체되거나 아직 노드가 없는 경우 새 노드가 추가됩니다.)
이 -i
옵션을 사용하면 파일을 현재 위치에서 업데이트할 수 있습니다.
XSLT 도구가 일반적으로 수행할 수 있는 모든 작업을 찾을 수는 없습니다(또는jq
예를 들어 JSON의 경우 하위 표현식에 대한 테스트를 찾을 수 없으므로 (내가 아는 한) "이 값의 다른 하위 노드가 있는 노드에서 이 하위 노드 업데이트"에 해당하는 것을 작성할 수 없습니다.
답변2
안드레이 키슬류크yq
(이것은 yq
다음과 같다.스티븐이 언급한 것)은 잘 알려진 JSON 프로세서용 Python 래퍼입니다 jq
.
에 대한 래퍼이므로 일반적으로 JSON 파일에서 수행하는 모든 처리를 YAML 파일에서 jq
수행할 수 있습니다 . jq
또한 파일을 제자리에서 편집하는 기능도 추가됩니다.
이 yq
유틸리티는 JSON, TOML 및 XML을 출력할 수도 있습니다. 설치하면 다른 유형의 구조화된 문서 형식( 각각 TOML 및 XML ) yq
작업을 위한 추가 명령줄 도구를 얻을 수 있습니다 .tomlq
xq
이 yq
유틸리티 yq
는 OpenBSD, FreeBSD 및 NetBSD에서는 패키지로, macOS에서는 Homebrew 패키지로 사용 가능합니다 python-yq
. GNU 시스템에서는 ( 또는 그 변형)을 yq
사용하여 설치할 수 있습니다. Andre's도 참조하세요.pip3
pip3 install yq
설치 참고 사항을 위한 yq
.