Ubuntu 16.04 服务器 VM 映像显然每 12 小时左右启动一次“apt-daily.service”;此服务执行各种与 APT 相关的任务,例如刷新可用软件包列表、在需要时执行无人值守升级等。
当从虚拟机“快照”启动时,服务会立即触发,因为(我认为)systemd 很快意识到计时器早就应该关闭了。
但是,正在运行的 APT 会阻止其他apt进程运行,因为它持有/var/lib/dpkg. 指示这的错误消息如下所示:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Run Code Online (Sandbox Code Playgroud)
我需要禁用这个自动化的 APT 任务,直到 Ansible 完成机器设置(通常涉及安装包);有关更多信息和上下文,请参阅https://github.com/gc3-uzh-ch/elasticluster/issues/304。
我尝试了各种选项来通过“用户数据”脚本禁用“无人值守升级”功能cloud-init,但到目前为止所有这些都失败了。
systemd 任务apt-daily.service由apt-daily.timer. 我尝试使用以下命令的各种组合来禁用一个或另一个,或同时禁用两者;仍然,在apt-daily.serviceVM 准备好接受 SSH 连接后不久就启动了:
#!/bin/bash
systemctl stop apt-daily.timer
systemctl disable apt-daily.timer
systemctl mask apt-daily.service …Run Code Online (Sandbox Code Playgroud) 我添加了一个额外的数据磁盘,如将数据磁盘附加到 Linux VM 文档中所述。
有问题的分区是/dev/sdc1. 我将这一行添加到了最底部。不幸的是,cloud-init 的魔力以一种糟糕的方式发挥了它的奇迹,并在 /etc/fstab 中的条目周围移动,最终我得到了一个“隐藏”的挂载点。
root@qwerz:/mnt/builds/docker# cat /etc/fstab
# CLOUD_IMG: This file was created/modified by the Cloud Image build process
UUID=cfadafca-7199-49b1-a353-072629b7fcdf / ext4 defaults,discard 0 0
LABEL=UEFI /boot/efi vfat defaults,discard 0 0
UUID=0195f789-b5fa-4bea-a91d-dc120bafb23a /mnt/builds ext4 defaults,nofail 1 2
#/dev/sdc1 /mnt/builds ext4 default,nofail 0 0
/dev/disk/cloud/azure_resource-part1 /mnt auto defaults,nofail,x-systemd.requires=cloud-init.service,comment=cloudconfig 0 2
root@qwerz:/mnt/builds/docker#
Run Code Online (Sandbox Code Playgroud)
问题 1:我应该将自定义点移到 /mnt 之外吗?
问题 2:cloud-init 的东西到底在做什么,我可以摆脱它吗?
root@qwerz:/mnt/builds/docker# dpkg -l |grep cloud-init
ii cloud-init 19.1-1-gbaa47854-0ubuntu1~18.04.1 all Init scripts for cloud instances …Run Code Online (Sandbox Code Playgroud)
cloud-init为了通过重试其他操作来处理下面显示的错误消息,直到它正确工作而不抛出错误,必须在下面的启动脚本摘录中更改哪些特定语法?
我们的启动脚本中似乎触发错误的命令是:
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Run Code Online (Sandbox Code Playgroud)
错误消息似乎是:
azure-arm: Errors during downloading metadata for repository 'epel':
azure-arm: - Status code: 503 for https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=x86_64&infra=$infra&content=$contentdir (IP: 123.45.678.901)
azure-arm: - Status code: 503 for https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=x86_64&infra=$infra&content=$contentdir (IP: 123.45.678.908)
azure-arm: - Status code: 503 for https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=x86_64&infra=$infra&content=$contentdir (IP: 98.765.43.21)
azure-arm: Error: Failed to download metadata for repo 'epel': Cannot prepare internal mirrorlist: Status code: 503 for https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=x86_64&infra=$infra&content=$contentdir (IP: 86.753.09.11)
Run Code Online (Sandbox Code Playgroud)
Packer 使用启动脚本在 azure 中构建 RHEL 7 映像cloud-init。正常情况下,构建工作正常。但是,现在,当下面给出的行由于某些依赖性问题而抛出下面给出的错误时,构建失败。
我们需要如何重写中断行周围的行,以便安装顺利完成?
dnf install我们的要求是直接从特定文件执行操作rpm …