Como copiar um ficheiro de um computador local para um host remoto usando o Ansible

AnsibleBeginner
Pratique Agora

Introdução

Ansible é uma poderosa ferramenta de automação de código aberto que simplifica a gestão de infraestruturas e aplicações. Neste tutorial, exploraremos como usar o Ansible para copiar um ficheiro do seu computador local para um host remoto, uma tarefa comum na administração de sistemas e fluxos de trabalho DevOps.

Introdução ao Ansible

Ansible é uma poderosa ferramenta de automação de código aberto que simplifica o processo de gestão e configuração de sistemas remotos. É projetada para ser fácil de usar, sem agentes e altamente escalável, tornando-a uma excelente escolha para profissionais de TI e equipas DevOps.

O que é o Ansible?

Ansible é uma ferramenta de gestão de configuração e orquestração que permite automatizar várias tarefas, como implantação de software, gestão de configuração e provisionamento de infraestrutura. Utiliza uma linguagem simples e legível, chamada YAML, para definir o estado desejado dos seus sistemas e, em seguida, executa as ações necessárias para levar esses sistemas ao estado desejado.

Principais Características do Ansible

  • Sem Agentes: Ansible não requer nenhum software ou agentes especiais a serem instalados nos sistemas remotos que gerencia. Utiliza SSH (ou Gestão Remota de Windows) para comunicar com os hosts remotos.
  • Abordagem Declarativa: Ansible utiliza uma abordagem declarativa, onde define o estado desejado dos seus sistemas e o Ansible cuida das etapas necessárias para atingir esse estado.
  • Design Modular: Ansible é projetado com uma arquitetura modular, o que permite estender sua funcionalidade usando módulos pré-construídos ou criando seus próprios módulos personalizados.
  • Idempotência: As tarefas do Ansible são projetadas para serem idempotentes, o que significa que executar a mesma tarefa várias vezes não alterará o resultado final.
  • Simples e Legível: A sintaxe baseada em YAML do Ansible é fácil de ler e escrever, tornando-a acessível tanto a utilizadores experientes como iniciantes.

Casos de Utilização do Ansible

Ansible pode ser utilizado numa vasta gama de cenários, incluindo:

  • Implantação de software
  • Gestão de configuração
  • Provisionamento de infraestrutura
  • Orquestração de aplicações
  • Gestão de segurança e conformidade
  • Pipelines de Integração Contínua/Entrega Contínua (CI/CD)

Começando com o Ansible

Para começar com o Ansible, precisará de um nó de controlo (o computador a partir do qual irá executar os comandos Ansible) e um ou mais hosts remotos (os sistemas que pretende gerir). No nó de controlo, precisará de instalar o Ansible e configurar o seu ficheiro de inventário, que define os hosts remotos que pretende gerir.

Eis um exemplo de como instalar o Ansible num sistema Ubuntu 22.04:

sudo apt update
sudo apt install -y ansible

Com o Ansible instalado, pode começar a automatizar as suas tarefas de gestão de infraestrutura e aplicações.

Copiando Ficheiros com Ansible

Uma das tarefas mais comuns na automação de infraestruturas é copiar ficheiros do nó de controlo (o computador que executa o Ansible) para os hosts remotos. O Ansible fornece uma forma simples e eficiente de realizar esta tarefa utilizando o módulo copy.

O Módulo copy

O módulo copy no Ansible é usado para copiar ficheiros do nó de controlo para os hosts remotos. Suporta várias opções, tais como:

  • src: O ficheiro ou diretório de origem no nó de controlo.
  • dest: O caminho de destino no host remoto.
  • owner: O proprietário do ficheiro no host remoto.
  • group: O grupo do ficheiro no host remoto.
  • mode: As permissões do ficheiro no host remoto.

Copiando um Único Ficheiro

Para copiar um único ficheiro do nó de controlo para um host remoto, pode utilizar o seguinte playbook Ansible:

- hosts: all
  tasks:
    - name: Copiar um ficheiro
      copy:
        src: /path/to/local/file.txt
        dest: /path/to/remote/file.txt
        owner: myuser
        group: mygroup
        mode: "0644"

