Эта роль Ansible был создан и это .travis.yml был использован в качестве примера для проверки роли. Все сервисы смогли запуститься, кроме sensu-client.
Попытки решить проблему
Чтобы решить проблема в travis добавлен шаг отладки. Когда сборка завершилась, возникла следующая ошибка:
The command "sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test-${SITE}.yml | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && exit 1)
" exited with 1.
0.07s$ sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm sudo systemctl status sensu-client.service -l
● sensu-client.service - LSB: Sensu monitoring framework client
Loaded: loaded (/etc/rc.d/init.d/sensu-client)
Active: failed (Result: exit-code) since Mon 2016-08-08 00:18:20 UTC; 131ms ago
Docs: man:systemd-sysv-generator(8)
Process: 1534 ExecStart=/etc/rc.d/init.d/sensu-client start (code=exited, status=1/FAILURE)
Aug 08 00:18:19 c6354976113c systemd[1]: Starting LSB: Sensu monitoring framework client...
Aug 08 00:18:19 c6354976113c sensu-client[1534]: /etc/init.d/sensu-service: line 71: /etc/init.d/functions: No such file or directory
Aug 08 00:18:19 c6354976113c sensu-client[1534]: Starting sensu-client/etc/init.d/sensu-service: line 79: daemon: command not found
Aug 08 00:18:20 c6354976113c sensu-client[1534]: /etc/init.d/sensu-service: line 88: echo_failure: command not found
Aug 08 00:18:20 c6354976113c systemd[1]: sensu-client.service: control process exited, code=exited status=1
Aug 08 00:18:20 c6354976113c systemd[1]: Failed to start LSB: Sensu monitoring framework client.
Aug 08 00:18:20 c6354976113c systemd[1]: Unit sensu-client.service entered failed state.
Aug 08 00:18:20 c6354976113c systemd[1]: sensu-client.service failed.
Когда роль ansible развернута в удаленной системе, sensu-client запускается, но не работает на Travis, хотя другие службы могут запускаться.
Краткий
В initscripts
пакет отсутствовал. Это было обнаружено после сравнения файлов, находящихся в /etc/init.d
в локальной системе с теми, которые находятся в контейнере докеров, используемом Travis. После запроса /etc/init.d/functions
стало понятно, какой пакет нужно установить.
Подробный
Кажется, что файлы отсутствуют в /etc/init.d
, то есть:
Aug 08 00:18:19 c6354976113c sensu-client[1534]: /etc/init.d/sensu-service:
line 71: /etc/init.d/functions: No such file or directory
Это правда? Чтобы проверить, что был добавлен еще один шаг отладки: ls /etc/init.d
. Результат как следует:
$ sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ls /etc/init.d
README sensu-api sensu-client sensu-server sensu-service uchiwa
functions
действительно отсутствует. Эта почта указал, что initscripts
необходимо установить. когда этот пакет был добавлен в Dockerfile и сборка снова запустилась это удалось.