SlideShare a Scribd company logo
1 of 57
Download to read offline
Superpowers
of deployment Tools
Jöran Vinzens
linkedin.com/in/jvinzens
@vinzens81
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
4 years ago….
● Manual deployment
● Patchday every 2 weeks at the end of each sprint
● Manual testing
● Usually we forgot something
● different codebase dev - production
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
And then, there is ansible & co.
● started with backend businesslogic
● frontend website
● VoIP components
● network infrastructure
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Initial Idea
● continuous deployment
● no need to know the setup
● enable everybody instead of stakeholder only
● automatic tests
● secure rollout
● automatic rollback
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Components involved
Jenkins
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
How does it work?
push code
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
How does it work?
Jenkins
github trigger Jenkins Step 1:
- build debian package
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
How does it work?
Jenkins step 2:
- run ansible script
Jenkins
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
How does it work?
Ansible script
- check already installed package version
- install new package
- install config
- reload of systems
- tests
- roll back old package
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
How does it work?
template
files
environment
data
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
VoIP is not your average service
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
● restarting
● real time communication
● ongoing sessions
● retransmits
● UDP/TCP services
● loadbalancer
● big config files
● lots of different components
VoIP is not your average service
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
VoIP is not your average service
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
what we did:
- several iterations
- lots of different systems
- lot of mistakes
the best we know so far:
- install code by debian package management
- create config by ansible (host- / group-specific)
VoIP is not your average service
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
What is code?
codelike config is code!
- extensions.conf
- kamailio.cfg (route definitions)
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
What is code?
- AMI
- AGI
- ARI
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
But why?
put code into package
- enable rollback
- keep config simple
- keep track of logic changes
- separation makes "dev = production" possible
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
what about kamailio.cfg? It’s both!
Config:
#!KAMAILIO
debug=2
fork=yes
log_stderror=no
listen=udp:10.0.1.1
#!define FOO
Loadmodule “tm.so”
Code:
route{
if (method=="INVITE") {
stuff;
exit;
}
}
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
what about kamailio.cfg? Or, is it?
route{
if (src_ip == 211.1.7.6) {
exit;
}
}
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
what about kamailio.cfg? Or, is it?
Modified config:
modparam("pv", "varset", "ip=s:211.1.7.6")
route{
if (src_ip == $var(ip)) {
exit;
}
}
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
how does it come together?
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
kamailio.cfg kamailio_header.cfg
…
systemD
DB entries
DEB package ansible
running config
separate "code" from config
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
separate "code" from config
new config Style:
Config:
#!KAMAILIO
debug=2
fork=yes
log_stderror=no
listen=udp:10.0.1.1
#!define FOO
Loadmodule “tm.so”
modparam("pv", "varset",
"ip=s:211.1.7.6")
debian Package:
include_file
"/etc/kamailio/kamailio_header.cfg"
route{
if (method=="INVITE") {
stuff;
exit;
}
}
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config!
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config!
---
- hosts: asterisk
remote_user: root
become: yes
become_method: sudo
serial: 1
roles:
- install_config
asterisk.yml
[asterisk]
host1.domain.com
host2.domain.com
host3.domain.com
inventory
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config!
Playbook
- role 1
- role 2
Environment
group:
- Host 1
- Host 2
Groupvars
Hostvars
Hostvars
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config! copy file
---
- name: Copy files
copy:
src: {{ hostname }}_sip.conf
dest: /etc/asterisk/sip.conf
owner: asterisk
group: asterisk
mode: 775
role/install_config/tasks/main.yml
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config! template
---
- name: use a template
template:
src: sip.conf.j2
dest: /etc/a/sip.conf
owner: asterisk
group: asterisk
mode: 0644
role/install_config/tasks/main.yml
[general]
bindport={{ service_port }}
bindaddr={{ service_ip }}
role/install_config/templates/sip.conf.j2
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
service_port: 5060
group_vars/asterisk
[general]
bindport={{ service_port }}
bindaddr={{ service_ip }}
role/install_config/templates/sip.conf.j2
service_ip: 1.2.3.4
host_vars/host1.domain.com
service_ip: 1.2.3.5
host_vars/host2.domain.com
Ansible, deploy config! template
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy config! useful asterisk tools
- name: Reload asterisk dialplan
command: "asterisk -rx 'dialplan reload'"
- name: Reload asterisk sip
command: "asterisk -rx 'sip reload'"
- name: Restart Asterisk when empty
command: "asterisk -rx 'core restart when convenient'"
shell commands
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy! task on other hosts
TASK TASK TASK TASK
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy! task on other hosts
TASK TASK
TASK
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Ansible, deploy! task on other hosts
- name: Disable Dispatcher for Host
command:
"kamcmd dispatcher.set_state d 1 sip:{{ service_ip }}:{{ service_port }}"
delegate_to: dispatcher1.domain.com
- name: do other stuff
delegate to
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
start where you are!
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
start where you are!
automate all manual steps as they are
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
● jenkins
● github trigger
● build packages
● ...
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
● jenkins
● github trigger
● build packages
● ...
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
● jenkins
● github trigger
● build packages
● ...
all you need is ansible:
#> ansible-playbook -i inventory asterisk.yml -s -K
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
● ssh to server
● git pull
● copy files
● trigger scripts
● restart/reload service
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
how to start?
---
- file: path=/tmp/config state=absent
- command: /bin/bash -c "git clone config git@host:repo /tmp"
- command: ./script
args:
chdir: /tmp/config
- file: path=/tmp/config state=absent
- service: name=daemon state=started
most basic playbook
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
create and check mysql access
- name: make sure mysql user for GW exists
mysql_user:
name: "{{ db_user }}"
password: "{{ db_pass }}"
host: "{{ ansible_default_ipv4.address }}"
priv: "{{ db_name }}.*:SELECT,EXECUTE"
state: present
config_file: "~/.cnf"
delegate_to: "{{ db_host }}"
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
create and check mysql access
- name: check database connection
shell: echo select 1 | mysql -h{{ db_host }} -u{{ db_user }} -p{{ db_pass
}} {{ db_name }}
register: db_checkresult
- name: fail if connection is not successful
fail:
msg: "Failed to connect to database, exiting here"
when:
- db_checkresult.stdout_lines[1] != '1'
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
enter host into dispatcher set
- name: Write dispatcher to database
shell: echo insert ignore into dispatcher
(setid,destination,flags,priority,attrs,description) values ({{
dispatcherset_id }},"sip:{{ service_ip }}:5060",1,0,"","") | mysql {{
dn_name }}
delegate_to: "db.sip.com"
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
enter host into dispatcher set
- name: reload dispatcher set in Kamailio Loadbalancer(s)
command: /usr/sbin/kamcmd -s /tmp/kamailio_ctl dispatcher.reload
delegate_to: "loadbalancer.sip.com"
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
enter host into dispatcher set
- name: check for dispatcher state
shell: /usr/sbin/kamcmd -s /tmp/kamailio_ctl dispatcher.list | grep -A2 {{
localip }} |grep FLAGS
delegate_to: "loadbalancer.sip.com"
register: dispatcherlist
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Things you can do with ansible:
enter host into dispatcher set
- name: Check for kamailio dispatcher.list
fail:
msg: "Gateway is not ready, yet. Check firewall and IP!"
when: "'IP' in '{{ item[0].stdout }}'"
with_items:
- [ "{{ dispatcherlist.results }}" ]
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Lessons learned
avoid non testable stuff
● extensions.conf
● kamailio.cfg
use ARI / AGI / AMI for asterisk
use LUA for kamailio
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Lessons learned
make kamailio restart save
● Write htable into DB
● Save location into DB
● Use DMQ
● Avoid dialog tracking
● Avoid stateful instances
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
numbers and statistics core routing engine
33 commits a week
8 commits a day
every commit into
production
mostly by customer support
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
numbers and statistics asterisk config
21 commits a week
9 commits a day
nearly every commit into
production
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
numbers and statistics kamailio config
11 machines
86 instances of kamailio
~11 min
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
numbers and statistics kamailio config
11 machines
1111 tasks performed
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
numbers and statistics asterisk config
~15 min
47 machines
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
links for more information
http://sipg.at/ansible-network
http://sipg.at/ansible-sample
http://sipg.at/ansible-talk
Jöran Vinzens
linkedin.com/in/jvinzens @vinzens81
Questions

