Базовые команды (cmd)

Модуль carnival.cmd содержит базовые команды для взаимодействия с сервером. Его цель - оставаться простым и помогать в написании шагов (Step).

Для написания сложных сценариев предполагается использовать шаги(Step).

Основные шаги доступны в отдельном репозитории: <https://github.com/carnival-org/carnival-contrib>.

Cli

carnival.cmd.cli.is_cmd_exist(c: carnival.hosts.base.Connection, cmd_name: str) → bool

Проверить есть ли команда в $PATH

Параметры:
  • c – Конект с хостом
  • command – Команда
carnival.cmd.cli.run(c: carnival.hosts.base.Connection, command: str, warn: bool = True, hide: bool = False, cwd: Optional[str] = None) → carnival.hosts.base.Result

Запустить команду

Параметры:
  • c – Конект с хостом
  • command – Команда для запуска
  • warn – Вывести stderr
  • hide – Скрыть вывод команды
  • cwd – Перейти в папку при выполнении команды

Filesystem

carnival.cmd.fs.ensure_dir_exists(c: carnival.hosts.base.Connection, path: str, user: Optional[str] = None, group: Optional[str] = None, mode: Optional[str] = None) → None

Проверить что директория существует и параметры соответствуют заданным

Параметры:
  • c – Конект с хостом
  • path – путь до директории
  • user – владелец
  • group – группа
  • mode – права
carnival.cmd.fs.is_dir_exists(c: carnival.hosts.base.Connection, dir_path: str) → bool

Узнать существует ли директория

Параметры:
  • c – Конект с хостом
  • dir_path – путь до директории
carnival.cmd.fs.is_file_contains(c: carnival.hosts.base.Connection, filename: str, text: str, exact: bool = False, escape: bool = True) → bool

Содержит ли файл текст

Параметры:
  • c – Конект с хостом
  • filename – путь до файла
  • text – текст который нужно искать
  • exact – точное совпадение
  • escape – экранировать ли текст
carnival.cmd.fs.is_file_exists(c: carnival.hosts.base.Connection, path: str) → bool

Проверить существует ли файл

Параметры:
  • c – Конект с хостом
  • path – путь до файла
carnival.cmd.fs.mkdirs(c: carnival.hosts.base.Connection, *dirs) → List[carnival.hosts.base.Result]

Создать директории

Параметры:
  • c – Конект с хостом
  • dirs – пути которые нужно создать

System

carnival.cmd.system.get_current_user_id(c: carnival.hosts.base.Connection) → int

Получить id текущего пользователя

Параметры:c – Конект с хостом
carnival.cmd.system.get_current_user_name(c: carnival.hosts.base.Connection) → str

Получить имя текущего пользователя

Параметры:c – Конект с хостом
carnival.cmd.system.is_current_user_root(c: carnival.hosts.base.Connection) → bool

Проверить что текущий пользователь - root

Параметры:c – Конект с хостом
carnival.cmd.system.set_password(c: carnival.hosts.base.Connection, username: str, password: str) → carnival.hosts.base.Result

Установить пароль пользователю

Параметры:
  • c – Конект с хостом
  • username – Пользователь
  • password – Новый пароль

Transfer

carnival.cmd.transfer.get(c: carnival.hosts.base.Connection, remote: str, local: str, preserve_mode: bool = True) → None

Скачать файл с сервера <http://docs.fabfile.org/en/2.5/api/transfer.html#fabric.transfer.Transfer.get>

Параметры:
  • c – Конект с хостом
  • remote – путь до файла на сервере
  • local – путь куда сохранить файл
  • preserve_mode – сохранить права
carnival.cmd.transfer.put(c: carnival.hosts.base.Connection, local: str, remote: str, preserve_mode: bool = True) → None

Закачать файл на сервер <http://docs.fabfile.org/en/2.5/api/transfer.html#fabric.transfer.Transfer.put>

Параметры:
  • c – Конект с хостом
  • local – путь до локального файла
  • remote – путь куда сохранить на сервере
  • preserve_mode – сохранить права
carnival.cmd.transfer.put_template(c: carnival.hosts.base.Connection, template_path: str, remote: str, **context) → None

Отрендерить файл с помощью jinja-шаблонов и закачать на сервер См раздел templates.

<http://docs.fabfile.org/en/2.5/api/transfer.html#fabric.transfer.Transfer.put>

Параметры:
  • c – Конект с хостом
  • template_path – путь до локального файла jinja
  • remote – путь куда сохранить на сервере
  • context – контекс для рендеринга jinja2
carnival.cmd.transfer.rsync(host: carnival.hosts.base.Host, source: str, target: str, rsync_opts: str = '--progress -pthrvz --timeout=60', ssh_opts: str = '', rsync_command: str = 'rsync', hide: bool = False) → carnival.hosts.base.Result

Залить папку с локального диска на сервер по rsync

Параметры:
  • host – сервер куда заливать
  • source – локальный путь до папки
  • target – путь куда нужно залить
  • rsync_opts – параметры команды rsync
  • ssh_opts – параметры ssh
  • rsync_command – путь до rsync
  • hide – скрыть результаты выполнения