2016-03-21 66 views
0

我安装了elasticsearch使用this的作用。如何在重新启动流浪箱后自动启动服务?

我做以下步骤在剧本:

--- 

- hosts: master 
    sudo: true 
    tags: elasticsearch 
    roles: 
    - ansible-elasticsearch 

然后vagrant up es-test-cluster,其中es-test-cluster是VM的我在VagrantFile提到的名字。我已经给它一个私人IP 192.162.12.14。虚拟机启动完美,运行后sudo service elasticsearch status我得知服务运行在192.162.12.14:9200这是正确的。但是,如果我运行vagrant halt es-test-cluster,然后vagrant up es-test-cluster我看到elasticsearch服务正在运行。

我想这样做的:

--- 

- hosts: master 
    sudo: true 
    tags: elasticsearch 
    roles: 
    - ansible-elasticsearch 
    tasks: 
    - name: Starting elasticsearch service if not running 
    service: name=elasticsearch state=started 

但即使这样也无济于事。这只在我第一次启动时运行。

如何在我运行vagrant up时启动服务?

这是用于Ubuntu 14.04的。

+0

您是否使用过chkconfig? – tedder42

+1

如果“不运行时启动elasticsearch服务”中的'enabled = yes'可能会有所帮助。 (在这种情况下,我并不是100%确定'流浪汉'是否等于启动)。 –

+0

@knowhy我试过一些方法来成功地做到这一点。我更新了我的答案。我会尝试你的建议。 –

回答

1

您需要“启用”服务。这可以通过Ansible中的单个标志完成。

--- 
- hosts: master 
    sudo: true 
    tags: elasticsearch 
    roles: 
    - ansible-elasticsearch 
    tasks: 
    - name: Starting elasticsearch service if not running 
    service: 
     name: elasticsearch 
     state: started 
     enabled: true 

此外,根据您所使用的ansible-elasticsearch的作用,它可能已经有可以传递启用的服务没有额外任务的标志。我知道我用过的角色。

+0

这工作。非常感谢。比我做得好多了! –

0

该解决方案适用于Debian软件包。 可以包括在VagrantFile如下:

config.vm.provision "shell", path: "restart_es.sh" 

其中restart_es.sh包含:

#!/bin/bash 
SERVICE=elasticsearch; 
sudo update-rc.d $SERVICE defaults 95 10 
if ps ax | grep -v grep | grep $SERVICE > /dev/null 
then 
    echo "$SERVICE service running, everything is fine" 
else 
    echo "$SERVICE is not running" 
    sudo /etc/init.d/$SERVICE start 
fi 

OR

config.vm.provision "shell", path: "restart_es.sh", run: "always" 

其中restart_es.sh包含:

#!/bin/bash 
SERVICE=elasticsearch; 
if ps ax | grep -v grep | grep $SERVICE > /dev/null 
then 
    echo "$SERVICE service running, everything is fine" 
else 
    echo "$SERVICE is not running" 
    sudo service $SERVICE start 
fi 

OR

config.vm.provision "shell", inline: "sudo service elasticsearch start", run: "always" 

所有这三个,当你重新启动游民盒启动elasticsearch服务。