Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SaltStack
Search
Mike Yumatov
February 24, 2013
Programming
0
450
SaltStack
PyCon Russia 2013
Mike Yumatov
February 24, 2013
Tweet
Share
More Decks by Mike Yumatov
See All by Mike Yumatov
Python
yumike
3
930
VCS
yumike
1
280
Работа со статикой в Django
yumike
1
200
Other Decks in Programming
See All in Programming
距離関数を極める! / SESSIONS 2024
gam0022
0
280
Duckdb-Wasmでローカルダッシュボードを作ってみた
nkforwork
0
130
Jakarta EE meets AI
ivargrimstad
0
180
最新TCAキャッチアップ
0si43
0
140
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
subpath importsで始めるモック生活
10tera
0
300
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
CSC509 Lecture 09
javiergs
PRO
0
140
CSC509 Lecture 11
javiergs
PRO
0
180
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
920
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
Tauriでネイティブアプリを作りたい
tsucchinoko
0
370
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Statistics for Hackers
jakevdp
796
220k
Designing the Hi-DPI Web
ddemaree
280
34k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Building an army of robots
kneath
302
43k
BBQ
matthewcrist
85
9.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
96
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
Become a Pro
speakerdeck
PRO
25
5k
Transcript
SaltStack Михаил Юматов, Трилан
Задачи — сконфигурировать сервер — развернуть проект на сервере —
выполнить команду на сервере
Один сервер Fabric: — сконфигурировать сервер — развернуть проект на
сервере — выполнить команду на сервере
Один сервер Chef Solo: — сконфигурировать сервер Fabric: — развернуть
проект на сервере — выполнить команду на сервере
Два и более серверов Chef или Puppet: — сконфигурировать сервер
Fabric: — развернуть проект на сервере — выполнить команду на сервере
Два и более серверов: Проблемы Fabric: — как выбрать нужные
сервера? — как проанализировать результаты? — как обработать ошибки?
Два и более серверов SaltStack: — сконфигурировать сервер — развернуть
проект на сервере — выполнить команду на сервере
Chef и Puppet — системы управления конфигурациями SaltStack — система
параллельного выполнения команд
— первый релиз в марте 2011 — написан на Python
— активно развивается — активное сообщество — топ 10 по числу разработчиков на GitHub в 2012
Клиент-серверная архитектура: Minion — управляемый сервер Master — управляющий сервер
master minion
Система параллельного выполнения команд
— Перезапустить процесс — Обновить системный пакет — Посмотреть состояние
системы Например
salt '*' test.ping где что
Что
Команда — функция на Python
aliases apache pkg archive brew cmd cron config salt.modules.* cp
debconf daemontools disk django event file gem git grains hg hosts iptables kmod locale monit nginx pillar pip ssh
salt '*' service.restart nginx salt '*' pkg.upgrade redis salt '*'
status.loadavg Например
Свои команды /srv/salt/_modules/*
def ping(): return True Например
Где
? ? ? ? Как различить?
По имени apollo hermes zeus artemis salt zeus test.ping salt
'zeus,apollo' test.ping salt 'web.*' test.ping
salt '*' grains.items salt -G 'os:Ubuntu' test.ping salt -G 'mem_total:4096'
test.ping Grains (крупицы соли)
worker web db mq По роли salt -G 'roles:web' deploy.web
salt -G 'roles:worker' deploy.worker cache worker
Система управления конфигурациями salt '*' state.highstate
Конфигурация с помощью набора состояний
Состояние — функция на Python
salt.states.* alias pkg cmd cron debconf file gem git hg
host kmod locale pip group module mount network postgres_database postgres_user postgres_group ssh_auth user virtualenv
Описание состояния file.managed: - name: /etc/vimrc - source: salt://vimrc -
mode: 644 file.managed( name='/etc/vimrc', source='salt://vimrc', mode=644, ) В формате YAML: Что происходит:
Состояния группируются по идентификаторам 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 Заливаем приложение
/etc/init/gunicorn.conf: file.managed: - source: salt://helloworld/gunicorn.conf Создаем конфиг для upstart'а
gunicorn: service.running: - watch: - file: /home/helloworld/app.py - virtualenv: /home/helloworld/.env
- file: /etc/init/gunicorn.conf Описываем сервис
helloworld: nginx_site.managed: - source: salt://helloworld/nginx.conf - enable: true Создаем конфиг
для nginx'а
salt -G 'roles:web' state.highstate Запускаем
Другие возможности
Returners — PostgreSQL — MongoDB — Redis — Email —
другие
Права доступа client_acl: bob: - 'G@roles:web': - test.* - project.*
пользователь миньоны команды
Спасибо за внимание! Вопросы? — saltstack.org — github.com/yumike/pycon2013 — twitter.com/yumike
— github.com/yumike —
[email protected]