É possível notificar um grupo de serviços em vez de individuais no Ansible?

1
- name: be sure check-http.rb is copied
  copy:
    src: /tmp/sensu-plugins-http/bin/check-http.rb
    dest: /etc/sensu/plugins/check-http.rb
    remote_src: true
    owner: sensu
    group: sensu
    mode: 0500
  notify:
    - restart sensu-api
    - restart sensu-client
    - restart sensu-server

- name: be sure check_websites.json is copied
  template:
    src: check_websites.j2
    dest: "{{ sensu_conf_d }}/check_websites.json"
  register: check_websites_config
  notify:
    - restart sensu-api
    - restart sensu-client
    - restart sensu-server

Em vez de repetir:

notify:
  - restart sensu-api
  - restart sensu-client
  - restart sensu-server

é possível torná-lo conciso, por exemplo:

notify:
  - restart sensu-services

Resposta esperada

@knowhy sugeriu que esta solução , mas estou procurando uma solução que seja capaz de combinar várias reinicializações em um manipulador e não no diretório de tarefas

    
por 030 10.08.2016 / 19:33

1 resposta

3

IMHO não existe essa funcionalidade disponível em Ansible a partir de hoje.

Existem algumas soluções mais ou menos feias (como as relacionadas na pergunta) que não vou repetir aqui.

A melhor solução que consigo pensar é escrever um manipulador que combine essas tarefas. Supondo que o manipulador na pergunta perguntou, apenas reinicia os serviços, um loop with_items poderia ser usado assim:

- name: restart sensu-services
  service:
    name: "{{ item }}"
    state: restarted
  with_items:
    - sensu-api
    - sensu-client
    - sensu-server

Há uma solicitação de recurso em aberto para oferecer suporte a blocks como manipuladores. Isso seria uma boa abstração para este uso.

    
por 10.08.2016 / 20:25