Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How would you install a python module with chef?

We're using EngineYard which has Python installed by default. But when we enabled SSL we received the following error message from our logentries chef recipe.

"WARNING: The "ssl" module is not present. Using unreliable workaround, host identity cannot be verified. Please install "ssl" module or newer version of Python (2.6) if possible."

I'm looking for a way to install the SSL module with chef recipe but I simply don't have enough experience. Could someone point me in the right direction?

Resources: Logentries chef recipe: https://github.com/logentries/le_chef

Logentries EY docs: https://logentries.com/doc/engineyard/

SSL Module: http://pypi.python.org/pypi/ssl/

like image 432
John Avatar asked Nov 27 '12 11:11

John


People also ask

How do I install chef packages?

Installing Packages from Third-Party RepoStep 1 − Edit the default recipe of the cookbook. Step 2 − Edit the metadata to add dependency on the apt cookbook. Step 3 − Upload the modified cookbook to the Chef server. Step 4 − Validate that the package you are trying to install, is not yet installed.


2 Answers

There now appears to be a solution with better community support (based on the fact that it is documented on the opscode website).

You might try:

include_recipe 'python'
python_pip 'ssl'

As documented: here or here

like image 197
Nathan Buesgens Avatar answered Oct 23 '22 19:10

Nathan Buesgens


I just wrote a recipe for this, and now am able to run the latest Logentries client on EngineYard. Here you go:

file_dir = "/mnt/src/python-ssl"
file_name = "ssl-1.15.tar.gz"
file_path = File.join(file_dir,file_name)
uncompressed_file_dir = File.join(file_dir, file_name.split(".tar.gz").first)

directory file_dir do
  owner "deploy"
  group "deploy"
  mode "0755"
  recursive true
  action :create
end

remote_file file_path do
  source "http://pypi.python.org/packages/source/s/ssl/ssl-1.15.tar.gz"
  mode "0644"
  not_if { File.exists?(file_path) }
end

execute "gunzip ssl" do
  command "gunzip -c #{file_name} | tar xf -"
  cwd file_dir
  not_if { File.exists?(uncompressed_file_dir) }
end

installed_file_path = File.join(uncompressed_file_dir, "installed")

execute "install python ssl module" do
  command "python setup.py install"
  cwd uncompressed_file_dir
  not_if { File.exists?(installed_file_path) }
end

execute "touch #{installed_file_path}" do
  action :run
end
like image 44
gaveeno Avatar answered Oct 23 '22 20:10

gaveeno