More Related Content

What's hot

Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Nate Murray
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requestsTim Pettersen
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and ContainersRodolfo Carvalho
 
Continuous infrastructure testing
Continuous infrastructure testingContinuous infrastructure testing
Continuous infrastructure testingDaniel Paulus
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務Mu Chun Wang
 
Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Ivan Rossi
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript FrameworkAll Things Open
 
How to do everything with PowerShell
How to do everything with PowerShellHow to do everything with PowerShell
How to do everything with PowerShellJuan Carlos Gonzalez
 
Spring Booted, But... @JCConf 16', Taiwan
Spring Booted, But... @JCConf 16', TaiwanSpring Booted, But... @JCConf 16', Taiwan
Spring Booted, But... @JCConf 16', TaiwanPei-Tang Huang
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDSean Chittenden
 
React & The Art of Managing Complexity
React &  The Art of Managing ComplexityReact &  The Art of Managing Complexity
React & The Art of Managing ComplexityRyan Anklam
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budgetDavid Lukac
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with AnsibleIvan Serdyuk
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsBen Hall
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Łukasz Proszek
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Puppet
 

What's hot (20)

Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Rebooting a Cloud
Rebooting a CloudRebooting a Cloud
Rebooting a Cloud
 
Continuous infrastructure testing
Continuous infrastructure testingContinuous infrastructure testing
Continuous infrastructure testing
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
Ungooglable
UngooglableUngooglable
Ungooglable
 
Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)Introduction to Ansible (Pycon7 2016)
Introduction to Ansible (Pycon7 2016)
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
How to do everything with PowerShell
How to do everything with PowerShellHow to do everything with PowerShell
How to do everything with PowerShell
 
