Автоматизированное развертывание неупакованных материалов

Мне придется развернуть некоторые пользовательские машины, где программное обеспечение в основном устанавливается вручную, что означает: tarball загружается и распаковывается в один каталог, исходные пакеты python устанавливаются в virtualenvs и тому подобное (нет, его нельзя изменить).

Основным требованием является то, что переход от свежего к развернутому должен быть быстрым и автоматизированным, поэтому в идеале, когда у меня будет новый компьютер, запустите скрипт, который сделает все это.

Мне кажется, что этот материал нелегко развернуть, используя стандартные инструменты кукол и т. Д. Я смотрел на ткань, которая кажется более подходящей для этого сценария. Что люди используют / рекомендуют?

2 ответа

Я использую ткань для автоматизации конфигурации сервера. Вы можете легко написать кучу команд, которые устанавливают 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.

Другие вопросы по тегам