سؤال

أنا جديد في Chef/OpsWorks وأحاول الحصول على وصفة بسيطة لتثبيت Django 1.6 على نسخة Ubuntu 12.04:

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

يبدو أن موفري الخدمة/pip.rb وproviders/virtualenv.rb يتجاوزون ما تم تحميله بالفعل ظاهريًا:

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!

ولكن عندما أحاول استخدام python_pip أتلقى خطأ:

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

لقد حاولت إضافة depends "python" في metadata.rb الخاص بي، ولكن هذا لم يساعد.هي موضع تقدير أي اقتراحات.

هيكل الدليل الخاص بي لكتاب الطبخ الخاص بي "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
هل كانت مفيدة؟

المحلول

لا تحاول تعديل كتاب طبخ بايثون إلا إذا كان لا يفعل ما تحتاجه بالفعل.يجب أن يبدو دليل كتب الطبخ الخاص بك على الأقل كما يلي:

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>

هذا كل شيء، لا حاجة لتعديل كتاب الطبخ بايثون.الآن فقط قم بتعيين قائمة التشغيل الخاصة بك على [ "python", "application_cookbook" ] وأنت على ما يرام.

نصائح أخرى

قبل أن تتمكن من استخدام python_pip LWRP، يجب أن يكون لديك لغة python في قائمة التشغيل الخاصة بك أو include_recipe "python" ضمن الوصفة الخاصة بك.

فيما يلي مثال يفترض أن لديك مستخدمًا اسمه dj مع إعداد الدليل الرئيسي بالفعل.

# 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top