Dgoss — как и goss, является утилитой для проверки конфигурации, но предназначен для работы с контейнерами. Конкретно о goss можно почитать в предыдущей заметке, материал оттуда пригодится здесь.
Dgoss установится вместе с goss после выполнения команды:
# curl -fsSL https://goss.rocks/install | sh
Далее, попробуем протестировать контейнер, например, с Nginx’ом. Допустим что Docker у нас уже установлен и запущен. Выполняем команду:
[root@dgoss ~]# dgoss edit nginx INFO: Starting docker container INFO: Container ID: 0304245a INFO: Run goss add/autoadd to add resources #
Мы оказываемся в консоли контейнера с Nginx’ом. Добавим для проверки сам Nginx, его логи и проверку http ответа от локалхоста, для этого, будучи в контейнере выполняем команды:
# goss autoadd nginx # goss add file /var/log/nginx/access.log /var/log/nginx/error.log # goss add http http://localhost
Как только всё будет сделано, выходим из контейнера. При этом, контейнер завершит свою работу, а dgoss создаст goss.yaml файл для дальнейшего тестирования.
# exit INFO: Copied '/goss/goss.yaml' from container to '.' INFO: Deleting container [root@dgoss ~]#
Теперь нам остаётся просто запустить тест контейнера, и получить отчёт от dgoss о соответствии его конфигу:
# dgoss run nginx INFO: Starting docker container INFO: Container ID: e254e843 INFO: Sleeping for 0.2 INFO: Running Tests File: /var/log/nginx/error.log: exists: matches expectation: [true] File: /var/log/nginx/error.log: mode: matches expectation: ["0777"] File: /var/log/nginx/error.log: owner: matches expectation: ["root"] File: /var/log/nginx/error.log: group: matches expectation: ["root"] File: /var/log/nginx/error.log: linkedto: matches expectation: ["/dev/stderr"] File: /var/log/nginx/error.log: filetype: matches expectation: ["symlink"] File: /var/log/nginx/error.log: size: matches expectation: [11] Process: nginx: running: matches expectation: [true] File: /var/log/nginx/access.log: exists: matches expectation: [true] File: /var/log/nginx/access.log: mode: matches expectation: ["0777"] File: /var/log/nginx/access.log: owner: matches expectation: ["root"] File: /var/log/nginx/access.log: group: matches expectation: ["root"] File: /var/log/nginx/access.log: linkedto: matches expectation: ["/dev/stdout"] File: /var/log/nginx/access.log: filetype: matches expectation: ["symlink"] File: /var/log/nginx/access.log: size: matches expectation: [11] User: nginx: exists: matches expectation: [true] User: nginx: uid: matches expectation: [101] User: nginx: gid: matches expectation: [101] User: nginx: home: matches expectation: ["/nonexistent"] User: nginx: groups: matches expectation: [["nginx"]] User: nginx: shell: matches expectation: ["/bin/false"] Port: tcp:80: listening: matches expectation: [true] Port: tcp:80: ip: matches expectation: [["0.0.0.0"]] Group: nginx: exists: matches expectation: [true] Group: nginx: gid: matches expectation: [101] HTTP: http://localhost: status: matches expectation: [200] Package: nginx: installed: matches expectation: [true] Package: nginx: version: matches expectation: [["1.13.6-1~stretch"]] Service: nginx: enabled: matches expectation: [true] Service: nginx: running: matches expectation: [true] Total Duration: 0.052s Count: 30, Failed: 0, Skipped: 0 INFO: Deleting container
Таким образом, администратор может очень легко создавать нужные ему тесты для контейнеров и использовать их в своей работе. При создании тестов, особенно если плотно с goss\dgoss ранее работать не приходилось, имеет смысл заглянуть на Github в примеры и документацию.