запускать задачи с заданной ролью на нескольких хостах? - PullRequest
0 голосов
/ 21 декабря 2018

Я написал ответственную роль для установки многоузлового кластераasticsearch, проблема в том, что у меня есть файлы конфигурации для каждого типа узла (Master, Data). У меня проблема с указанием хоста в каждой книге воспроизведения.

setup_elastic.yml

---
- hosts: all
  become: yes
  become_user: root
  roles:
  - elasticsearch

и вот файл конфигурации для мастеров:

---
    - name: config elasticsearch master
      blockinfile:
          path: /etc/elasticsearch/elasticsearch.yml
          block: |
                    cluster.name: lamedicale4
                    node.master: true
                    node.data: false
                    node.name: ${HOSTNAME}
                    bootstrap.mlockall: true
                    path.data: /data/elasticsearch
                    path.logs: /logs/elasticsearch
                    discovery.zen.minimum_master_nodes: 2
                    discovery.zen.ping.multicast.enabled: false
                    discovery.zen.ping.unicast.hosts : ["172.31.36.229","172.31.44.124"]

файл конфигурации для узлов данных:

---
    - name: config elasticsearch data nodes
      blockinfile:
          path: /etc/elasticsearch/elasticsearch.yml
          block: |
                    cluster.name: lamedicale4
                    node.master: false
                    node.data: true
                    node.name: ${HOSTNAME}
                    bootstrap.mlockall: true
                    path.data: /data/elasticsearch
                    path.logs: /logs/elasticsearch
                    discovery.zen.minimum_master_nodes: 2
                    discovery.zen.ping.multicast.enabled: false
                    discovery.zen.ping.unicast.hosts : ["172.31.36.229","172.31.44.124"]

и здесьэто основные задачи:

---
# tasks file for /etc/ansible/roles/elastissearch

- import_tasks: install_java_jdk.yml
- import_tasks: install_elasticsearch.yml
- import_tasks: clear_file.yml
- import_tasks: directory_data_log_elastic.yml
- include_tasks: config_elasticsearch_master.yml
- include_tasks: config_elasticsearch_data.yml
- import_tasks: reload_restart_elasticsearch.yml

что мне делать?

1 Ответ

0 голосов
/ 21 декабря 2018

Отвечая на ваш конкретный вопрос, замените ${HOSTNAME} на:

  • {{inventory_hostname}}
  • {{ansible_fqdn}}
  • {{ansible_hostname}}

Взгляните на эту часть документов , чтобы понять, откуда они берутся.

В целом, я бы предложил более гибкий подход к'blockinfile' - преобразование всего файла конфигурации в шаблон Ansible и управление им с помощью модуля 'template' .В прошлом я делал это с помощью конфигурационных файлов Elasticsearch, и это работало хорошо.

...