SlideShare a Scribd company logo
SaltStack
Михаил Юматов, Трилан
Задачи


— сконфигурировать сервер
— развернуть проект на сервере
— выполнить команду на сервере
Один сервер

Fabric:
       — сконфигурировать сервер
       — развернуть проект на сервере
       — выполнить команду на сервере
Один сервер

Chef Solo:
      — сконфигурировать сервер
Fabric:
       — развернуть проект на сервере
       — выполнить команду на сервере
Два и более серверов

Chef или Puppet:
      — сконфигурировать сервер
Fabric:
       — развернуть проект на сервере
       — выполнить команду на сервере
Два и более серверов: Проблемы

Fabric:
       — как выбрать нужные сервера?
       — как проанализировать результаты?
       — как обработать ошибки?
Два и более серверов

SaltStack:
       — сконфигурировать сервер
       — развернуть проект на сервере
       — выполнить команду на сервере
Chef и Puppet
        — системы управления конфигурациями
SaltStack
        — система параллельного выполнения команд
— первый релиз в марте 2011
— написан на Python
— активно развивается
— активное сообщество
— топ 10 по числу разработчиков на GitHub в 2012
minion

Клиент-серверная архитектура:
Minion — управляемый сервер
Master — управляющий сервер

                           master
Система параллельного
 выполнения команд
Например


— Перезапустить процесс
— Обновить системный пакет
— Посмотреть состояние системы
где

salt '*' test.ping

       что
Что
Команда — функция на Python
cron                                                    pip
 apache                                               django
                                                                                              gem
               pillar                                                       pkg
                                    cp
                                                 debconf                                 kmod
     brew            grains                                      iptables

hg                                                                                config


      event
               ssh
                            salt.modules.*                                                    monit

                                                                                        file
                                                                 git
                                daemontools        nginx
                                                                        locale
     archive
                        hosts                                                           aliases
                                          disk             cmd
Например



