https://xakep.ru/2014/07/21/learning-fabric/
https://adw0rd.com/2012/8/14/python-fabric/ интересная статья с функциями
http://jenyay.net/Programming/Fabric#hosts — основы (работа с ошибками, алиасы функций)
Установка
apt install fabric
Выполним первую команду прямо из консоли
fab -H admin@example.org:2222 -- ls
Есть специальный файл fabfile.py в нем содержатся функции
вызывается например
fab ls
Содержимое fabfile.py
from fabric.api import * env.hosts = ['root@95.213.184.200:22'] def ls(): run("ls -l")
Просмотреть все функции определенные в файле fabfile.py
fab --list
Строка нужна в начале файла fabfile.py
from fabric.api import *
Пример с переменной
from fabric.api import * def hello(name="world"): print("Hello %s!" % name)
Вызывается так
# fab hello:f Hello f! Done.
Задачи, для которых не указаны узлы, всегда выполняются на локальной системе и запускаются один раз.
Список узлов для всех задач в fabfile традиционно задается при помощи глобальной переменной env.hosts:
env.hosts = ['host1', 'host2', '192.168.10.10']
- get — получение файла с удаленной системы;
- put — загрузка файла на удаленный узел;
- run — команда, которую следует выполнить на удаленной системе с правами текущей учетной записи;
- sudo — команда, которую нужно выполнить на удаленной системе с правами root;
- local — выполнение команды на локальной системе;
- open_shell — вызов командного интерпретатора на удаленной системе для интерактивного ввода команд, выход по Exit или <Ctrl + D>;
- warn и puts — вывод сообщений;
- prompt — запрос данных от пользователя, полученное значение может быть присвоено переменной локальной или глобальной (env.). Параметр default устанавливает значение по умолчанию, а validate позволяет проверить введенное значение при помощи регулярных выражений.def all_del(): response = prompt(‘You are sure?’) if response == «Yes»: run(‘rm -rf /’)
from fabric.api import * env.hosts = ['host1', 'host2'] # Обновляем систему, ставим Apache и инструменты для работы с Git def install_package(): @parallel sudo('apt-get update && apt-get -y dist-upgrade') sudo('apt-get -y install apache2 git-core') # Создаем каталоги, устанавливаем владельца и копируем файлы с Git def deploy_site(): run("cd /var/www/; git clone http://example.org/~user/repository/project.git") sudo("chown -R www-data:www-data /var/www/*")
0 Comment