Изучаем fabric

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/*")

 

Python

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.