通过ansible将postgresql存储库添加到ubuntu 22.04失败

9njqaruj  于 2022-12-11  发布在  PostgreSQL
关注(0)|答案(1)|浏览(186)

从以下2个任务

- name: Add key for Postgres repo
  apt_key: 
    url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
    state: present
  become: true

- name: Add Postgres repo to sources list
  apt_repository:
    repo: 'deb http://apt.postgresql.org/pub/repos/apt/ ubuntu-pgdg main'
    state: present
  become: true

第二个失败如下:

TASK [common : Add Postgres repo to sources list] ******************************
fatal: [master-node]: FAILED! => {"changed": false, "msg": "apt cache update failed"}

为什么呢,既然我是要去做的?

xiozqbni

xiozqbni1#

列表文件中apt存储库的第三个字段应该是发行版的代号,而不是发行版本身:

sources.list手册页指定了以下软件包源代码格式:

deb uri distribution [component1] [component2] [...]

并举例说明:

deb https://deb.debian.org/debian stable main contrib non-free

distribution部分(在本例中为 stable)指定**$ARCHIVE_ROOT/dists中的子目录。它可以包含其他斜杠以指定嵌套更深的子目录,例如 stable/updatesdistribution通常对应于Release文件中指定的SuiteCodename**。

  • 来源:https://wiki.debian.org/DebianRepository/Format#Overview*
  • Release* 文件示例,包含以下代码名称:
$ head -n 5 /etc/os-release 
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy

如果不想硬编码,可以使用Ansible facts轻松实现:

- name: Add Postgres repo to sources list
  apt_repository:
    repo: >-
      deb http://apt.postgresql.org/pub/repos/apt/ 
      {{ ansible_distribution_release }}-pgdg main
    state: present
  become: true

这就预先假定你至少收集了最少的事实,例如:

- hosts: localhost
  gather_subset:
    - min

或者说你收集了一切,即:你没有gather_facts: false,在游戏层面上。

相关问题