yqを使用してyamlでDNSサーバーを変更するには?

yqを使用してyamlでDNSサーバーを変更するには?

これは私のyamlファイルです。

network:
  ethernets:
    ens160:
      addresses:
      - 10.200.2.148/22
      gateway4: 10.200.0.1
      nameservers:
        addresses:
        - 1.1.1.1
        - 2.2.2.2
        - 3.3.3.3
        - 4.4.4.4
        search:
        - our.domain

ens160の下のすべてのDNSアドレスを2つの特定のアドレスに置き換える必要があります。これを試してください:

yq write -i /etc/netplan/00-installer-config.yaml  '.network.ethernets.ens160.nameservers.addresses' ['10.10.10.53','10.10.10.54']

しかし、これが行うことは、すべてのリスト項目を次のリストに転送することだけです。

network:
  ethernets:
    ens160:
      addresses:
        - 10.200.2.148/22
      gateway4: 10.200.0.1
      nameservers:
        addresses:
          - 1.1.1.1
          - 2.2.2.2
          - 3.3.3.3
          - 4.4.4.4
        search:
          - our.domain

私はそれをしたくありません。次のように出力が必要です。

network:
  ethernets:
    ens160:
      addresses:
      - 10.200.2.148/22
      gateway4: 10.200.0.1
      nameservers:
        addresses:
        - 10.10.10.53
        - 10.10.10.54
        search:
        - our.domain

どうすればいいかわからないyq。どうすればいいですか?

ベストアンサー1

何らかの理由で、aptリポジトリからそのバージョンを取得できません。

最後に、最新バージョンをインストールし、このコマンドを使用すると機能します。

yq -i '.network.ethernets.ens160.nameservers.addresses = ["10.10.10.53","10.10.10.54"]' /etc/netplan/00-installer-config.yaml

おすすめ記事