Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Ansible

Introdução ao Ansible

Rafael Dutra

June 29, 2019
Tweet

More Decks by Rafael Dutra

Other Decks in Technology

Transcript

  1. RAFAEL DUTRA • Ocupação: Administrador de Sistemas, “Agilista” de Infraestrutura

    e entusiasta Dev*Ops • Segurança da Informação - UNISINOS 2008 - ? • Linux desde 2005 • Desenvolvedor: PHP (Laravel), Shell Script, Ruby • Assuntos de interesse: Vagrant, Puppet, Terraform, Ansible, Linux, Continuous Integration, Continuous Deployment/Delivery, Shell Scripting, IaC, Docker, AWS, Android, Video Games (FPS e RPG)...
  2. AGENDA • O que é Ansible? • Por que utilizar

    Ansible? • O que são os Facts • Ad-Hoc comandos • Como Ansible funciona • Terminologias (Inventory, Tasks, Playbooks, Roles) • Exemplos de arquivos • Demonstração
  3. O QUE É ANSIBLE? • Software Open Source • Ferramenta

    para automação de aplicações, serviços e provisionamento de servidores/máquinas/ativos de rede • Funciona em Linux, Windows e MacOS • Arquitetura agentless (não precisa de agente) • Utiliza arquivos YAML para definir tarefas (tasks)
  4. POR QUE UTILIZAR ANSIBLE? • Provisionamento • Gerenciamento de configuração

    • Deploy de aplicações • Redução de erros • Reuso/reaproveitamento
  5. O QUE SÃOS OS FACTS • Informações extraídas dos hosts.

    ◦ Endereço IP, S.O., Hostname, Disco. • Ver informações disponíveis. - debug: var=ansible_facts • Desativando a coleta dos facts. - hosts: all gather_facts: no
  6. Ad-HOC comandos • Comandos ad-hoc vs playbooks ◦ Realizar ações

    “simples” ◦ Não são reutilizáveis ◦ Realizados via CLI (Command Line Interface)
  7. TERMINOLOGIAS • Inventory: Grupos de máquinas. • Tasks: Simples tarefas

    em um arquivo. • Playbooks: Define o que deve ser executado • Roles: Coleção de variables, services, tasks, files e templates de forma independente (reuso). • Galaxy: Gerenciador de roles, onde a comunidade lança roles para serem utilizadas.
  8. INVENTORY - INTRODUÇÃO • Definição de hosts e grupo de

    hosts • Local padrão é localizado em /etc/ansible/hosts • É possível criar vários arquivos hosts e passar o arquivo como argumento (muito utilizado) • Podemos passar variáveis para hosts e grupos https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
  9. INVENTORY - MÁQUINAS WINDOWS [winservers] winserver01 winserver02 [winservers:vars] ansible_user =

    admin ansible_password = pass ansible_port = 5986 ansible_connection = winrm ansible_winrm_server_cert_validation = ignore
  10. TASKS • Composto de várias instruções que serão seguidas de

    forma estruturadas • Podem ser feitas em vários arquivos e depois fazer o reagrupamento utilizando include_tasks: app.yml
  11. TASKS - name: install curl package # descrição apt: #

    nome do módulo name: curl # nome do pacote state: present # present/absent/latest - name: install git package # descrição apt: # nome do módulo name: git # nome do pacote state: present # present/absent/latest
  12. TASKS - REPETIÇÕES - name: install {{ packages }} package

    apt: name: “{{ packages }}” vars: # variáveis packages: # pacotes - curl - git state: present # estado
  13. PLAYBOOKS - INTRODUÇÃO • Conjunto de instruções • São enviadas

    para uma máquina ou para um grupo delas definido no arquivo hosts • Podemos ter mais de uma instrução por arquivo
  14. PLAYBOOK - NGINX --- - name: running a web playbook

    hosts: apps remote_user: ubuntu tasks: - name: installing nginx package apt: name: nginx state: installed
  15. PLAYBOOK - WORDPRESS STACK --- - name: install WordPress, MySQL,

    Nginx, and PHP-FPM hosts: all remote_user: ubuntu roles: - common - mysql - nginx - php-fpm - wordpress
  16. ROLES ├── defaults │ └── main.yml ├── handlers │ └──

    main.yml ├── LICENSE ├── meta │ └── main.yml ├── README.md ├── tasks │ ├── docker-compose.yml │ ├── docker-users.yml │ ├── main.yml │ ├── setup-Debian.yml │ └── setup-RedHat.yml └── tests ├── README.md └── test.yml 5 directories, 12 files
  17. SERVICES • Controla serviços em hosts remotos e suporta vários

    tipos de sistemas de serviços, como: ◦ BSD init ◦ OpenRC ◦ SysV ◦ Solaris SMF ◦ systemd (normalmente utilizamos) ◦ upstart https://docs.ansible.com/ansible/latest/modules/service_module.html
  18. SERVICES - name: start nginx # descrição service: name: nginx

    # nome do serviço state: started # iniciar serviço enabled: yes # iniciar automaticamente no boot