Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

whoami

Slide 3

Slide 3 text

AMBIENTES DE DESENVOLVIMENTO

Slide 4

Slide 4 text

Developers vs. SysAdmins ● “Mas funciona na minha máquina!!!” ● “A culpa é do servidor” ● “A culpa é da aplicação” ● “Instala só mais esse pacote”

Slide 5

Slide 5 text

Como garantir um processo de desenvolvimento mais consistente?

Slide 6

Slide 6 text

DRIVE ● Descartável ● Replicável ● Isolado ● Versionado ● (Environment)

Slide 7

Slide 7 text

DRIVE ● Descartável ● Replicável ● Isolado ● Versionado ● (Environment) Máquinas Virtuais, Containers Ferramentas de Config Management (automação)

Slide 8

Slide 8 text

Ferramentas de Config Mgmt ● Puppet, Chef, Ansible... ● Grande evolução nos últimos anos ● Mais acessível para desenvolvedores ● Não estão limitadas a ambientes em produção!

Slide 9

Slide 9 text

OPSFIRST Não deixe para amanhã o que pode melhorar seu workflow HOJE

Slide 10

Slide 10 text

OpsFirst ● OPS antes de DEV ● Objetivo: facilitar a transição de DEV para PROD ● Trazendo os benefícios de ferramentas de configuração para a fase inicial de desenvolvimento ● Facilita bastante o deploy na fase final do projeto

Slide 11

Slide 11 text

OPSFIRST NA PRÁTICA com Vagrant e Ansible

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Ansible – visão geral ● Usa uma linguagem simples – YAML ● Bastante “developer-friendly” ● Grande quantidade de módulos built-in ● Arquitetura “agentless” - usa apenas SSH ● Usado por grandes nomes como Twitter, Atlassian, até NASA

Slide 14

Slide 14 text

Exemplo de Playbook --- - hosts: all sudo: true tasks: - name: Update apt-cache apt: update_cache=yes - name: Install Nginx apt: pkg=nginx state=latest

Slide 15

Slide 15 text

Criando Playbooks: recursos importantes ● Variáveis ● Loops ● Condicionais ● Templates ● Ansible Vault

Slide 16

Slide 16 text

Usando Ansible com Vagrant #Vagrantfile Vagrant.configure("2") do |config| config.vm.box = "hashicorp/precise64" config.vm.provision "ansible" do |ansible| ansible.playbook = "playbook.yml" end end

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Usando o PHANSIBLE Como “boilerplate”

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Passando para Multistage

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Um pouco sobre Ansible Standalone

Slide 24

Slide 24 text

Inventórios [phansible-web] 192.168.33.99 ansible/inventories/dev [staging] 104.131.202.76 ansible/inventories/staging

Slide 25

Slide 25 text

Configuração SSH ● Cenário ideal: conectar com um simples ssh meu-servidor ● Crie um usuário no servidor ● Adicione ao sudoers com NOPASSWD ● Copie a chave SSH local com ssh-copy-id ● Instruções detalhadas: bit.ly/ansible-ssh

Slide 26

Slide 26 text

Ansible standalone: comandos ad-hoc $ ansible all -m ping $ ansible webservers -a “php -v” $ ansible all -i staging -a “sudo apt-get update” ansible group [-i inventory] [-m module]

Slide 27

Slide 27 text

Ansible standalone: executando playbooks $ ansible-playbook -i staging -l webservers playbook.yml $ ansible-playbook playbook.yml --list-hosts $ ansible-playbook playbook.yml --list-tasks ansible-playbook [-i inventory] [-l group] playbook.yml

Slide 28

Slide 28 text

PROTIP: VARIÁVEIS DE GRUPO

Slide 29

Slide 29 text

group_vars project_root: /vagrant doc_root: /vagrant/web sys_packages: ["vim"] system_user: vagrant system_group: vagrant group_vars/phansible-web project_root: /var/www doc_root: /var/www/web sys_packages: ["vim","fail2ban"] system_user: www-data system_group: www-data project_root: /vagrant doc_root: /vagrant/web sys_packages: ["vim"] system_user: vagrant system_group: vagrant project_root: /vagrant doc_root: /vagrant/web sys_packages: ["vim"] system_user: vagrant system_group: vagrant group_vars/staging

Slide 30

Slide 30 text

PERGUNTAS?

Slide 31

Slide 31 text

https://joind.in/14359