Cloud-init/cloud-config для установки node.js

После прочтения документации Cloud-init (https://cloudinit.readthedocs.io/en/latest/topics/modules.html#apt-configure) выяснилось, что эти пользовательские данные должны добавить источник Nodesource и ключ для apt, и установите Node v18:

      apt:
  sources:
    nodejs:
      source: deb https://deb.nodesource.com/node_18.x $RELEASE main
      keyserver: https://deb.nodesource.com/gpgkey/nodesource.gpg.key
packages:
  - nodejs

URL-адреса действительно ссылаются на пакет и ключ. Однако Cloud-init добавляет файл .list в /etc/apt/sources.list.d/, не добавляет файл ключей в /usr/share/keyrings/ и жалуется, что

      W: GPG error: https://deb.nodesource.com/node_18.x jammy InRelease: The following signatures couldn't be verified because the public 
key is not available: NO_PUBKEY 1655A0AB68576280
E: The repository 'https://deb.nodesource.com/node_18.x jammy InRelease' is not signed.

и не устанавливает Node.

При установке Node путем написания файла списка apt ссылка на пакет выглядит следующим образом:

      deb [signed-by=/usr/share/keyrings/nodejs.gpg] https://deb.nodesource.com/node_18.x jammy main

Я мог бы поставить что-то подобное наsource:строку, но на какое имя ключевого файла я бы ссылался?

1 ответ

Оказывается, вам нужен идентификатор ключа. Вы можете извлечь его, используя

      wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --with-fingerprint --with-colons | awk -F: '/^fpr/ { print $10 }

или из журнала, если есть более ранний сбой, посмотреть.

Ключ nodesource находится на сервере ключей Ubuntu, поэтомуaptна самом деле вам не нужно указывать сервер ключей:

      # gpg --keyserver=keyserver.ubuntu.com --recv-keys 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280
gpg: key 1655A0AB68576280: public key "NodeSource <gpg@nodesource.com>" imported
      apt:
  sources:
    nodejs:
      source: deb [signed-by=$KEY_FILE] https://deb.nodesource.com/node_18.x $RELEASE main
#      keyserver: https://deb.nodesource.com/gpgkey/nodesource.gpg.key
      keyid: 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280
packages:

  - nodejs
Другие вопросы по тегам