voxpupuli / puppet-elasticsearch

Elasticsearch Puppet module
Apache License 2.0
403 stars 478 forks source link

Module tries to install already installed plugins #180

Closed cyberhuman closed 9 years ago

cyberhuman commented 10 years ago

Hi,

I have added several plugins to my ES configuration in puppet, and after the initial installation it hangs for 60 seconds for each already installed plugin. From the output I can see that the module tries to install already installed plugins six times before actually giving up. I also have noticed that the only plugins with this behaviour are 'elasticsearch-analysis-' ones (four plugins in total, which adds up to four wasted minutes!). Marvel and kopf are handled just fine.

Here is the debug output from puppet agent:

debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 1/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 2/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 3/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 4/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 5/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Exec try 6/6
debug: Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0](provider=posix): Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: Executing '/usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0'
debug: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: Sleeping for 10.0 seconds between tries
err: /Stage[main]//Node[node001-9010-9020]/Elasticsearch::Plugin[elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/Exec[install_plugin_elasticsearch/elasticsearch-analysis-kuromoji/2.3.0]/returns: change from notrun to 0 failed: /usr/share/elasticsearch/bin/plugin -install elasticsearch/elasticsearch-analysis-kuromoji/2.3.0 returned 74 instead of one of [0] at /etc/puppet/modules/elasticsearch/manifests/plugin.pp:96

And here is my puppet config:

  class { "elasticsearch":
    init_defaults => {
      'ES_USER' => 'elasticsearch',
      'ES_GROUP' => 'elasticsearch',
      'ES_HEAP_SIZE' => '96g',
      'MAX_LOCKED_MEMORY' => 'unlimited',
    },
    config => {
      'cluster.name' => 'lepton',
      'node.node.max_local_storage_nodes' => 1,
      'bootstrap.mlockall' => true,
      'gateway.recover_after_nodes' => 7,
      'gateway.recover_after_time' => '3m',
      'gateway.expected_nodes' => 10,
      'indices.recovery.max_bytes_per_sec' => '100mb',
    },
    require => [ Mount['/disk0'], Mount['/disk1'], Mount['/disk2'] ],
  }

  elasticsearch::instance { 'main':
    datadir => [ '/disk0', '/disk1', '/disk2' ],
    config => {
      'node.name' => $hostname,
      'network.host' => $elasticsearch_host,
      'marvel.agent.exporter.es.hosts' => [ "$elasticsearch_url" ],
    },
  }

  elasticsearch::plugin {'elasticsearch/marvel/latest':
    module_dir => 'marvel',
    instances  => 'main',
  }

  elasticsearch::plugin {'elasticsearch/elasticsearch-analysis-icu/2.3.0':
    module_dir => 'icu',
    instances  => 'main',
  }

  elasticsearch::plugin {'elasticsearch/elasticsearch-analysis-kuromoji/2.3.0':
    module_dir => 'kuromoji',
    instances  => 'main',
  }

  elasticsearch::plugin {'elasticsearch/elasticsearch-analysis-smartcn/2.3.0':
    module_dir => 'smartcn',
    instances => 'main',
  }

  elasticsearch::plugin {'com.yakaz.elasticsearch.plugins/elasticsearch-analysis-combo/1.5.1':
    module_dir => 'combo',
    instances  => 'main',
  }

  elasticsearch::plugin {'lmenezes/elasticsearch-kopf':
    module_dir => 'kopf',
    instances  => 'main',
  }

Best regards, Raman

electrical commented 10 years ago

Hi,

can you check what the directory names are for all the plugins? My best guess is that the module_dir names are incorrect causing the re-installs. The check is done by validating the module_dir value if it exists. I hope at some point i can use the list option, i need to check when that was added to the plugin manager.

cyberhuman commented 10 years ago

Hi electrical, I checked the directory names and they start with "analysis-". Prepending this to module_dir fixed the problem. Thanks! On a side note: maybe the module_dir parameter should be documented better? After reading the docs I originally thought that it specifies the directory where to install the plugin, not where to look for it.

electrical commented 10 years ago

Ah sorry about that. I hope i can re-factor this soon so it will be much easier to use.

electrical commented 9 years ago

recent version have the --list option so i will be adding that as a check to validate if a plugin is installed or not. Hope to have it for the next release.

electrical commented 9 years ago

Just a quick update on this. I've done some digging and filed #343 with some idea's to solve this permanently in a good way.

electrical commented 9 years ago

Solved with #343