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

Introdução ao Ansible

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Introdução ao Ansible

Avatar for Rafael Dutra

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