Ansible 抛出“无法更新 apt 缓存:W:无法安全地从此类存储库更新”错误

2023-12-13

我对 Ansible 非常陌生,我正在尝试在 EC2 实例(Ubuntu 18.04)上安装 kubectl 来上课。

我已经运行了剧本,一切进展顺利,直到遇到任务 4,然后抛出以下错误:

致命:[localhost]:失败! => {“changed”:false,“msg”:“无法更新 apt 缓存:W:无法安全地从此类存储库进行更新,因此默认禁用。, W:请参阅 apt-secure(8 ) 存储库创建和用户配置详细信息的联机帮助页。, W:GPG 错误:https://packages.cloud.google.com/aptkubernetes-xenial InRelease:由于公钥不可用,无法验证以下签名:NO_PUBKEY FEEA9169307EA071 NO_PUBKEY 8B57C5C2836F4BEB,E:存储库“https://apt.kubernetes.io kubernetes-xenial InRelease”未签名。 }

现在,每当我尝试再次运行任务 1 时,它都会引发相同的错误。有人可以建议我如何解决这个问题吗?

这是我写的剧本,它基于我完成的使用 Ansible 安装 Docker 的练习以及为我安装 kubectl 提供的命令:

- name: A playbook to install kubectl on a VM
  hosts: localhost
  user: ubuntu
  become: yes

  tasks:
  - name: 1. Update APT Package Manager
    apt:
      update_cache: yes

  - name: 2. Install dependency packages
    apt:
      name={{ item }}
    with_items:
      - apt-transport-https
      - ca-certificates
      - curl
      - gnupg-agent
      - software-properties-common

  - name: 3. Get APT Key
    shell:
      cmd: curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      cmd: echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

  - name: 4. Update Packages
    apt:
      update_cache: yes

  - name: 5. Install Kubectl
    apt:
      update_cache: yes
      name: kubectl


关于部分

- name: 3. Get APT Key
    shell:
      cmd: curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
      cmd: echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list

The shell_module只会执行第二个cmd。 Ansible 只能将其中一个参数传递给模块,即最后一个。

To 从 HTTPS 下载文件到节点你可以使用get_url_module,后面跟着一个apt_key_module 任务添加 apt 密钥.

- name: Download apt key
  get_url:
    url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
    dest: /tmp # or /etc/pki/rpm-gpg depending on the infrastructure

- name: Add a key from a file
  ansible.builtin.apt_key:
    file: /tmp/apt-key.gpg
    state: present

您也可以通过以下方式添加

- name: Add an Apt signing key, uses whichever key is at the URL
  ansible.builtin.apt_key:
    url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
    state: present

或者如果您已经知道密钥 ID

- name: Add missing Apt signing key by ID from a keyserver
  ansible.builtin.apt_key:
   keyserver: keyserver.ubuntu.com
   id: "{{ KEY_ID }}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible 抛出“无法更新 apt 缓存:W:无法安全地从此类存储库更新”错误 的相关文章

随机推荐

  • Android:通过POST发送图像

    我一直在寻找解决方案 并遇到了多部分和不同的设置 但我似乎无法让它正常工作 这是我到目前为止所拥有的 编辑 我收到的服务器端错误是 500 我认为这是因为我发送的数据对于一个请求来说太大或者格式不正确 ByteArrayOutputStre
  • 将背景放在线性布局上并占据几乎 3/4 的屏幕

    我已经尝试了其他帖子的各种帮助 将宽度设置为 0dp 等 但似乎没有任何效果 我有两种布局 第一个似乎仍然占主导地位 如果我在文本视图上放置背景颜色 它们就会表现出自己的行为并正确结束 然而 在线性布局上放置一个背景 它几乎占了屏幕的 3
  • 使用 PHP 将 .key 文件从 DER 格式加载到 PEM

    我有一个进行转换的代码 但需要使用本机 PHP 函数来完成它 因为它没有激活对运行 exec 的支持 exec openssl pkcs8 inform DER in archivo key out archivo key pem pass
  • 如何轻松地在 pubspec.yaml 中添加 100 多个手动图像?

    我需要在我的应用程序中添加大量图像 并计划让应用程序保持离线状态 写 assets image1 jpg 让人心痛 我是flutter新手 不知道还有没有其他方法 有没有 要包含资产 flutter assets assets my ico
  • HTTP 缓存控制

    我正在为此苦苦挣扎 在 PHP 中 我为 GET AJAX 调用执行此操作 header Cache Control max age 10000 private 此后浏览器仍然能够发出请求吗 为什么 header Expires gmdat
  • 更改 AlertDialog 中超链接的颜色

    通常情况下 这种行为并不严重 但在 Samsung Galaxy S 上 默认的 AlertDialog 背景为蓝色 并且正常格式的链接 蓝色 消失 不幸的是 下面的代码不会改变链接的颜色 有人有想法吗 public void showCl
  • SQL 按日期分组,但也获取不带记录的日期

    有没有一种简单的方法可以做到GROUP BY DATE timestamp 包括一段时间内的所有日期 无论是否有与该日期相关的任何记录 基本上 我需要生成这样的报告 24 Dec 0 orders 23 Dec 10 orders 22 D
  • 以编程方式设置 CKEditor 对话框的位置

    我正在尝试找到一种方法 以便在打开新对话框时以编程方式设置 CKEditor 对话框的位置 位置部分的实际设置似乎很简单 但我似乎无法弄清楚如何捕获正在创建和显示的新 CKEditor 对话框的事件 我假设这将是类似的事情 CKEDITOR
  • 在 haskell 中按所选字符分割字符串

    我试图在每次选择字符时分割一个字符串 所以如果我收到 1 2 3 4 5 我选择的角色是 结果是一个列表 例如 1 2 3 4 5 我一直在浏览这里已经回答的问题 他们指出我使用splitOn 然而 当我尝试import Data List
  • 仅当用户选择时才使用 Inno Setup 下载文件

    问题 我想知道如何编写脚本来下载第二个 zip 文件 但最初在两个 zip 文件之间进行选择 下载 解压并删除 zip 文件 每个 zip 文件具有不同的名称 但内容与 zip 文件具有不同的名称 每个名称相同 无需重命名 这个问题有点类似
  • 由于内存限制,串行json_decode

    我有一个很大的 json 文件 7 3MB 我尝试对其进行 json decode 但由于内存限制而失败 致命错误 允许的内存大小 134217728 字节耗尽 有没有一种方法可以一次使用一个对象 节点串行解码 json 文件 我想理论上你
  • “no-ansi”选项不存在

    我正在尝试在 Windows 上创建 laravel 项目 但这个问题向我展示并且我尝试更新作曲家 php版本是8 0 6 作曲家版本是2 0 14 laravel 版本是 4 2 5 根据对此的评论Github问题这是最新版本的 Symf
  • 检查所选文件是否与 标记上的接受属性匹配

    我希望防止用户上传服务器会从包含最少 JavaScript 的页面拒绝的文件 最好不要添加任何严重的依赖项 例如纯粹为了解决这一问题的 jQuery 由于我不是针对旧用户 因此我使用浏览器的表单验证系统来检查用户是否选择了有效文件 但它似乎
  • PhoneGap (Cordova.js) 和 JQuery.Ajax 不能一起工作

    我已经使用 Phonegap Jquery 构建了一个针对 Andriod 4 12 的 html 页面 我的业务需求是使用 cordova js 的相机 API 拍照 然后将捕获的图片发布到 ASMX Web 服务 问题 当我添加对 Co
  • 半透明物体渲染顺序

    渲染半透明对象时 使用 glBlend 建议按 z 顺序从后到前对对象进行排序 From opengl 文档 在应用程序中使用深度缓冲时 您需要注意渲染图元的顺序 需要首先渲染完全不透明的图元 然后按从后到前的顺序渲染部分不透明的图元 如果
  • 在 iPhone 中创建二维码

    我看过一些示例代码 这些代码正在从文本创建二维码 下面是代码 我们也可以从其他数据 如图像 生成二维码吗 NSString code 1001012023034 Barcode barcode Barcode alloc init self
  • 在Java中为数字添加前导零? [复制]

    这个问题在这里已经有答案了 有没有更好的方法来获得这个结果 如果 num 的位数多于位数 则此函数会失败 并且我觉得它应该在库中的某个地方 例如 Integer toString x 3d 或其他东西 static String intTo
  • 获取与 Windows 中的任务管理器相同的进程详细信息

    我编写了一个程序来获取当前正在运行的进程的内存详细信息psutil在Python 3中 问题是我得到的值与Windows任务管理器中的值不同 具体来说 如何在Python中获取进程的私有工作集大小 psutil 调用GetProcessMe
  • 如何制作或使用 WP7 的标准图像查看器

    我想做一个显示图片的应用程序 但我希望能够通过手势来放大和缩小 我通过在我的项目中包含一个工具包来解决这个问题 但我真正的问题是 我可以使用或者是否有一个已经为我创建的控件来显示图片 例如 WP7 手机本身的图片库 我以为没有 但 Face
  • Ansible 抛出“无法更新 apt 缓存:W:无法安全地从此类存储库更新”错误

    我对 Ansible 非常陌生 我正在尝试在 EC2 实例 Ubuntu 18 04 上安装 kubectl 来上课 我已经运行了剧本 一切进展顺利 直到遇到任务 4 然后抛出以下错误 致命 localhost 失败 gt changed