A imagem da VM do servidor Ubuntu 16.04 aparentemente inicia o "apt-daily.service" a cada
12 horas ou mais; este serviço executa várias tarefas relacionadas ao APT como atualizar
a lista de pacotes disponíveis, executando atualizações autônomas, se necessário, etc.
Ao iniciar a partir de uma "captura instantânea" da VM, o serviço é acionado imediatamente , como (I
presumir) systemd percebe rapidamente que o temporizador deveria ter disparado há muito tempo.
No entanto, um APT em execução impede que outros processos apt
sejam executados, pois ele contém
bloquear em /var/lib/dpkg
. A mensagem de erro indicando isso é assim:
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?
Eu preciso desabilitar essa tarefa automatizada do APT até que o Ansible
concluiu a configuração da máquina (que normalmente envolve a instalação de pacotes);
veja link para mais informações e
contexto.
Eu tentei várias opções para desativar o recurso "upgrades autônomos"
através de um script de "dados do usuário" para cloud-init
, mas todos falharam
agora.
1. Desativar a tarefa do systemd
tarefa systemd apt-daily.service
é acionada por apt-daily.timer
. eu tentei
para desativar um ou o outro, ou ambos, com vários cobinations dos seguintes
comandos; ainda assim, o apt-daily.service
é iniciado momentos após a VM se tornar
pronto para aceitar conexões SSH ::
#!/bin/bash
systemctl stop apt-daily.timer
systemctl disable apt-daily.timer
systemctl mask apt-daily.service
systemctl daemon-reload
2. Desativar opção de configuração APT::Periodic::Enable
Script /usr/lib/apt/apt.systemd.daily
lê algumas configurações do APT
variáveis; a configuração APT::Periodic::Enable
desativa a funcionalidade
no total (linhas 331--337). Eu tentei desativá-lo com o seguinte
script ::
#!/bin/bash
# cannot use /etc/apt/apt.conf.d/10periodic as suggested in
# /usr/lib/apt/apt.systemd.daily, as Ubuntu distributes the
# unattended upgrades stuff with priority 20 and 50 ...
# so override everything with a 99xxx file
cat > /etc/apt/apt.conf.d/99elasticluster <<__EOF
APT::Periodic::Enable "0";
// undo what's in 20auto-upgrade
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
__EOF
No entanto, apesar de APT::Periodic::Enable
ter valor 0
na linha de comando
(veja abaixo), o programa unattended-upgrades
ainda é executado ...
ubuntu@test:~$ apt-config shell AutoAptEnable APT::Periodic::Enable
AutoAptEnable='0'
3. Remova /usr/lib/apt/apt.systemd.daily
completamente
O script cloud-init
a seguir remove o script de atualizações autônomas
ao todo ::
#!/bin/bash
mv /usr/lib/apt/apt.systemd.daily /usr/lib/apt/apt.systemd.daily.DISABLED
Ainda assim, a tarefa é executada e eu posso vê-la na tabela de processos! embora o arquivo
não existe se sondado a partir da linha de comando ::
ubuntu@test:~$ ls /usr/lib/apt/apt.systemd.daily
ls: cannot access '/usr/lib/apt/apt.systemd.daily': No such file or directory
Parece que o script cloud-init
(junto com a linha de comando SSH)
e o processo systemd raiz é executado em sistemas de arquivos e processos separados
espaços ...
Perguntas
Existe algo óbvio que estou perdendo? Ou há alguma mágica de namespace indo
de que não conheço?
Mais importante: como desabilitar o apt-daily.service
por meio de
cloud-init
script?