2015-02-17 3 views
1

У меня есть приложение Java, для которого атрибут spring передается через атрибут среды, как показано ниже.Specifing environment in chef

name "dev" 
description "The test environment" 
    override_attributes({"dspring" => {"active_profile" => "dev", 
             "jss_cert_location" => "/opt/mount1/certs/jssecacerts"}, 

Я ищу аналогичный подход, чтобы определить среду для приложения ruby ​​в шеф-поваре. Команда, используемая для выполнения этого приложения является:

/usr/local/bin/python2.7 /opt/mount2/ozz/current/src/main.py --port=8080 --debug --log_file_prefix=/opt/mount2/ozz/logs/ozz.log --log_file_max_size=1000000 --env=test 

Как я определить этот параметр «--env» в каждой среде повара (Dev, тест, этап & прод)?

Ниже приводится выдержка из рецепта:

ark 'python' do 
    url 'https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz' 
    path "/opt/mount1/" 
    owner 'python' 
    action :put 
end 

execute "cd #{node[:base_dir]}/python && ./configure && make && make altinstall" do 
    not_if { File.exists?('/usr/local/bin/python2.7') } 
end 

remote_file "#{node[:base_dir]}/get-pip.py" do 
    source "https://bootstrap.pypa.io/get-pip.py" 
    mode 00755 
    not_if { File.exists?("#{node[:base_dir]}/get-pip.py")} 
end 

execute "/usr/local/bin/python2.7 #{node[:base_dir]}/get-pip.py" 

cookbook_file "ua-parser-master.tar" do 
    path "/tmp/ua-parser-master.tar" 
    not_if { File.exists?('/tmp/ua-parser-master.tar') } 
end 

execute 'tar -C /tmp -xvf /tmp/ua-parser-master.tar && chown -R root.root /tmp/ua-parser-master/ && /usr/local/bin/pip install /tmp/ua-parser-master' 

execute '/usr/local/bin/pip install tornado pyyaml user-agents' 

template "/etc/init.d/#{node[:application_name]}" do 
    source 'python_init' 
    mode 00755 
    owner 'root' 
    group 'root' 
    variables(
    :application_name => node[:application_name], 
) 
end 

deploy_revision "/opt/mount1/#{node[:application_name]}" do 
    repo "#{node[:application_repo]}" 
    user "python" 
    keep_releases 10 
    action :deploy 
    migrate false 
    symlink_before_migrate.clear 
    create_dirs_before_symlink 
    purge_before_symlink.clear 
    symlinks.clear 
    symlinks {} 
    notifies :restart, "service[#{node[:application_name]}]" 
end 

service "#{node[:application_name]}" do 
    supports :restart => true 
    action :enable 
end 
+0

Можете ли вы поделиться кодом для своего рецепта, который отвечает за запуск/настройку вашего рубинового приложения? (Кстати, вы упомянули ruby-приложение, но в примере, похоже, это приложение python) – rastasheep

ответ

0

Если предположить, что окружение шашлычник соответствует параметру, который вы хотите передать, и что команда находится внутри этого шаблона:

template "/etc/init.d/#{node[:application_name]}" do 
    source 'python_init' 
    mode 00755 
    owner 'root' 
    group 'root' 
    variables(
    :application_name => node[:application_name], 
) 
end 

python_init шаблон линии для исполнения можно написать:

/usr/local/bin/python2.7 /opt/mount2/ozz/current/src/main.py --port=8080 --debug --log_file_prefix=/opt/mount2/ozz/logs/ozz.log --log_file_max_size=1000000 --env=<%= node.chef_environment %> 

Templat es в chef использовать erb для рендеринга финального файла.

  • <%= variable %> является заполнителем в ERB
  • node.chef_environment представляет собой метод к объекту узла Chef, которые дают имя окружения узла.
Смежные вопросы