8000 GitHub - Winand/fabricstages: Runs YAML/JSON scenarios in Fabric2
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Winand/fabricstages

Repository files navigation

Автоматическое развёртывание окружения Python на удалённом сервере

Для развёртывания ПО применяется библиотека Fabric поверх Invoke и Paramiko. Процесс обмена данными с удалённой машиной происходит по протоколу SSH.

Использование

Задачи, выполняемые Fabric, располагаются в файле fabfile.py. Запуск производится командой fab root@server task_name --arg1 val1 --arg2 val2. Для удобства написан скрипт PowerShell fabr.ps, который считывает параметры подключения к серверу из файла settings.json, а также подставляет имя задачи по умолчанию.

Например:

  • fabr server_alias -s test_scenario.json - запуск сценария из файла test_scenario.json на сервере с именем server_alias

Задачи Fabric

main

Задача по умолчанию выполняет сценарий из файла формате JSON или YAML, передаваемого в качестве аргумента --scenario [scenario.yaml].

Использование:

  • fab root@server main --scenario scenario.yaml
  • fabr server_alias -s test_scenario.json

install-ssh-key

Находит публичный ключ на локальной машине в директории ~/.ssh и добавляет его в список авторизованных ключей на удалённой машине.

Использование: fab root@server install-ssh-key

internet

Включение/отключение доступа к интернету на сервере. Реализовано через подмену шлюза по умолчанию. Используется при разработке для моделирования ситуации, когда на продакшн-сервере отсутствует доступ в интернет.

Использование: fab root@server internet off

Аргументы:

  • on | off - включить/выключить доступ к интернету

Стадии

Стадии - это команды сценария, которые выполняются после запуска задачи main. Стадии задаются в разделе stages в файле сценария. Каждая стадия описана словарём со следующими полями:

name: Имя стадии (информационное поля)
cmd: Команда для выполнения
context: Список контекстных команд
test: Список контекстных команд для тестирования результата стадии.
      Автоматически добавляется в конец списка `context`, но могут быть помещены
      в список `context` вручную.
Аргументы команды, указанной в `cmd` (см. ниже)

Контекстные команды формируются из стадий, поддерживающих выполнение в контексте. Поведение одной и той же команды на уровне стадии и контекста может отличаться. Контекстные команды поддерживаются только на уровне стадий и не могут быть вложены в другие контекстные команды. Контекстные команды выполняют действия перед началом стадии и по завершении. Например, команда тестирования может проверить наличие некоторого файла до и после выполнения стадии.

Поддерживаемые команды:

user

Создаёт пользователя с указанным именем и домашним каталогом. Если пользователь уже существует, но домашний каталог не совпадает, выводится предупреждение

Аргументы:

  • username: имя пользователя
  • home: домашний каталог пользователя

packages

Производит установку пакетов из системных репозиториев или каталога

Аргументы:

  • packages: список пакетов для установки или путь к каталогу с пакетами

upload

Загружает файлы с локальной машины на удалённую. Файлы, уже присутствующие на удалённой машине, не будут перезаписаны.

Аргументы:

  • root_local: корневой локальный каталог с файлами
  • root_remote: каталог на удалённой машине
  • files: список файлов/директорий для загрузки из локального каталога

unpack

Распаковывает архивный файл командой tar -xzf <file>.

Аргументы:

  • file: путь к файлу tar.gz для распаковки
  • output: каталог для распаковки

Контекст: при выходе из контекста производится удаление временного каталога

build

Производит сборку проекта командами configure, make, make install. По умолчанию производится только сборка без установки. FIXME: Требует наличие команд тестирования

Аргументы:

  • source: каталог с исходным кодом
  • options: аргументы командной строки для configure
  • test_configure: список строк для проверки вывода команды configure
  • install: установка собранного проекта: true/false/alt (altinstall)

run

Выполняет произволную команду

Контекст: добавляет команду в контекст выполнения Fabric

Аргументы:

  • command - команда для запуска в bash

exists

Контекст: проверяет наличие пути в системе

Аргументы:

  • path: проверяемый путь

echo

Производит вывод текста в файл

Аргументы:

  • text: текст для вывода, в т. ч. многострочный
  • output: файл для вывода строки, если не указан, то выводится в консоль
  • append: добавлять текст в конец файла, по умолчанию false (перезаписывать)

Пользователи

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

Можно переопределить пользователя, от имени которого выполняются команды, для всех стадий сценария и для конкретных стадий отдельно. Для этого необходимо указать параметр user: <имя> в корне сценария или словаре стадии.

About

Runs YAML/JSON scenarios in Fabric2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0