nginx_conf ресурс
Используйте ресурс Chef InSpec, чтобы проверить данные конфигурации сервера NGINX, расположенного по адресу /etc/nginx/nginx.conf в Linux и Unix.
Стабильность: Экспериментальная
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс впервые стал доступен в версии v1.37.6 InSpec.
Синтаксис
Блок ресурса nginx_conf объявляет данные конфигурации клиента NGINX, которые должны быть проверены:
describe nginx_conf.params['pid'].flatten do
it { should cmp 'logs/nginx.pid' }
end
где
-
nginx_conf— ресурс для ссылки на вашу конфигурацию NGINX -
params— доступ к всем параметрам -
params['pid']— выбирает записьpidиз глобальной конфигурации NGINX -
{ should cmp 'logs/nginx.pid' }— проверяет, установлен ли PID в значениеlogs/nginx.pid(черезcmpmatcher)
Параметры можно получить либо через params, либо через синтаксис its:
describe nginx_conf do
its('pid') { should cmp 'logs/nginx.pid' }
end
Синтаксис its позволяет создать более описательный блок и доступен в ресурсах nginx_conf, nginx_conf.http.entries, и nginx_conf.http.servers.
Примеры
Следующие примеры показывают, как использовать этот ресурс проверки аудита Chef InSpec.
Найти конкретный сервер
servers = nginx_conf.servers
domain2 = servers.find { |s| s.params['server_name'].flatten.include? 'domain2.com' }
describe 'No server serves domain2' do
subject { domain2 }
it { should be_nil }
end
Проверить сырой параметр
describe nginx_conf.params['worker_processes'].flatten do
it { should cmp 5 }
end
# Or when using `its` syntax
describe nginx_conf do
its('worker_processes') { should cmp 5 }
end
Матчеры
Полный список доступных матчеров доступен на нашей странице матчеров.
http
Получает все http записи в файле конфигурации.
nginx_conf.http
=> nginx_conf /etc/nginx/nginx.conf, http entries
Он предоставляет дополнительный доступ ко всем отдельным записям, серверам и расположениям.
nginx_conf.http.entries
=> [nginx_conf /etc/nginx/nginx.conf, http entry ...]
nginx_conf.http.servers
=> [nginx_conf /etc/nginx/nginx.conf, server entry ...]
nginx_conf.http.locations
=> [nginx_conf /etc/nginx/nginx.conf, location entry ...]
Вы можете получить доступ к каждому из них из массива и дополнительно проверить его (см. ниже).
серверы
Получает все servers записи в конфигурации:
# all servers across all configs aggregated:
nginx_conf.servers
=> [nginx_conf /etc/nginx/nginx.conf, server entry ...]
# servers that belong to a specific http entry:
nginx_conf.http.entries[0].servers
=> [nginx_conf /etc/nginx/nginx.conf, server entry ...]
Серверы предоставляют доступ ко всем их расположениям, родительской записи http и сырым параметрам:
server = nginx_conf.servers[0]
server.locations
=> [nginx_conf /etc/nginx/nginx.conf, location entry ...]
server.parent
=> nginx_conf /etc/nginx/nginx.conf, http entry
server.params
=> {"listen"=>[["85"]],
"server_name"=>[["domain1.com", "www.domain1.com"]],
"root"=>[["html"]],
"location"=>[{"_"=>["~", "\\.php$"], "fastcgi_pass"=>[["127.0.0.1:1025"]]}]}
расположения
Получает все location записи в конфигурации:
# all locations across all configs aggregated:
nginx_conf.locations
=> [nginx_conf /etc/nginx/nginx.conf, location entry ...]
# locations of a http entry aggregated:
nginx_conf.http.entries[0].locations
=> [nginx_conf /etc/nginx/nginx.conf, location entry ...]
# locations of a specific server:
nginx_conf.servers[0].locations
=> [nginx_conf /etc/nginx/nginx.conf, location entry ...]
Расположения предоставляют доступ к родительской записи сервера и сырым параметрам:
location = nginx_conf.locations[0]
location.parent
=> nginx_conf /etc/nginx/nginx.conf, server entry
location.params
=> {"_"=>["~", "\\.php$"], "fastcgi_pass"=>[["127.0.0.1:1025"]]}
Путь к файлу конфигурации
Если файл конфигурации NGINX не расположен по умолчанию, /etc/nginx/nginx.conf, путь можно указать как первый параметр блока describe:
describe nginx_conf('/opt/nginx/nginx.conf').params['pid'] do
it { should cmp 'logs/nginx.pid' }
end
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/nginx_conf/