在资源'service [nginx]'上执行动作`start`时出错

时间:2014-12-17 09:30:43

标签: nginx chef chef-recipe cookbook

我正在尝试使用yum cookbook作为依赖在AMI机器上安装nginx。

这就是我的nginx / recipe / default.rb的样子,

include_recipe "yum"


yum_repository 'epel' do
    mirrorlist 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-7&arch=$basearch'
    description 'Extra Packages for Enterprise Linux 7 - $basearch'
    enabled true
    gpgcheck true
    gpgkey 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7'
end

yum_repository "nginx" do
    name 'nginx_repo'
    baseurl  'http://nginx.org/packages/rhel/7/$basearch/'
    enabled true
    gpgcheck true
    #gpgkey      'http://nginx.org/keys/nginx_signing.key'
    action :create
end


package "nginx" do

      action :install
end


template "nginx.conf" do
      source "nginx.conf.erb"
      path "#{node['nginx']['dir']}/nginx.conf"
      action  :create
      mode 0644
end


template "default.conf" do
      source "default.conf.erb"
      path "#{node['nginx']['dir']}/conf.d/default.conf"
      action :create
      mode 0644
end


service 'nginx' do
      #supports :restart => :true
      action [:enable, :start]
end

另外,我添加了'取决于" yum" '在metadata.rb

试图运行' sudo chef-client'在客户端服务器上,我收到以下错误:

[2014-12-17T08:53:03+00:00] WARN: 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SSL validation of HTTPS requests is disabled. HTTPS connections are still
encrypted, but chef is not able to detect forged replies or man in the middle
attacks.

To fix this issue add an entry like this to your configuration file:

````
# Verify all HTTPS connections (recommended)
ssl_verify_mode :verify_peer

# OR, Verify only connections to chef-server
verify_api_cert true
````

To check your SSL configuration, or troubleshoot errors, you can use the
`knife ssl check` command like so:

```
knife ssl check -c /etc/chef/client.rb
```

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Starting Chef Client, version 11.16.4
resolving cookbooks for run list: ["yum", "nginx"]
Synchronizing Cookbooks:
  - nginx
  - yum
Compiling Cookbooks...
Converging 7 resources
Recipe: yum::default
* yum_globalconfig[/etc/yum.conf] action create
* template[/etc/yum.conf] action create (up to date)
 (up to date)
Recipe: nginx::default
* yum_repository[epel] action create
* template[/etc/yum.repos.d/epel.repo] action create (up to date)
* execute[yum-makecache-epel] action nothing (skipped due to action :nothing)
* ruby_block[yum-cache-reload-epel] action nothing (skipped due to action :nothing)
 (up to date)
* yum_repository[nginx_repo] action create
* template[/etc/yum.repos.d/nginx_repo.repo] action create (up to date)
* execute[yum-makecache-nginx_repo] action nothing (skipped due to action :nothing)
* ruby_block[yum-cache-reload-nginx_repo] action nothing (skipped due to action :nothing)
 (up to date)
* package[nginx] action install (up to date)
* template[nginx.conf] action create (up to date)
* template[default.conf] action create (up to date)
* service[nginx] action enable (up to date)
* service[nginx] action start

================================================================================
Error executing action `start` on resource 'service[nginx]'
================================================================================

Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of /sbin/service nginx start ----
STDOUT: Starting nginx: [FAILED]
STDERR: nginx: [emerg] invalid log level "pid" in /etc/nginx/nginx.conf:5
---- End output of /sbin/service nginx start ----
Ran /sbin/service nginx start returned 1

Resource Declaration:
---------------------
# In /var/chef/cache/cookbooks/nginx/recipes/default.rb

 53: service 'nginx' do
 54:   #supports :restart => :true
 55:   action [:enable, :start]
 56: end
 57: 

Compiled Resource:
------------------
# Declared in /var/chef/cache/cookbooks/nginx/recipes/default.rb:53:in `from_file'

service("nginx") do
  action [:enable, :start]
  supports {:restart=>false, :reload=>false, :status=>true}
  retries 0
  retry_delay 2
  guard_interpreter :default
  service_name "nginx"
  enabled true
  pattern "nginx"
  cookbook_name "nginx"
  recipe_name "default"
end


Running handlers:
[2014-12-17T08:53:05+00:00] ERROR: Running exception handlers
Running handlers complete
[2014-12-17T08:53:05+00:00] ERROR: Exception handlers complete
[2014-12-17T08:53:05+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out

Chef Client failed. 0 resources updated in 2.259546529 seconds

[2014-12-17T08:53:05+00:00] ERROR: service[nginx] (nginx::default line 53) had an error:      Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'
---- Begin output of /sbin/service nginx start ----
STDOUT: Starting nginx: [FAILED]
STDERR: nginx: [emerg] invalid log level "pid" in /etc/nginx/nginx.conf:5
---- End output of /sbin/service nginx start ----
Ran /sbin/service nginx start returned 1
[2014-12-17T08:53:05+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited  unsuccessfully (exit code 1)

2 个答案:

答案 0 :(得分:1)

我认为日志很清楚:

STDERR: nginx: [emerg] invalid log level "pid" in /etc/nginx/nginx.conf:5

你的nginx.conf.erb文件出现问题,因为它写了一个log_level = pid而不是info / error。

答案 1 :(得分:0)

这与Chef没什么关系。重要的细节是:

  

nginx:[emerg] /etc/nginx/nginx.conf:5中的无效日志级别“pid”