Spec-Zone.ru › Chef 17

nginx_conf ресурс

[править на GitHub]

Используйте ресурс 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 (через cmp matcher)

Параметры можно получить либо через 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API