Garantindo que um determinado conjunto de RPMs e apenas esses RPMs estejam instalados

1

Eu tenho várias listas de RPMs (uma por configuração) e um conjunto de máquinas remotas. Cada lista inclui todos dos RPMs necessários para executar minha máquina na configuração que eu escolher.

Para uma determinada configuração e máquina, preciso ter certeza de que:

  1. Cada RPM na lista RPM de configuração é instalado na mesma versão exata; e
  2. Qualquer RPM não na lista não está instalado (e desinstale-o, se necessário)

Eu tenho procurado o Ansible e seu módulo yum , mas embora seja fácil garantir que os RPMs instalados estejam instalados, Não foi possível encontrar uma maneira de especificar que quaisquer outros RPMs devam ser desinstalados.

O que é uma boa maneira de fazer isso?

    
por MoshiBin 07.10.2014 / 09:48

2 respostas

1

Está bem aí, na documentação que você vinculou:

- name: remove the Apache package
  yum: name=httpd state=absent

Note que ele também pode ser aplicado a grupos:

- name: install the 'Development tools' package group
  yum: name="@Development tools" state=absent

No entanto, se sua exigência for garantir que qualquer pacote que não esteja na sua lista não esteja instalado, você deve começar a revisar seu procedimento de provisão, ou seja, se uma máquina estiver sob controle desde seu início, fique fora de seu controle para que um pacote seja instalado.

    
por 07.10.2014 / 09:56
0

rpm -qa listará todos os RPMs instalados. Você poderia simplesmente salvar uma saída de servidores bons e conhecidos para um arquivo txt e depois executar um diff em relação a outros servidores.

Eu não usei o Ansible, mas possivelmente você poderia usar essa saída para listar os pacotes a serem removidos.

    
por 13.10.2014 / 22:43