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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Mike Yumatov
February 24, 2013
Programming
0
500
SaltStack
PyCon Russia 2013
Mike Yumatov
February 24, 2013
Tweet
Share
More Decks by Mike Yumatov
See All by Mike Yumatov
Python
yumike
3
970
VCS
yumike
1
300
Работа со статикой в Django
yumike
1
220
Other Decks in Programming
See All in Programming
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
370
SourceGeneratorのススメ
htkym
0
190
登壇資料を作る時に意識していること #登壇資料_findy
konifar
3
920
CSC307 Lecture 02
javiergs
PRO
1
770
Architectural Extensions
denyspoltorak
0
270
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
640
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
6
1.9k
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Apache Iceberg V3 and migration to V3
tomtanaka
0
150
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
CSC307 Lecture 03
javiergs
PRO
1
490
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
64
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
170
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
RailsConf 2023
tenderlove
30
1.3k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
730
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
180
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]