Estou tentando iniciar um daemon personalizado a partir de um script cloudformation :: init. O /etc/init.d/myservice é totalmente funcional; se eu fizer o login após o término do cfn-init,
sudo service myservice start
se comporta como esperado.
Há duas maneiras de ver isso para iniciar isso diretamente no script cloudformation e não consigo fazer nada disso funcionar:
(1) Usando a estrutura cfn-init :: services
(2) iniciando manualmente o script usando um comando cfn-init ::.
(1) aqui está a parte relevante do config.json como um serviço:
"Metadata": {
"AWS::CloudFormation::Init": {
"configSets": {
"ascending": [
"config5"
],
"default": [
"config5"
]
},
"config5": {
"services": {
"myservice": {
"enabled": "true",
"ensureRunning": "true"
}
}
}
}
}
Qual produz o erro:
2015-04-16 06:24:25,541 [INFO] -----------------------Starting build-----------------------
2015-04-16 06:24:25,856 [INFO] Running configSets: ascending
2015-04-16 06:24:25,856 [INFO] Running configSet ascending
2015-04-16 06:24:49,942 [INFO] Running config config5
2015-04-16 06:24:49,942 [WARNING] Unsupported service manager: myservice
2015-04-16 06:24:49,945 [INFO] ConfigSets completed
2015-04-16 06:24:49,949 [INFO] -----------------------Build complete-----------------------
Isto faz / não / produz um serviço em execução - não falha, nunca é iniciado. Parece haver aqui um pré-requisito de instalação que não posso encontrar documentado. Pacotes instalados pelo Yum (nginx, tomcat, etc) são iniciados sem avisos.
(2) Retrocedendo manualmente os trabalhos de serviço, no sentido em que o serviço é iniciado. No entanto, o serviço é executado como seu próprio usuário e algo parece se perder no serviço cfn, já que essa etapa na configuração nunca é concluída, o que impede a execução de qualquer outro conjunto de configurações. Montar / opt in config1 é um pouco irrelevante, incluí-lo para mostrar como são os comandos que são completos nos logs.
Então a configuração relevante seria:
"Metadata": {
"AWS::CloudFormation::Init": {
"configSets": {
"ascending": [
"config1",
"config5"
],
"default": [
"config5"
]
},
"config1": {
"commands": {
"mount1": {
"command": "umount /dev/xvdc"
},
"mount2": {
"command": "mount /dev/xvdc /opt"
}
}
},
"config5": {
"commands": {
"first_launch": {
"command": "/etc/init.d/myservice start"
}
}
}
}
}
Que produz o log:
2015-04-16 06:24:25,541 [INFO] -----------------------Starting build-----------------------
2015-04-16 06:24:25,856 [INFO] Running configSets: ascending
2015-04-16 06:24:25,856 [INFO] Running configSet ascending
2015-04-16 06:24:25,860 [INFO] Running config config1
2015-04-16 06:24:25,876 [INFO] Command mount1 succeeded
2015-04-16 06:24:25,901 [INFO] Command mount2 succeeded
2015-04-16 06:24:49,942 [INFO] Running config config5
Novamente, no prompt de comando, o comando service produz um serviço em execução e a saída esperada:
bash-4.1$ sudo service myservice start
Starting MyService: STARTED MyService Thu Apr 16 06:58:27 EDT 2015
-bash-4.1$
Que tipo de retorno o cfn-init está procurando?
Obrigado!