How to customise a tomcat recipe in Chef

吃可爱长大的小学妹 提交于 2019-12-29 01:57:25

问题


I've been trying to customise a tomcat chef recipe but nothing I'm doing seems to change the tomcat installation. I'm using vagrant ie.

vagrant destroy && vagrant up

In Vagrantfile

  config.vm.provision :chef_solo do |chef|
      chef.add_recipe "apt"
      chef.add_recipe "nginx-app"
      chef.add_recipe "tomcat-app"
   end

cookbooks/tomcat-app/recipes/default.rb

#
# Cookbook Name:: tomcat-app
# Recipe:: default

package "tomcat7" do
  action :install
end

cookbooks/tomcat-app/attributes.rb

node.default["tomcat"]["port"] = 8083 <-- can't seem to make this apply

Thanks,


回答1:


I suspect you're writing your own tomcat cookbook? The node attribute overrides only work with the open source cookbooks documented here:

  • java
  • tomcat

Example

This is a test kitchen example that leverages vagrant.

├── .kitchen.yml
├── Berksfile
└── test
    └── integration
        ├── default
        │   └── serverspec
        │       └── tomcat_spec.rb
        └── roles
            └── tomcat.json

The "tomcat" role illustrates how to set the run-list and override the attributes.

.kitchen.yml

---
driver:
  name: vagrant

provisioner:
  name: chef_zero

platforms:
  - name: ubuntu-14.04

suites:
  - name: default
    run_list:
      - role[tomcat]
    attributes:

test/integration/roles/tomcat.json

{
  "name": "tomcat",
  "description": "Runs tomcat with oracle JDK",
  "override_attributes": {
    "java": {
      "jdk_version": 8,
      "install_flavor": "oracle",
      "oracle": {
        "accept_oracle_download_terms": true
      }
    },
    "tomcat": {
      "base_version": 7,
      "port": 8081
    }
  },
  "run_list": [
    "recipe[apt]",
    "recipe[java]",
    "recipe[tomcat]"
  ]
}

Berksfile

Berkshelf automatically downloads cookbooks from the chef supermarket.

source 'https://supermarket.chef.io'

cookbook "apt"
cookbook "java"
cookbook "tomcat"

test/integration/serverspec/tomcat_spec.rb

require 'serverspec'

set :backend, :exec

describe service('tomcat7') do
  it { should be_running }
end

describe port('8081') do
  it { should be_listening }
end

describe process('java') do
  it { should be_running }
  its(:args) { should match /org.apache.catalina.startup.Bootstrap/ }
end


来源:https://stackoverflow.com/questions/31073884/how-to-customise-a-tomcat-recipe-in-chef

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!