From 3f213a3b644c1ce9182a91b7904ce91987aea765 Mon Sep 17 00:00:00 2001 From: "Thierno IB. BARRY" Date: Wed, 27 Jan 2016 17:37:07 +0100 Subject: [PATCH] Define a proxy for plugin installation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address the issue [ansible-elasticsearch #4](https://github.com/elastic/ansible-elasticsearch/issues/4) which add proxy for plugin installation and more generally es_proxy_host and es_proxy_port for global usage. Right now, it’s only used for plugins installation. In the futur, it can be used (or defined) in the java_opts within the default file for instance (elasticsearch.j2) --- README.md | 24 ++++++++++++++++++++++-- tasks/checkParameters.yml | 3 +++ tasks/elasticsearch-plugins.yml | 10 +++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1be1b5e853e45..bdf4ae21dfcf0 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,8 @@ A more complex example: - plugin: marvel-agent - plugin: lmenezes/elasticsearch-kopf version: master + proxy_host: proxy.example.com + proxy_port: 8080 ``` ### Multi Node Server Installations @@ -166,8 +168,7 @@ Following variables affect the versions installed: - plugin: elasticsearch-cloud-aws version: 2.5.0 ``` - - + Earlier examples illustrate the installation of plugins for 2.x. The correct use of this parameter varies depending on the version of Elasticsearch being installed: - 2.x. - For officially supported plugins no version or source delimiter is required. The plugin script will determine the appropriate plugin version based on the target Elasticsearch version. @@ -188,6 +189,25 @@ controlled by the following parameters: * ```es_work_dir``` - defaults to "/tmp/elasticsearch". * ```es_plugin_dir``` - defaults to "/usr/share/elasticsearch/plugins". +### Proxy + +To define proxy globaly, set the following variables: + +* ```es_proxy_host``` - global proxy host +* ```es_proxy_port``` - global proxy port + +To define proxy only for a particular plugin during its installation: + +``` + es_plugins: + - plugin: elasticsearch-cloud-aws + version: 2.5.0 + proxy_host: proxy.example.com + proxy_port: 8080 +``` + +> For plugins installation, proxy_host and proxy_port are used first if they are defined and fallback to the global proxy settings if not. + ## Notes * The role assumes the user/group exists on the server. The elasticsearch packages create the default elasticsearch user. If this needs to be changed, ensure the user exists. diff --git a/tasks/checkParameters.yml b/tasks/checkParameters.yml index 1c851ecc221e7..6fc5befc38e02 100644 --- a/tasks/checkParameters.yml +++ b/tasks/checkParameters.yml @@ -3,6 +3,9 @@ - fail: msg="es_instance_name must be specified and cannot be blank" when: es_instance_name is not defined or es_instance_name == '' +- fail: msg="es_proxy_port must be specified and cannot be blank when es_proxy_host is defined" + when: (es_proxy_port is not defined or es_proxy_port == '') and (es_proxy_host is defined and es_proxy_host != '') + - set_fact: multi_cast={{ (es_version | version_compare('2.0', '<') and es_config['discovery.zen.ping.multicast.enabled'] is not defined) or (es_config['discovery.zen.ping.multicast.enabled'] is defined and es_config['discovery.zen.ping.multicast.enabled'])}} - debug: msg="WARNING - It is recommended you specify the parameter 'http.port' when multicast is disabled" diff --git a/tasks/elasticsearch-plugins.yml b/tasks/elasticsearch-plugins.yml index 28e9ec8501aab..e7f26e8451114 100644 --- a/tasks/elasticsearch-plugins.yml +++ b/tasks/elasticsearch-plugins.yml @@ -20,7 +20,15 @@ - name: Install elasticsearch plugins #debug: var=item - command: "{{es_home}}/bin/plugin install {{ item.plugin }}{% if item.version is defined and item.version != '' %}/{{ item.version }}{% endif %} --silent" + command: > + {{es_home}}/bin/plugin install + {{ item.plugin }}{% if item.version is defined and item.version != '' %}/{{ item.version }}{% endif %} + {% if item.proxy_host is defined and item.proxy_host != '' and item.proxy_port is defined and item.proxy_port != ''%} + -DproxyHost={{ item.proxy_host }} -DproxyPort={{ item.proxy_port }} + {% elif es_proxy_host is defined and es_proxy_host != '' %} + -DproxyHost={{ es_proxy_host }} -DproxyPort={{ es_proxy_port }} + {% endif %} + --silent register: plugin_installed failed_when: "'Failed to install' in plugin_installed.stderr" changed_when: plugin_installed.rc == 0