Spring Booted, But... @JCConf 16', Taiwan
Spring Booted, But... @JCConf 16', TaiwanSpring Booted, But... @JCConf 16', Taiwan
Spring Booted, But... @JCConf 16', Taiwan
 
Modern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSDModern tooling to assist with developing applications on FreeBSD
Modern tooling to assist with developing applications on FreeBSD
 
React & The Art of Managing Complexity
React &  The Art of Managing ComplexityReact &  The Art of Managing Complexity
React & The Art of Managing Complexity
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
Build Automation 101
Build Automation 101Build Automation 101
Build Automation 101
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
Real World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js ApplicationsReal World Lessons on the Pain Points of Node.js Applications
Real World Lessons on the Pain Points of Node.js Applications
 
Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.Take control of your Jenkins jobs via job DSL.
Take control of your Jenkins jobs via job DSL.
 
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
Continuous Infrastructure: Modern Puppet for the Jenkins Project - PuppetConf...
 

Similar to Astricon 2017 Superpower of deployment tools

Fixing Growing Pains With Puppet Data Patterns
Fixing Growing Pains With Puppet Data PatternsFixing Growing Pains With Puppet Data Patterns
Fixing Growing Pains With Puppet Data PatternsMartin Jackson
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefChef Software, Inc.
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppSmartLogic
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
"Master production-grade best practices to build your Node.js Docker images",...
"Master production-grade best practices to build your Node.js Docker images",..."Master production-grade best practices to build your Node.js Docker images",...
"Master production-grade best practices to build your Node.js Docker images",...Fwdays
 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL John Anderson
 
Composer, putting dependencies on the score
Composer, putting dependencies on the scoreComposer, putting dependencies on the score
Composer, putting dependencies on the scoreRafael Dohms
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"? Fabien Doiron
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Developmentallingeek
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-wayRobert Lujo
 
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf Conference
 
Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the scoreRafael Dohms
 
