Existe alguma palavra simples e direta para manter algumas máquinas Linux no mesmo nível de patch? Eu precisaria disso separadamente para alguns Ubuntu e alguns CentOS 7 (na verdade, Oracle Linux 7, mas próximo o suficiente, pois o CentOS provavelmente é mais familiar para outros), máquinas.
EDIT: Só para esclarecer, distros diferentes não precisam estar "no mesmo nível de patch", então eu só preciso manter, por exemplo, as máquinas Ubuntu 16.xx no mesmo nível de patch, as máquinas Ubuntu 18.xx no mesmo nível nível de patch, as máquinas Oracle Linux 7.x no mesmo nível de patch, etc.
O que quero dizer é isso. Eu tenho uma máquina CentOS 7 A que atualizo com "sudo yum update". Ele possui os repositórios padrão, além de alguns repositórios adicionais de terceiros. Então, um mês depois, quero atualizar outra máquina CentOS 7, mas não para os pacotes mais recentes, mas para as mesmas versões da máquina A.
Se houver disparidades com quais repositórios e pacotes estão instalados (como a máquina A tem um repositório Yarn e Jenkins e um pacote instalado, enquanto B não os possui, ou vice-versa), eles não contariam, mas seriam atualizados para o mais novo versão disponível em qualquer máquina. Portanto, apenas esses pacotes seriam "restritos à versão" existentes em ambas as máquinas.
Eu sei que pelo menos no CentOS ( YUM ) você pode atualizar um pacote para uma determinada versão em vez da mais recente, e presumo que também seja possível com o APT no Ubuntu. A questão é se existe uma ferramenta para Ubuntu e CentOS que usaria a saída (quais pacotes estão instalados e quais versões) da primeira máquina como entrada nas segundas máquinas, para qual versão atualizá-lo, se esse pacote (e repositório) está instalado lá também. E então o resto seria atualizado para qualquer versão mais recente.
Eu tentei pesquisar isso no Google antes e vejo principalmente duas sugestões:
Configure repositórios locais. Na verdade, fiz isso, mas parece muito grande e pesado, apenas para que eu possa manter algumas máquinas no mesmo nível de patch. Faz mais sentido se houver dezenas ou centenas de máquinas para atualizar e manter no mesmo nível de patch (nesse ponto também automatizar tudo com Ansible ou algo assim).
Use algum CD de mídia de instalação que tenha um determinado nível de patch e instale as atualizações a partir dele. Não tenho certeza de como isso funciona, mas principalmente, esses CDs de mídia não incluem apenas os repositórios oficiais de distribuição? Que tal os repositórios de terceiros que foram adicionados posteriormente nas máquinas, como Jenkins, GitLab CI , Chrome, epel e o que você tem?
Existe uma maneira mais fácil de fazer isso usando arquivos de bloqueio de pacote. O yum-versionlock deve permitir que você crie um arquivo de bloqueio de referência na máquina A, que você pode copiar para outras máquinas centOS 7 manualmente ou usando o Ansible.
Se você se preocupa apenas com alguns pacotes, é mais fácil gerenciá-los usando o Ansible. Se você realmente precisa de TODOS os pacotes mantidos exatamente nas mesmas versões nas máquinas, o yum-versionlock é o caminho a seguir. Você ainda pode usar o Ansible para copiar o arquivo de bloqueio da máquina A.
Instalar yum-versionlock
Em seguida, adicione todos os pacotes com
*
ou um pacote específico comohttpd
Você deve ver esses pacotes no
versionlock.list
arquivo conforme especificado emversionlock.conf
. Por padrão, esses arquivos estão em/etc/yum/pluginconfg.d/
Em seguida, copie
versionlock.list
para outra máquina e executesudo yum install -y
ousudo yum update -y
e ele instalará ou atualizará todos os pacotes para as versões no arquivo de bloqueio. Se você acabou de executar a atualização, ela deve atualizar apenas o que você já possui para o que o arquivo de bloqueio permite (mas não tentei isso).Para outros sistemas operacionais, existem ferramentas semelhantes, conforme explicado aqui para apt , mas não conheço uma ferramenta que bloqueie pacotes em diferentes gerenciadores de pacotes.
Novamente, se você se preocupa apenas com alguns pacotes, pode usar o módulo de pacote do Ansible para fazer isso, mas pode encontrar alguns casos de uso em que precisará usar o yum e outros módulos específicos do gerenciador de pacotes. Isso pode ficar confuso, mas valerá a pena.
Se você realmente precisa de uma única ferramenta, pode usar o Ansible para criar os arquivos de bloqueio de pacote a partir dos modelos jinja2 nos diferentes gerenciadores de pacotes que você precisa oferecer suporte e, em seguida, copiá-los para suas máquinas. Isso levaria mais tempo para configurar e seria propenso a erros, mas permitiria que você mantivesse uma única lista de pacotes para instalar.