Como usar o módulo homebrew da Ansible para fazer valer uma lista de pacotes instalados

1

Sou um usuário relativamente novo da Ansible. Eu uso para orquestrar alguns grupos de servidores Linux. Agora estou expandindo esse uso para usar o módulo Homebrew da Ansible .

Usando o módulo homebrew, quero afirmar que uma lista de pacotes está instalada em minhas caixas macOS. Até agora, o melhor que posso fazer é criar papéis separados para cada pacote, com cada função parecida com:

- name: "htop"
  homebrew:
    name: htop
    state: present

Parece que deve haver uma maneira de fornecer uma lista de pacotes em uma única função, o que eu já vi antes ao usar o módulo Ansible apt.

Alguma dica? O próprio módulo homebrew tem que dar suporte a esse tipo de operação ou talvez exista algo mais fundamental para o Ansible ou mesmo para o próprio Python que forneça o que estou procurando?

PS - Você pode seguramente assumir que minhas máquinas do macOS são todas servidores.

    
por James T Snell 26.10.2017 / 06:48

1 resposta

1

Eu encontrei uma solução, mais ou menos. Meu papel agora se parece com isso e funciona:

- name: "brew favourites"
  homebrew: name={{ item }} state=present
  with_items:
    - htop
    - nmap
    - telnet
    - wget
    - nginx

Notas estendidas

Eu realmente não sei qual mecanismo é responsável por esse trabalho. Eu sinto que é fora do Ansible e é na verdade um pitonismo (isso é um Lamda?). Seja o que for, poderia servir de modelo para uma solução geral para esse tipo de coisa.

Eu tentei o acima, depois de ver algo semelhante descrito para definir uma lista de pacotes do apt, essa abordagem se parece com:

- name: "Asserting apt packages"
  apt: pkg={{ item }} state=installed
  with_items:
    - aptitude
    - vim
    - htop
    - nmap
    - curl
    - screen
    - open-vm-tools

Assim, note que no módulo apt , eu queria ter muitos pacotes listados para o pkg . No contexto módulos homebrew ', não era pkg , mas sim nome .

Similarmente, ambos os módulos Ansible possuem um parâmetro state, mas para o apt o valor apropriado foi instalado , e com o homebrew está presente .

Então, acho que esse tipo de sintaxe se aplica ao Ansible em um contexto global. E os módulos precisam ter consciência zero ou suporte explícito disso. Poderoso.

    
por 26.10.2017 / 07:03