Spec-Zone.ru › Chef 16

nginx_conf ресурс

[редактировать на GitHub]

Используйте 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'] 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 матчер)

Примеры

Следующие примеры показывают, как использовать этот ресурс проверки аудита 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

Матчеры

Полный список доступных матчеров можно найти на нашей странице матчеров.

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