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

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

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

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

Apt

carnival.cmd.apt.force_install(pkgname, version=None, update=False, hide=False)

Установить пакет без проверки установлен ли он

carnival.cmd.apt.get_installed_version(pkgname: str) → Optional[str]

Получить установленную версию пакета

Результат:Версия пакета если установлен, None если пакет не установлен
carnival.cmd.apt.get_pkg_versions(pkgname: str) → List[str]

Получить список доступных версий пакета

carnival.cmd.apt.install(pkgname, version=None, update=True, hide=False) → bool

Установить пакет если он еще не установлен в системе

Параметры:
  • pkgname – название пакета
  • version – версия
  • update – запустить apt-get update перед установкой
  • hide – скрыть вывод этапов
Результат:

True если пакет был установлен, False если пакет уже был установлен ранее

carnival.cmd.apt.install_multiple(*pkg_names, update=True, hide=False) → bool

Установить несколько пакетов, если они не установлены

Параметры:
  • pkg_names – список пакетов которые нужно установить
  • update – запустить apt-get update перед установкой
  • hide – скрыть вывод этапов
Результат:

True если хотя бы один пакет был установлен, False если все пакеты уже были установлен ранее

carnival.cmd.apt.is_pkg_installed(pkgname: str, version=None) → bool

Проверить установлен ли пакет Если версия не указана - проверяется любая

carnival.cmd.apt.remove(*pkg_names, hide=False)

Удалить пакет

Параметры:
  • pkg_names – список пакетов которые нужно удалить
  • hide – скрыть вывод этапов

Cli

carnival.cmd.cli.pty(command: str, **kwargs) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c2ccf28>

Запустить комманду, используя псевдотерминальную сессию

См <https://docs.pyinvoke.org/en/latest/api/runners.html>

carnival.cmd.cli.run(command: str, **kwargs) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c2ccf28>

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

Filesystem

carnival.cmd.fs.ensure_dir_exists(path, user=None, group=None, mode=None) → None

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

<https://fabric-patchwork.readthedocs.io/en/latest/api/files.html#patchwork.files.directory>

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

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

Параметры:dir_path – путь до директории
carnival.cmd.fs.is_file_contains(filename, text, exact=False, escape=True) → bool

Содержит ли файл текст См <https://fabric-patchwork.readthedocs.io/en/latest/api/files.html#patchwork.files.contains>

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

Проверить существует ли файл <https://fabric-patchwork.readthedocs.io/en/latest/api/files.html#patchwork.files.exists>

Параметры:path – путь до файла
carnival.cmd.fs.mkdirs(*dirs) → List[<sphinx.ext.autodoc.importer._MockObject object at 0x7f835c25f860>]

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

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

System

carnival.cmd.system.get_current_user_id() → int

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

carnival.cmd.system.get_current_user_name() → str

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

carnival.cmd.system.is_current_user_root() → bool

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

carnival.cmd.system.set_password(username: str, password: str) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256320>

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

Параметры:
  • username – Пользователь
  • password – Новый пароль
carnival.cmd.system.ssh_authorized_keys_add(ssh_key: str, keys_file='.ssh/authorized_keys') → bool

Добавить ssh ключ в authorized_keys

Параметры:
  • ssh_key – ключ
  • keys_file – пусть до файла authorized_keys
Результат:

True если ключ был добавлен, False если ключ уже был в файле

carnival.cmd.system.ssh_authorized_keys_ensure(*ssh_keys) → List[bool]

Добавить несколько ssh-ключей в авторизованные

Параметры:ssh_keys – ssh-ключи
Результат:Список True если ключ был добавлен, False если ключ уже был в файле
carnival.cmd.system.ssh_authorized_keys_list() → List[str]

Получить список авторизованных ssh-ключей сервера

carnival.cmd.system.ssh_copy_id(pubkey_file='~/.ssh/id_rsa.pub') → bool

Добавить публичный ssh-ключ текущего пользователя в авторизованные

Параметры:pubkey_file – путь до файла с публичным ключем
Результат:True если ключ был добавлен, False если ключ уже был в файле

Systemd

carnival.cmd.systemd.daemon_reload() → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Перегрузить systemd

carnival.cmd.systemd.disable(service_name: str, reload_daemon=False, stop_now=True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Убрать сервис из автозапуска

Параметры:
  • service_name – имя сервиса
  • reload_daemon – перегрузить systemd
  • stop_now – Остановить сервис
carnival.cmd.systemd.enable(service_name: str, reload_daemon=False, start_now=True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Добавить сервис в автозапуск

Параметры:
  • service_name – имя сервиса
  • reload_daemon – перегрузить systemd
  • start_now – запустить сервис после добавления
carnival.cmd.systemd.restart(service_name: str) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Перезапустить сервис

Параметры:service_name – имя сервиса
carnival.cmd.systemd.start(service_name: str, reload_daemon=False) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Запустить сервис

Параметры:
  • service_name – имя сервиса
  • reload_daemon – перегрузить systemd
carnival.cmd.systemd.stop(service_name: str, reload_daemon=False) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c256940>

Остановить сервис

Параметры:
  • service_name – имя сервиса
  • reload_daemon – перегрузить systemd

Transfer

carnival.cmd.transfer.get(remote: str, local: str, preserve_mode: bool = True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c25f048>

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

Параметры:
  • remote – путь до файла на сервере
  • local – путь куда сохранить файл
  • preserve_mode – сохранить права
carnival.cmd.transfer.put(local: str, remote: str, preserve_mode: bool = True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c25f048>

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

Параметры:
  • local – путь до локального файла
  • remote – путь куда сохранить на сервере
  • preserve_mode – сохранить права
carnival.cmd.transfer.put_template(template_path: str, remote: str, **context) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f835c25f048>

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

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

Параметры:
  • template_path – путь до локального файла jinja
  • remote – путь куда сохранить на сервере
  • context – контекс для рендеринга jinja2
carnival.cmd.transfer.rsync(source, target, exclude=(), delete=False, strict_host_keys=True, rsync_opts='--progress -pthrvz', ssh_opts='')

<https://fabric-patchwork.readthedocs.io/en/latest/api/transfers.html#patchwork.transfers.rsync>