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