Deploy symfony2-приложений с помощью
KM C'n'C №18, 2015
О себе
KM C'n'C №18, 2015
Full-stack Symfony2-developer
Фрилансер
Введение
KM C'n'C №18, 2015
Требования
Symfony2-приложений
KM C'n'C №18, 2015
php.ini settings
php extensions
database server
web-server
security settings
Системы управления конфигурациями
KM C'n'C №18, 2015
Почему Ansible?
KM C'n'C №18, 2015
- Не требует установки агентов / SSH-based
- Простой в изучении / конфигурации на YAML
- Большой выбор готовых ролей
Основы
структура и терминология
KM C'n'C №18, 2015
Playbook
Структура
vars
roles
requirements.yml
playbook.yml
Запуск
ansible-playbook playbook.yml
KM C'n'C №18, 2015
Role
# roles/vendor.apache defaults handlers meta tasks templates
Структура
# playbook.yml
- hosts: all
roles:
- vendor.apache
Использование
KM C'n'C №18, 2015
Task
# main.yml
- include: check.yml
- include: install.yml
- include: configure.yml
- include: tweak.yml
when: tweak_enabled == true
main.yml
check.yml install.yml configure.yml tweak.yml
Структура
KM C'n'C №18, 2015
# tasks/check.yml
- name: Check
fail: msg="Please define correct 'symfony2_local_root' to copy files from"
when: "'rsync' == symfony2_deploy_strategy and symfony2_local_root is not defined"
KM C'n'C №18, 2015
# tasks/install.yml
- name: Download Composer
get_url:
url: https://getcomposer.org/composer.phar
dest: "~/composer.phar"
mode: 0755
validate_certs: no
KM C'n'C №18, 2015
# tasks/configure.yml
- name: Generate parameters.yml
template:
src: "parameters.yml.js2"
dest: "path/to/app/config/parameters.yml"
KM C'n'C №18, 2015
Defaults & Vars
apache_version: 2.2
some_feature_enabled: true
my_path: "/etc/apache{{ apache_version }}"
KM C'n'C №18, 2015
Templates
# templates/vhost.conf.j2
# {{ ansible_managed }}
<VirtualHost *:{{ item.port | default('80') }}>
ServerName {{ item.servername }}
DocumentRoot {{ item.documentroot }}
</VirtualHost>
KM C'n'C №18, 2015
Galaxy
galaxy.ansible.com
KM C'n'C №18, 2015
Как выбрать роль?
- Названия переменных начинаются с имени роли
- Не имеет зависимостей от других ролей
- Имеет версии (теги)
- Поддерживает несколько платформ
- Разработчик не забросил проект
- Имеет подробный README
username.composer -> composer_variable_name
KM C'n'C №18, 2015
requirements.yml
Структура
--- - src: vendor1.role version: v1.0.0 - src: https://github.com/vendor/rolename
version: v2.0.0
name: vendor2.rolename
Установка зависимостей
ansible-galaxy install -r requirements.yml --force
KM C'n'C №18, 2015
Не храните чужие роли
# ansible.cfg
[defaults]
roles_path = vendor/roles
# .gitignore
/vendor/roles
!/vendor/roles/.gitkeep
Не изобретайте велосипед
Улучшайте и используйте готовые роли
KM C'n'C №18, 2015
Подготовка своей роли к публикации
- Понятный README
- Тесты
- Присвоение тега на github.com
- meta/main.yml
KM C'n'C №18, 2015
Тесты
# tests/Vagrantfile Vagrant.configure(2) do |config| config.vm.box = 'ubuntu/trusty64' config.vm.provision :ansible do |ansible| ansible.playbook = '../playbook.yml' ansible.extra_vars = { ansible_ssh_user: 'vagrant', vagrant: true } end end
KM C'n'C №18, 2015
# tests/ansible.cfg
[defaults]
roles_path = ../vendor/roles
KM C'n'C №18, 2015
Meta
# meta/main.yml
galaxy_info:
author: username
description: Install and Configure Something
license: MIT
min_ansible_version: 1.4
platforms:
- name: Ubuntu
versions:
- all
KM C'n'C №18, 2015
Попробуем?
Развернем symfony2-приложение
KM C'n'C №18, 2015
ORO CRM
KM C'n'C №18, 2015
Подготовленный playbook
KM C'n'C №18, 2015
Спасибо
KM C'n'C №18, 2015
Deploy Symfony2 apps with Ansible
By igor_mukhin
Deploy Symfony2 apps with Ansible
- 643