salt '*' service.restart nginx
salt '*' pkg.upgrade redis
salt '*' status.loadavg
Свои команды
  /srv/salt/_modules/*
Например



def ping():
    return True
Где
?   ?


                         ?
Как различить?
                     ?
apollo   hermes




                                                   zeus


По имени
salt zeus test.ping
salt 'zeus,apollo' test.ping
salt 'web.*' test.ping

                                         artemis
Grains (крупицы соли)


salt '*' grains.items

salt -G 'os:Ubuntu' test.ping
salt -G 'mem_total:4096' test.ping
worker   web
                                        worker




                                                 db


По роли
                                                 cache




salt -G 'roles:web' deploy.web
salt -G 'roles:worker' deploy.worker


                                          mq
Система управления
 конфигурациями
    salt '*' state.highstate
Конфигурация с помощью набора состояний
Состояние — функция на Python
cron                                                   pip
                                                     postgres_user
     module                                                                                     gem
                                                                            pkg
                       network
                                                 debconf                                   kmod
     postgres_database

hg                                                                                user

     group
              virtualenv
                                    salt.states.*
                                                                                          file
                mount                                                git
                                    postgres_group
                                                                           locale
ssh_auth                   host                                                            alias
                                                              cmd
Описание состояния

В формате YAML:            Что происходит:
file.managed:              file.managed(
  - name: /etc/vimrc           name='/etc/vimrc',
  - source: salt://vimrc       source='salt://vimrc',
  - mode: 644                  mode=644,
                           )
Состояния группируются по идентификаторам

 nginx:
   pkg.installed:
    - refresh: true
   service.running:
     - enable: true
     - require:
        - pkg: nginx
Идентификаторы группируются в файлы
  Файлы образуют дерево состояний
Пример
Приложение


from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'hello world'
Дерево состояний


helloworld/
    app.py
    gunicorn.conf
    init.sls
    nginx.conf
    requirements.txt
Создаем пользователя



helloworld:
  user.present: []
Создаем виртуальное окружение


/home/helloworld/.env:
  virtualenv.managed:
    - requirements: salt://helloworld/requirements.txt
    - require:
      - user: helloworld
Заливаем приложение


/home/helloworld/app.py:
  file.managed:
    - source: salt://helloworld/app.py
    - user: helloworld
    - group: helloworld
    - require:
      - user: helloworld
Создаем конфиг для upstart'а



/etc/init/gunicorn.conf:
  file.managed:
    - source: salt://helloworld/gunicorn.conf
Описываем сервис


gunicorn:
  service.running:
    - watch:
      - file: /home/helloworld/app.py
      - virtualenv: /home/helloworld/.env
      - file: /etc/init/gunicorn.conf
Создаем конфиг для nginx'а


helloworld:
  nginx_site.managed:
    - source: salt://helloworld/nginx.conf
    - enable: true
Запускаем



salt -G 'roles:web' state.highstate
Другие возможности
Returners

— PostgreSQL
— MongoDB
— Redis
— Email
— другие
Права доступа

                          миньоны
client_acl:
  bob:
    - 'G@roles:web':
       - test.*
       - project.*
                               команды
пользователь
Спасибо за внимание!
                 Вопросы?


— saltstack.org                 — twitter.com/yumike
— github.com/yumike/pycon2013   — github.com/yumike
                                — yumatov@trilan.ru

More Related Content

PPTX
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
PPTX
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
PPTX
обзор архитектуры и подсистем деплоя и мониторинга
PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PDF
RootConf 2015
PPTX
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
PDF
Как не положить тысячи серверов с помощью системы централизованного управлени...
PPTX
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Общая концепция системы развёртывания серверного окружения на базе SaltStack ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
обзор архитектуры и подсистем деплоя и мониторинга
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
RootConf 2015
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)

What's hot (20)

PDF
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
PDF
Twisted Framework - сетевые приложения в Python
PDF
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
PDF
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
PDF
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
PDF
15 - Web-технологии. Сессии и авторизация
PPTX
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PPTX
переезд мониторинга
PDF
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
PDF
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
PDF
Prometheus мониторинг микросервисных приложений / Виталий Левченко
PDF
08 - Web-технологии. Архитектура frontend-backend
PDF
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
PDF
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
PPTX
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
PDF
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
PPTX
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
PPTX
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
PDF
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Twisted Framework - сетевые приложения в Python
Что нового и полезного в PostgreSQL 9.5 / Илья Космодемьянский (PostgreSQL-Co...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
15 - Web-технологии. Сессии и авторизация
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
переезд мониторинга
Особенности архитектуры распределённого хранилища в Dropbox / Слава Бахмутов ...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Prometheus мониторинг микросервисных приложений / Виталий Левченко
08 - Web-технологии. Архитектура frontend-backend
Zabbix в Badoo или о чем не пишут в мануале, Илья Аблеев (Badoo)
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
ZFConf 2012: Кеш без промахов средствами Zend Framework 2 (Евгений Шпилевский)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Ad

Similar to Михаил Юматов: SaltStack (20)

PDF
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
PDF
Истинный DevOps. Секрет 42.
PDF
Jenkins в docker in mesos in ...
PDF
Антон Каляев — Быстрое развертывание среды с Vagrant
PPTX
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
PDF
Streaming replication in practice
PDF
Вебинар по БЭМ: сборка и оптимизация проекта
PDF
GitLab, Prometheus и Grafana с Kubernetes
PPT
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
PDF
От Make к Ansible
PPTX
Управление облачной инфраструктурой
PDF
Симаков Алексей - Системы управления кластерами
PDF
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
PPTX
Use Grunt Luke
PDF
Абак Пресс
PDF
Hunting for a C++ package manager
PDF
Опыт разработки и тестирования RESTful JSON сервиса
PDF
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
PDF
Building deployment pipeline - DevOps way
PDF
Быстрое развертывание среды разработки c Vagrant
2017-03-11 01 Игорь Родионов. Docker swarm vs Kubernetes
Истинный DevOps. Секрет 42.
Jenkins в docker in mesos in ...
Антон Каляев — Быстрое развертывание среды с Vagrant
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
Streaming replication in practice
Вебинар по БЭМ: сборка и оптимизация проекта
GitLab, Prometheus и Grafana с Kubernetes
Движение по хрупкому дну / Сергей Караткевич (servers.ru)
От Make к Ansible
Управление облачной инфраструктурой
Симаков Алексей - Системы управления кластерами
Legacy в коробочке. Dev-среда на базе Kubernetes / Илья Сауленко (Avito)
Use Grunt Luke
Абак Пресс
Hunting for a C++ package manager
Опыт разработки и тестирования RESTful JSON сервиса
Анатолий Полицын, агентство интернет-маркетинга «Синапс» — Корпоративный хост...
Building deployment pipeline - DevOps way
Быстрое развертывание среды разработки c Vagrant
Ad

More from it-people (20)

PDF
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
PDF
«Scrapy internals» Александр Сибиряков, Scrapinghub
PDF
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
PDF
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
PDF
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
PDF
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
PDF
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
PDF
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
PDF
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
PDF
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
PDF
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
PDF
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
PDF
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
PDF
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
PDF
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
PDF
«(Без)опасный Python», Иван Цыганов, Positive Technologies
PDF
«Python of Things», Кирилл Борисов, Яндекс
PDF
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
PDF
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
PDF
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«Python of Things», Кирилл Борисов, Яндекс
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...

Михаил Юматов: SaltStack