Dgoss

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 в примеры и документацию.

@SysadminNotes | https://sysadmin.pm

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *