【问题标题】:How can I add a PPA repository using Ansible?如何使用 Ansible 添加 PPA 存储库?
【发布时间】:2015-03-28 16:43:20
【问题描述】:

我正在尝试向服务器添加一个新存储库,以便我可以通过 Ansible 安装 Java。不幸的是,每当我尝试运行剧本时,它都会因为 GPG 错误而失败。有人可以解释这里出了什么问题以及我需要做什么来解决这个问题吗?

我使用的是 Ansible 1.7.2,目前只连接到 localhost。

我有一个非常简单的剧本,如下所示:

- hosts: home
  tasks:
   - name: Add repositories
     apt_repository: repo='ppa:webupd8team/java' state=present

当我尝试执行它时,我收到以下错误:

sal@bobnit:~/Workspace$ ansible-playbook --ask-sudo-pass basic.yml 
sudo password: 

PLAY [home] ******************************************************************* 

GATHERING FACTS *************************************************************** 
ok: [localhost]

TASK: [Add repositories] ****************************************************** 
failed: [localhost] => {"cmd": "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 7B2C3B0889BF5709A105D03AC2518248EEA14886", "failed": true, "rc": 2}
stderr: gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com
gpg: no writable keyring found: eof
gpg: error reading `[stream]': general error
gpg: Total number processed: 0

stdout: Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.HKDOSZnVQP --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d/steam.gpg --keyring /etc/apt/trusted.gpg.d/ubuntu-x-swat_ubuntu_x-updates.gpg --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 7B2C3B0889BF5709A105D03AC2518248EEA14886

msg: gpg: requesting key EEA14886 from hkp server keyserver.ubuntu.com
gpg: no writable keyring found: eof
gpg: error reading `[stream]': general error
gpg: Total number processed: 0

FATAL: all hosts have already failed -- aborting

PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/sal/basic.retry

localhost                  : ok=1    changed=0    unreachable=0    failed=1   

【问题讨论】:

  • 你找到了答案,所以一些提示:apt_repository 很棒,使用apt_key 也是一个好主意。如果您之后从该存储库安装,请在 apt_repository 参数中使用 update_cache=yes
  • 感谢您的提示!

标签: linux ubuntu ansible


【解决方案1】:

使用选项validate_certsno

  - name: Adicionando PPA do php 7.1
    apt_repository:
      validate_certs: no
      repo: 'ppa:ondrej/php'
      state: present

【讨论】:

    【解决方案2】:

    哦,这似乎完全是因为我忘记了-s 选项!

    没有这个就没有使用sudo

    【讨论】:

    • 你在哪里添加了'-s'选项?
    • 在我的剧本中,我在任务本身中使用sudo: yes
    • 只是对未来 Ansible 版本的说明 - 如果 sudo: yes 不适合您,请尝试 become : yes
    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 2018-03-09
    相关资源
    最近更新 更多