我使用this角色安装了elasticsearch
。
我在剧本中执行以下步骤:
---
- hosts: master
sudo: true
tags: elasticsearch
roles:
- ansible-elasticsearch
然后是vagrant up es-test-cluster
,其中es-test-cluster
是我在VagrantFile
中提到的VM的名称。我已经给它一个私人IP 192.162.12.14
。 VM完全启动并在运行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 :(得分: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角色,它可能已经有一个标志,您可以传递该标志以启用该服务而无需额外任务。我知道我用过的角色。
答案 1 :(得分: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
服务。