Назад | Перейти на главную страницу

Puppet не может запустить службу, которую можно запустить вручную?

В Debian я написал простой сценарий инициализации для приложения Pyramid, используя pserve. Я не уверен на 100%, что он полный / правильный, но пока работает:

DAEMON="/home/project/.virtualenvs/project/bin/pserve /home/project/production.ini"
PIDFILE=/home/project/project.pid
USER=project
GROUP=project
CWD=/home/project
LOGFILE=/home/project/project.appserver.log

case "$1" in
  start|stop|restart|status)
    echo "$1 project app server: "
    cd $CWD
    $DAEMON $1 --pid-file=$PIDFILE --user=$USER --group=$GROUP --log-file=$LOGFILE
    RETVAL=$?
    if [ "$RETVAL" -eq "0" ]; then
        echo "Success"
    fi
    ;;
  *)
    echo "Usage: /etc/init.d/project {start|stop|restart|status}"
    exit 1
    ;;
esac

exit 0

Когда я вхожу в систему как root, я могу без проблем выполнить следующее:

~# service project start
start project app server: 
Changing user to project:project (200:1001)
Entering daemon mode
Success

Я добавил в конфигурацию Puppet для машины следующее:

  file { '/etc/init.d/project':
    ensure => present,
    group => 'root',
    mode => 'a=rx,u+w',
    owner => 'root',
    source => 'puppet:///modules/project/project.init',
  }

  service { 'project':
    enable => true,
    ensure => running,
    require => File['/etc/init.d/project'],
  }

Однако когда я бегу puppet agent --test, служба не остается в рабочем состоянии. Когда я смотрю в файл журнала проекта, я вижу следующее:

...
  File "/home/project/.virtualenvs/project/lib/python2.7/site-packages/project-0.0-py2.7.egg/project/model/__init__.py", line 1, in <module>
    from base import Base, DBSession, initialize_sql
  File "/home/project/.virtualenvs/project/lib/python2.7/site-packages/project-0.0-py2.7.egg/project/model/base.py", line 1, in <module>
    from sqlalchemy import Column, engine_from_config
  File "build/bdist.linux-x86_64/egg/sqlalchemy/__init__.py", line 52, in <module>

  File "build/bdist.linux-x86_64/egg/sqlalchemy/types.py", line 33, in <module>
    except NameError:
  File "build/bdist.linux-x86_64/egg/sqlalchemy/processors.py", line 98, in <module>
  File "build/bdist.linux-x86_64/egg/sqlalchemy/cprocessors.py", line 7, in <module>
  File "build/bdist.linux-x86_64/egg/sqlalchemy/cprocessors.py", line 4, in __bootstrap__
  File "build/bdist.linux-i686/egg/pkg_resources.py", line 882, in resource_filename
  File "build/bdist.linux-i686/egg/pkg_resources.py", line 1351, in get_resource_filename
  File "build/bdist.linux-i686/egg/pkg_resources.py", line 1373, in _extract_resource
  File "build/bdist.linux-i686/egg/pkg_resources.py", line 962, in get_cache_path
  File "build/bdist.linux-i686/egg/pkg_resources.py", line 928, in extraction_error
pkg_resources.ExtractionError: Can't extract file(s) to egg cache

The following error occurred while trying to extract file(s) to the Python egg
cache:

  [Errno 13] Permission denied: '/root/.python-eggs'

The Python egg cache directory is currently set to:

  /root/.python-eggs

Как я уже отмечал, вход в систему как root и запуск, кажется, работают нормально. Я бы предположил, что Puppet делает что-то подобное. Что недостает?

Проблема в том, что ваш кеш яиц Python пытается записать в корневой каталог. Добавьте в свой сценарий следующее.

export PYTHON_EGG_CACHE=/var/tmp