在创建服务之前处理的厨师模板

时间:2015-12-10 06:45:21

标签: nginx chef chef-recipe aws-opsworks

我在AWS OpsWorks中运行Chef 12时遇到问题。

基本上,部署期间我的部署配方之一会为部署的每个应用程序创建一个NGINX-App.conf。这个工作正常。

但是我希望创建并运行此模板只有在服务器上安装NGINX时,如果我有一个实例而没有放置webserver / nginx。

我的run_list希望如此:

  1. 启用了nginx包,启动了nginx服务。
  2. 在部署期间,会创建特定于Nginx-app的配置文件。
  3. 我创建Nginx-app conf的方法如下:

      template 'nginx.conf' do
        path "/etc/nginx/conf.d/#{params[:something]}.conf"
        source 'nginxapp.conf.erb'
        cookbook 'nginx'
        owner 'root'
        group 'root'
        mode 0644
        notifies :reload, 'service[nginx]'
        only_if { File.exists?('/usr/sbin/nginx') }
      end
    

    如果我添加“only_if”条件,则会失败,因为在此模板处理之前似乎没有安装Nginx。

    如果我第二次运行它会正常工作,因为已经安装了nginx。

    有人知道这里有什么不对吗?

    此致 安德烈

1 个答案:

答案 0 :(得分:0)

显然我让它像这样工作:

  1. 已移动"模板"部分原创" nginx"做饭作为定义,只留下那里的部分。
  2. Inside Deploy cookbook / recipe我只是从" nginx"中调用这个自定义定义。创建模板的食谱。
  3. 这种文件存在且条件正常,我不知道为什么......

    使用其他菜谱中的模板是否与其他菜单之间的执行有关?