Базовые комманды (cmd)¶
Модуль carnival.cmd содержит базовые комманды для взаимодействия с сервером. Его цель - оставаться простым и помогать в написании шагов (Step).
Для написания сложных сценариев предполагается использовать шаги(Step).
Основные шаги доступны в отдельном репозитории: <https://github.com/carnival-org/carnival-contrib>.
Apt¶
-
carnival.cmd.apt.
force_install
(pkgname: str, version: Optional[str] = None, update: bool = False, hide: bool = False) → None¶ Установить пакет без проверки установлен ли он
-
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: str, version: Optional[str] = None, update: bool = True, hide: bool = False) → bool¶ Установить пакет если он еще не установлен в системе
Параметры: - pkgname – название пакета
- version – версия
- update – запустить apt-get update перед установкой
- hide – скрыть вывод этапов
Результат: True если пакет был установлен, False если пакет уже был установлен ранее
-
carnival.cmd.apt.
install_multiple
(*pkg_names, update: bool = True, hide: bool = False) → bool¶ Установить несколько пакетов, если они не установлены
Параметры: - pkg_names – список пакетов которые нужно установить
- update – запустить apt-get update перед установкой
- hide – скрыть вывод этапов
Результат: True если хотя бы один пакет был установлен, False если все пакеты уже были установлен ранее
-
carnival.cmd.apt.
is_pkg_installed
(pkgname: str, version: Optional[str] = None) → bool¶ Проверить установлен ли пакет Если версия не указана - проверяется любая
-
carnival.cmd.apt.
remove
(*pkg_names, hide: bool = False) → None¶ Удалить пакет
Параметры: - pkg_names – список пакетов которые нужно удалить
- hide – скрыть вывод этапов
Cli¶
-
carnival.cmd.cli.
pty
(command: str, **kwargs) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e791c0>¶ Запустить комманду, используя псевдотерминальную сессию
-
carnival.cmd.cli.
run
(command: str, **kwargs) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e791c0>¶ Запустить комманду
Filesystem¶
-
carnival.cmd.fs.
ensure_dir_exists
(path: str, user: Optional[str] = None, group: Optional[str] = None, mode: Optional[str] = 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: str, text: str, exact: bool = False, escape: bool = 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: str) → 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 0x7f2783e86850>]¶ Создать директории
Параметры: 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 0x7f2783e793a0>¶ Установить пароль пользователю
Параметры: - username – Пользователь
- password – Новый пароль
Добавить ssh ключ в authorized_keys
Параметры: - ssh_key – ключ
- keys_file – пусть до файла authorized_keys
Результат: True если ключ был добавлен, False если ключ уже был в файле
Добавить несколько ssh-ключей в авторизованные
Параметры: ssh_keys – ssh-ключи Результат: Список True если ключ был добавлен, False если ключ уже был в файле
Получить список авторизованных ssh-ключей сервера
-
carnival.cmd.system.
ssh_copy_id
(pubkey_file: str = '~/.ssh/id_rsa.pub') → bool¶ Добавить публичный ssh-ключ текущего пользователя в авторизованные
Параметры: pubkey_file – путь до файла с публичным ключем Результат: True если ключ был добавлен, False если ключ уже был в файле
Systemd¶
-
carnival.cmd.systemd.
daemon_reload
() → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Перегрузить systemd
-
carnival.cmd.systemd.
disable
(service_name: str, reload_daemon: bool = False, stop_now: bool = True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Убрать сервис из автозапуска
Параметры: - service_name – имя сервиса
- reload_daemon – перегрузить systemd
- stop_now – Остановить сервис
-
carnival.cmd.systemd.
enable
(service_name: str, reload_daemon: bool = False, start_now: bool = True) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Добавить сервис в автозапуск
Параметры: - service_name – имя сервиса
- reload_daemon – перегрузить systemd
- start_now – запустить сервис после добавления
-
carnival.cmd.systemd.
restart
(service_name: str) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Перезапустить сервис
Параметры: service_name – имя сервиса
-
carnival.cmd.systemd.
start
(service_name: str, reload_daemon: bool = False) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Запустить сервис
Параметры: - service_name – имя сервиса
- reload_daemon – перегрузить systemd
-
carnival.cmd.systemd.
stop
(service_name: str, reload_daemon: bool = False) → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79b50>¶ Остановить сервис
Параметры: - 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 0x7f2783e79e80>¶ Скачать файл с сервера <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 0x7f2783e79e80>¶ Закачать файл на сервер <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 0x7f2783e79e80>¶ Отрендерить файл с помощью 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: str, target: str, exclude: Iterable[str] = (), delete: bool = False, strict_host_keys: bool = True, rsync_opts: str = '--progress -pthrvz', ssh_opts: str = '') → <sphinx.ext.autodoc.importer._MockObject object at 0x7f2783e79e80>¶ <https://fabric-patchwork.readthedocs.io/en/latest/api/transfers.html#patchwork.transfers.rsync>