Power of linked list
Power of linked listPower of linked list
Power of linked listPeter Hlavaty
 
A General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPA General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPRobert Lemke
 

Similar to Astricon 2017 Superpower of deployment tools (20)

Fixing Growing Pains With Puppet Data Patterns
Fixing Growing Pains With Puppet Data PatternsFixing Growing Pains With Puppet Data Patterns
Fixing Growing Pains With Puppet Data Patterns
 
Tips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with ChefTips and Tricks for Automating Windows with Chef
Tips and Tricks for Automating Windows with Chef
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
"Master production-grade best practices to build your Node.js Docker images",...
"Master production-grade best practices to build your Node.js Docker images",..."Master production-grade best practices to build your Node.js Docker images",...
"Master production-grade best practices to build your Node.js Docker images",...
 
Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL Automate Yo'self -- SeaGL
Automate Yo'self -- SeaGL
 
Ruby For Startups
Ruby For StartupsRuby For Startups
Ruby For Startups
 
Composer, putting dependencies on the score
Composer, putting dependencies on the scoreComposer, putting dependencies on the score
Composer, putting dependencies on the score
 
What makes me "Grunt"?
What makes me "Grunt"? What makes me "Grunt"?
What makes me "Grunt"?
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Development
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
 
Ubic
UbicUbic
Ubic
 
Ubic-public
Ubic-publicUbic-public
Ubic-public
 
Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the score
 
Power of linked list
Power of linked listPower of linked list
Power of linked list
 
A General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPA General Purpose Docker Image for PHP
A General Purpose Docker Image for PHP
 

More from Jöran Vinzens

Using ARI and AGI to Connect Asterisk Instances
Using ARI and AGI to Connect Asterisk Instances Using ARI and AGI to Connect Asterisk Instances
Using ARI and AGI to Connect Asterisk Instances Jöran Vinzens
 
Asterisk 11to16, What could go wrong
Asterisk 11to16, What could go wrongAsterisk 11to16, What could go wrong
Asterisk 11to16, What could go wrongJöran Vinzens
 
ARI and AGI, a powerful combination
ARI and AGI, a powerful combinationARI and AGI, a powerful combination
ARI and AGI, a powerful combinationJöran Vinzens
 
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019Jöran Vinzens
 

More from Jöran Vinzens (9)

Using ARI and AGI to Connect Asterisk Instances
Using ARI and AGI to Connect Asterisk Instances Using ARI and AGI to Connect Asterisk Instances
Using ARI and AGI to Connect Asterisk Instances
 
Astricon plan 9 2020
Astricon plan 9 2020Astricon plan 9 2020
Astricon plan 9 2020
 
Asterisk 11to16, What could go wrong
Asterisk 11to16, What could go wrongAsterisk 11to16, What could go wrong
Asterisk 11to16, What could go wrong
 
ARI and AGI, a powerful combination
ARI and AGI, a powerful combinationARI and AGI, a powerful combination
ARI and AGI, a powerful combination
 
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
SITREP - Asterisk REST. The first steps are done, now what? - CommCon 2019
 
astricon2018
astricon2018astricon2018
astricon2018
 
Astricon 2015
Astricon 2015Astricon 2015
Astricon 2015
 
Ss7 isup homer
Ss7 isup homerSs7 isup homer
Ss7 isup homer
 
Astricon 2016
Astricon 2016Astricon 2016
Astricon 2016
 

Recently uploaded

Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdfKamal Acharya
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGSIVASHANKAR N
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxupamatechverse
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdfKamal Acharya
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...ranjana rawat
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 

Recently uploaded (20)

Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINEDJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
DJARUM4D - SLOT GACOR ONLINE | SLOT DEMO ONLINE
 
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
 
Introduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptxIntroduction and different types of Ethernet.pptx
Introduction and different types of Ethernet.pptx
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(PRIYA) Rajgurunagar Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
(SHREYA) Chakan Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Esc...
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 

Astricon 2017 Superpower of deployment tools