From 46ff429bf0752932bab17d42a0b46ddfd8285c5e Mon Sep 17 00:00:00 2001 From: Adam King Date: Thu, 10 Jun 2021 15:16:15 -0400 Subject: [PATCH] cephadm: use gpg key for add-repo on ubuntu/debian We were using the ascii version of the gpg key which was marked as an unsupported filetype by apt-get which caused apt-get to not make use of the repo source we were adding. Additionally, added aomething to make sure we update the package list after adding the source and key Fixes: https://tracker.ceph.com/issues/44972 Fixes: https://tracker.ceph.com/issues/45009 Signed-off-by: Adam King (cherry picked from commit 54055381fd61d290bf3b44ec01e7d4f3a0eb5f1c) --- src/cephadm/cephadm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index c6f1efc4a32eb..bd69ba73c3e1d 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -5769,9 +5769,9 @@ class Packager(object): if self.ctx.gpg_url: return self.ctx.gpg_url if self.stable or self.version: - return 'https://download.ceph.com/keys/release.asc', 'release' + return 'https://download.ceph.com/keys/release.gpg', 'release' else: - return 'https://download.ceph.com/keys/autobuild.asc', 'autobuild' + return 'https://download.ceph.com/keys/autobuild.gpg', 'autobuild' def enable_service(self, service): """ @@ -5809,8 +5809,8 @@ class Apt(Packager): logger.error('failed to fetch GPG repo key from %s: %s' % ( url, err)) raise Error('failed to fetch GPG key') - key = response.read().decode('utf-8') - with open('/etc/apt/trusted.gpg.d/ceph.%s.gpg' % name, 'w') as f: + key = response.read() + with open('/etc/apt/trusted.gpg.d/ceph.%s.gpg' % name, 'wb') as f: f.write(key) if self.version: @@ -5827,6 +5827,8 @@ class Apt(Packager): with open(self.repo_path(), 'w') as f: f.write(content) + self.update() + def rm_repo(self): for name in ['autobuild', 'release']: p = '/etc/apt/trusted.gpg.d/ceph.%s.gpg' % name @@ -5844,11 +5846,15 @@ class Apt(Packager): logger.info('Installing packages %s...' % ls) call_throws(self.ctx, ['apt-get', 'install', '-y'] + ls) + def update(self): + logger.info('Updating package list...') + call_throws(self.ctx, ['apt-get', 'update']) + def install_podman(self): if self.distro == 'ubuntu': logger.info('Setting up repo for podman...') self.add_kubic_repo() - call_throws(self.ctx, ['apt-get', 'update']) + self.update() logger.info('Attempting podman install...') try: @@ -6160,12 +6166,16 @@ def command_add_repo(ctx: CephadmContext): (x, y, z) = ctx.version.split('.') except Exception: raise Error('version must be in the form x.y.z (e.g., 15.2.0)') + if ctx.release: + # Pacific =/= pacific in this case, set to undercase to avoid confision + ctx.release = ctx.release.lower() pkg = create_packager(ctx, stable=ctx.release, version=ctx.version, branch=ctx.dev, commit=ctx.dev_commit) pkg.add_repo() + logger.info('Completed adding repo.') def command_rm_repo(ctx: CephadmContext): @@ -8195,7 +8205,7 @@ def main(): # podman or docker? ctx.container_engine = find_container_engine(ctx) if ctx.func not in \ - [command_check_host, command_prepare_host, command_add_repo]: + [command_check_host, command_prepare_host, command_add_repo, command_install]: check_container_engine(ctx) # command handler r = ctx.func(ctx) -- 2.39.5