Question

Je suis nouveau sur Chef/OpsWorks et j'essaie une recette simple pour installer Django 1.6 sur une instance Ubuntu 12.04 :

python_pip "Django" do
    version "1.6"
    action :install
end

Mes fournisseurs/pip.rb et fournisseurs/virtualenv.rb semblent remplacer ce qui, apparemment, était déjà chargé :

DEBUG: Loading cookbook python's providers from /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/pip.rb

DEBUG: Loaded contents of /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/pip.rb into a provider named python_pip defined in Chef::Provider::PythonPip

DEBUG: Loading cookbook python's providers from /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/virtualenv.rb

DEBUG: Loaded contents of /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/virtualenv.rb into a provider named python_virtualenv defined in Chef::Provider::PythonVirtualenv

DEBUG: Loading cookbook python's providers from /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/pip.rb

INFO: PythonPip light-weight provider already initialized -- overriding!

DEBUG: Loaded contents of /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/pip.rb into a provider named python_pip defined in Chef::Provider::PythonPip

DEBUG: Loading cookbook python's providers from /opt/aws/opsworks/releases/20131107153140_213/site-cookbooks/python/providers/virtualenv.rb

INFO: PythonVirtualenv light-weight provider already initialized -- overriding!

Mais lorsque j'essaie d'utiliser python_pip, je reçois une erreur :

ERROR: Caught exception while compiling OpsWorks custom run list: NameError - Cannot find a resource for python_pip on ubuntu version 12.04 

J'ai essayé d'ajouter depends "python" dans mon metadata.rb, mais cela n'a pas aidé.Toutes les suggestions sont appréciées.

Ma structure de répertoires de mon livre de recettes 'python' :

.
├── python
│   ├── attributes
│   │   └── default.rb
│   ├── metadata.rb
│   ├── providers
│   │   ├── pip.rb
│   │   └── virtualenv.rb
│   ├── recipes
│   │   ├── default.rb
│   │   ├── django.rb
│   │   ├── package.rb
│   │   ├── pip.rb
│   │   ├── source.rb
│   │   └── virtualenv.rb
│   ├── specs
│   │   └── configure_spec.rb
│   └── templates
│       └── default
└── README.md
Était-ce utile?

La solution

N'essayez pas de modifier le livre de recettes Python à moins qu'il ne fasse déjà ce dont vous avez besoin.Votre répertoire de livres de cuisine devrait au minimum ressembler à :

cookbooks/
    ├─python/ <clone of https://github.com/poise/python>
    |
    └─application_cookbook/
        ├─recipes/
        |   └─default.rb <containing the resource declaration you have in the question>
        └─metadata.rb <with a `depends "python"` statement in it>

Voilà, pas besoin de modifier le livre de recettes python.Maintenant, définissez simplement votre liste de courses sur [ "python", "application_cookbook" ] et tu es prêt à partir.

Autres conseils

Avant de pouvoir utiliser le python_pip LWRP, vous devez soit avoir python dans votre liste d'exécution, soit include_recipe "python" dans votre propre recette.

Voici un exemple qui suppose que vous avez un utilisateur nommé dj avec un répertoire personnel déjà configuré.

# Note that the recipe will install Python, setuptools and pip
include_recipe "python"


# Create a virtual environment
python_virtualenv '/home/dj/virtenv' do
   interpreter "python2.7"
   owner 'dj'
   group 'dj'
   action :create
end

# Install Django to a virtualenv
python_pip "django" do
   virtualenv '/home/dj/virtenv'
   user 'dj'
   group 'dj'
   action :install
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top