Ansible: atualizando pacotes selecionados se instalado sem instalar se não for

4

Eu tenho algumas dezenas de hosts que são uma mistura do CentOS 6 e 7. Recentemente, comecei a usar o Ansible para ajudar a gerenciá-los, mas ainda sou muito novato.

Como todo mundo, eu tenho uma necessidade periódica de atualizar pacotes nessas máquinas, especialmente por motivos de segurança. No entanto, eu não quero atualizar todos os pacotes neles, apenas os específicos - que podem variar de máquina para máquina, dependendo de suas funções. Eu usei o comando yum do Ansible, com state = latest , e uma lista de pacotes específicos, para atualizar esses hosts no passado, mas só hoje notei que ao executar que, contra um host, se um dos pacotes listados não estiver instalado nessa máquina, ele será instalado.

O que eu preciso é uma maneira de fornecer Ansible com uma lista de pacotes e, em seguida, para cada host que irá atuar: - se o pacote estiver presente, atualize-o para a versão mais recente; - se o pacote não estiver presente, não faça nada.

Existe uma maneira prática de fazer isso?

    
por Iba Popo 18.05.2016 / 18:22

2 respostas

2

Se você quiser apenas atualizar um subconjunto dos pacotes com as atualizações disponíveis, convém tentar a tentativa do @wurtel. Você precisará registrar os pacotes instalados assim:

- name: Get installed packages.
  command: rpm -qa --qf "%{NAME}\n"
  register: installed_packages

Depois, você pode definir um filtro teórico e atualizar todos os pacotes definidos em a lista de pacotes que podem atualizar packages_to_update .

- name: Update subset of packages.
  yum:
    name: "{{ item }}"
    state: latest
  with_items:
  - {{ installed_packages | intersect(packages_to_update) }}
    
por 01.06.2016 / 23:16
1

Isso tudo parece um pouco complicado para uma atualização do yum?

porque não basta usar um comando local para isso até que o Ansible consiga permitir essa opção?

Um manual simples como esse faria isso.

---
- hosts: dev-systems
  remote_user: admin
  become: yes
  tasks:
    - name: Update installed packages.
      command: /usr/bin/yum update -y {{item}}
      with_items:
          - package1
          - package2
          - package3
          - package-etc

Eu apenas testei isso e usei dois pacotes. um que precisava de uma atualização e um que não foi instalado. O resultado final foi um pacote atualizado com o outro sendo instalado.

    
por 12.07.2016 / 16:53