Neste exemplo, o módulo copy é usado para copiar o ficheiro file.txt do caminho local /path/to/local/file.txt para o caminho remoto /path/to/remote/file.txt. O ficheiro será propriedade do utilizador myuser e do grupo mygroup, e terá permissões 0644 (escrita e leitura para o proprietário, apenas leitura para o grupo e outros).

Copiando um Diretório

Para copiar um diretório inteiro do nó de controlo para um host remoto, pode utilizar o seguinte playbook Ansible:

- hosts: all
  tasks:
    - name: Copiar um diretório
      copy:
        src: /path/to/local/directory/
        dest: /path/to/remote/directory/
        owner: myuser
        group: mygroup
        mode: "0755"
        recursive: yes

Neste exemplo, o módulo copy é usado para copiar o conteúdo do diretório local /path/to/local/directory/ para o diretório remoto /path/to/remote/directory/. A opção recursive está definida como yes para garantir que toda a estrutura do diretório é copiada. Os ficheiros e diretórios serão propriedade do utilizador myuser e do grupo mygroup, e terão permissões 0755 (leitura, escrita e execução para o proprietário, leitura e execução para o grupo e outros).

Utilizando o módulo copy, pode copiar ficheiros e diretórios do nó de controlo para os hosts remotos de forma fácil e eficiente, otimizando os seus fluxos de trabalho de automação de infraestruturas.

Exemplo Prático

Nesta secção, iremos percorrer um exemplo prático de utilização do Ansible para copiar um ficheiro do nó de controlo para um host remoto.

Preparação do Ambiente

Para este exemplo, assumiremos que tem a seguinte configuração:

  • Nó de controlo: Sistema Ubuntu 22.04 com o Ansible instalado.
  • Host remoto: Sistema Ubuntu 22.04.

Certifique-se de que tem acesso SSH ao host remoto e que o utilizador ansible no nó de controlo tem as permissões necessárias para se conectar ao host remoto.

Criação do Playbook Ansible

Crie um novo ficheiro chamado copy_file.yml no nó de controlo e adicione o seguinte conteúdo:

- hosts: all
  tasks:
    - name: Copiar um ficheiro
      copy:
        src: /path/to/local/file.txt
        dest: /path/to/remote/file.txt
        owner: myuser
        group: mygroup
        mode: "0644"

Neste playbook:

  • hosts: all destina-se a todos os hosts definidos no seu inventário Ansible.
  • O módulo copy é usado para copiar o ficheiro file.txt do caminho local /path/to/local/file.txt para o caminho remoto /path/to/remote/file.txt.
  • O ficheiro será propriedade do utilizador myuser e do grupo mygroup, e terá permissões 0644 (escrita e leitura para o proprietário, apenas leitura para o grupo e outros).

Execução do Playbook Ansible

Para executar o playbook, execute o seguinte comando no nó de controlo:

ansible-playbook copy_file.yml

O Ansible irá conectar-se ao(s) host(s) remoto(s) usando SSH, copiar o ficheiro e definir a propriedade e as permissões apropriadas.

Verificação do Resultado

Após a execução do playbook, pode iniciar sessão no host remoto e verificar se o ficheiro foi copiado com sucesso:

ssh myuser@remote_host
ls -l /path/to/remote/file.txt

Isto deverá apresentar o ficheiro com a propriedade e as permissões esperadas.

Seguindo este exemplo prático, aprendeu a utilizar o módulo copy no Ansible para copiar um ficheiro do nó de controlo para um host remoto. Pode adaptar esta abordagem aos seus casos de utilização e requisitos específicos, e continuar a explorar a vasta funcionalidade que o Ansible fornece para a automação de infraestruturas.

Resumo

Este tutorial Ansible forneceu um guia abrangente sobre como copiar ficheiros do seu computador local para um host remoto. Ao utilizar o módulo de ficheiros do Ansible, pode otimizar a gestão da sua infraestrutura e garantir a distribuição consistente de ficheiros em todo o seu ambiente. Quer seja um utilizador experiente do Ansible ou novo na plataforma, este tutorial equipou-o com o conhecimento para gerir eficientemente as transferências de ficheiros utilizando a ferramenta de automação Ansible.