Мне придется развернуть несколько пользовательских машин, на которых программное обеспечение в основном устанавливается вручную, что означает: tarball загружается и распаковывается в один каталог, исходные пакеты python устанавливаются в virtualenvs и тому подобное (нет, это нельзя изменить).
Основное требование состоит в том, что переход от свежего к развернутому должен быть быстрым и автоматизированным, поэтому в идеале, когда у меня появится новая машина, запустите сценарий, который сделает все это.
Мне кажется, что этот материал нелегко развернуть с помощью стандартных инструментов марионетки и т. Д. Я искал ткань, которая кажется более подходящей для этого сценария. Что люди используют / рекомендуют?
Я использую фабрику для автоматизации настройки сервера. Вы можете легко написать кучу команд, которые устанавливают nginx, supervisor, virtualenv и т. Д. Я могу опубликовать часть своего fabfile:
@task
def setup_sys_installs():
"""
Note
----
You can always use 'sudo apt-get build-dep <python-package>' to
install some prerequisites for packages like gevent or lxml.
"""
print('=== SETUP LIBRARIES ====')
sudo('apt-get -y update')
sudo('apt-get -y install python-virtualenv python-pip python2.7 mercurial')
# you need this to pip install any compilled library
sudo('apt-get -y install python-dev build-essential')
# you need this need this to pip install gevent
sudo('apt-get -y install libevent-dev')
# you need this need this to pip install psycopg2
sudo ("apt-get -y install libpq-dev")
# you need this need this to pip install lxml
sudo('apt-get -y install libxml2-dev libxslt-dev')
# you need this need this to pip install m2crypto
sudo('apt-get -y install swig')
@task
def sync_virtualenv():
with cd(env.PROJECT_DIR):
cmd = "%s/bin/pip install -r requirements/production.txt" % (env.VENV,)
sudo(cmd, user=env.VENV_USER)
@task
def setup_virtualenv():
print('=== SETUP VIRTUALENV ====')
with cd(env.HOME):
sudo("virtualenv -p /usr/bin/python2.7 venv", user=env.VENV_USER)
sync_virtualenv()
Дайте мне комментарий, если вас интересуют подробности.
Узнайте, как упаковать программное обеспечение и создать свой собственный репозиторий. Это совсем несложно, и вам не нужно изобретать что-то еще для автоматизации развертывания, вы можете просто использовать puppet для установки пакетов из собственного репозитория yum или apt.