2016-03-21 95 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服務。