Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como instalar docker numa EC2 com ansible e terraform?

Pessoal, alguem sabe como instalar o docker e docker compose com ansible? Procurei bastante no google mas nenhuma solucao funcionou aqui. Estou usando uma EC2 Ubuntu 20.04, t3.medium.

3 respostas
solução!

Tudo bem Gabriel?

Para instalar o docker podemos seguir o guia oficial ,o guia recomenda instalar pelo repositório, e para isso temos que adicionar um par de chaves, podemos usar esse trecho de código para isso:


  tasks:
    - name: Instalar os pacotes recomendados pelo docker e para o ansible
      apt: 
          pkg:
              - apt-transport-https
              - software-properties-common
              - ca-certificates
              - curl
              - gnupg
              - lsb-release
          state=latest 
          update_cache=yes

    - name: adiciona a chave do repositorio do docker
      apt_key:
        url: https://download.docker.com/linux/ubuntu/gpg
        state: present

    - name: Add o repositorio
      apt_repository:
        repo: deb https://download.docker.com/linux/ubuntu focal stable
        state: present

    - name: atualiza o apt e instala o docker
      apt: 
          update_cache=yes 
          pkg:
              - docker-ce 
              - docker-ce-cli 
              - containerd.io
          state=latest

Para podermos controlar o docker com o docker compose, não precisamos instala-lo, o ansible já tem um modulo para podermos utiliza-lo e podemos usar a documentação do modulo e vermos como ele funciona. Este é um bom exemplo que podemos executar se já tivermos o docker-compose.yml ou docker-compose.yaml:

  tasks:
    - community.docker.docker_compose:
        project_src: path
        state: present

Onde o project_src: é o caminho até o arquivo, também temos a opção de executar a tarefa colocando o docker compose dentro do próprio Ansible:

  tasks:
    - community.docker.docker_compose:
        project_name: nome
        definition:
          version: '2'
          services:
            db:
              image: postgres
            web:
              build: "{{ playbook_dir }}/flask"
              command: "python manage.py runserver 0.0.0.0:8000"
              volumes:
                - "{{ playbook_dir }}/flask:/code"
              ports:
                - "8000:8000"
              depends_on:
                - db
      register: output

Se ficou mais alguma duvida é só mandar aqui novamente, espero ter ajudado, continue se esforçando e bons estudos

Muito obrigado pela ajuda, Leonardo!!! Uma dúvida, esse par de chaves seria o que exatamente?

De forma resumida o par de chaves é uma medida de segurança, que garante o repositório.

De forma um pouco mais detalhada, esse par de chaves são chaves publico-privado, com elas, quem mantem o repositório, como o docker nesse caso, pode "assina-lo digitalmente", fazendo com que seja impossível alguém redirecionar as requisições e instalar software malicioso.

Um repositório sem um par de chaves, é um repositório vulnerável, é possível que alguém crie um repositório bem parecido, porem com programas maliciosos, com virus e malwares, e o gerenciador de pacotes não consegue diferencia-los. Então é sempre importante adicionar as chaves corretas e atualizadas, nunca instale chaves se você não sabe de ondem elas vem.

Espero que tenha sanado a sua duvida, qualquer coisa é perguntar aqui.