YAML 파일을 조작하기 위한 도구?

YAML 파일을 조작하기 위한 도구?

우리는 YAML 구성 파일을 포함하는 워크플로를 구현하고 이를 실제로 사용하기 전에 몇 가지 사항을 변경하고 이를 수행할 수 있는 좋은 명령줄 도구를 찾고 있습니다.

이는 기존 노드에 대상별 값(예: URL)을 설정하는 것만큼 간단할 수 있지만 YAML 파일의 전체 블록을 추가하거나 수정할 수 있으면 좋을 것입니다. 완벽한 세상에서 나는 XSLT의 축만큼 강력한 것을 원합니다.

우리는 이것을 Docker 파일의 Maven과 함께 사용할 것입니다. 우리는 Debian 기반 이미지를 선호하지만 꼭 필요한 것은 아닙니다.

답변1

마이크 파라yqYAML 작업을 위해 제가 즐겨 사용하는 도구입니다. 예를 들어 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작업을 위한 추가 명령줄 도구를 얻을 수 있습니다 .tomlqxq

yq유틸리티 yq는 OpenBSD, FreeBSD 및 NetBSD에서는 패키지로, macOS에서는 Homebrew 패키지로 사용 가능합니다 python-yq. GNU 시스템에서는 ( 또는 그 변형)을 yq사용하여 설치할 수 있습니다. Andre's도 참조하세요.pip3pip3 install yq설치 참고 사항을 위한 yq.

관련 정보