Como copiar vários arquivos em Ansible

Como copiar vários arquivos em Ansible
Ansible é uma ferramenta de automação bacana que permite a automação de vários recursos. Ele concede controle total ao usuário em seus dispositivos, estejam eles locais ou remotos. Ele vem repleto de vários módulos (cerca de 750 - 800 deles), que provam ser bastante benéficos para os usuários. O manual Ansible é simples de escrever e ajuda no desempenho dos deveres atribuídos a ele como definir o tempo para um determinado trabalho ou fazer uma pausa em determinadas atividades etc.

Há momentos em que podemos precisar copiar vários arquivos de um dispositivo para outro. Ansible também fornece vários módulos para isso. Esses módulos nos permitem copiar vários arquivos ao mesmo tempo e enviá -los por dispositivos remotos. Isso nos leva ao assunto deste artigo: o módulo de cópia Ansible, que estaremos implementando neste guia.

Copie vários arquivos

Caso queremos transferir vários arquivos, precisamos fazer um manual com inúmeras tarefas para cada cópia. Embora isso possa resolver o problema, não é muito eficiente em termos de tempo e pode ficar bastante tedioso. Consequentemente, teríamos um grande manual com mais chances de erros humanos. Também seria mais difícil depurar. Felizmente, podemos usar várias outras abordagens para resolver esse problema que são muito mais convenientes e salvar nossos recursos.

Usando loops

Em geral, Ansible é uma ferramenta de automação simples que não requer conhecimento de programação completo. No entanto, se você tiver o conhecimento básico de como um código-fonte funciona, ele pode ser realmente útil em Ansible e fornecer uma visão mais profunda para resolver vários problemas que você encontra de tempos em tempos.

Um loop na programação de computadores é um conjunto de instruções que diz ao sistema para repetir um determinado conjunto de comandos para uma quantidade especificada de vezes ou até que uma determinada condição seja atendida.

Exemplos

-Nome: copie todos os arquivos em myconf/
cópia de:
src: itens
dest:/etc/myApp/
Proprietário: raiz
Grupo: Raiz
Modo: u = rw, g = rw, o = r
With_fileglob:
-"MyConf /*"

Execute o manual usando este comando no terminal Linux.

Livro de teste Ansible-PlayBook.yml

O script acima copia "myconf/" junto com todo o seu conteúdo no diretório de destino/etc/myApp/no host remoto. O comando de cópia é emitido para a transferência de conteúdo copiado. With_fileglob é o loop que é executado até que os arquivos sejam completamente copiados para o host remoto.

Essa abordagem funciona quando há vários arquivos para serem transferidos para o mesmo diretório.

Cópia do diretório

Esta é outra abordagem para enviar cópias de arquivo para o host remoto. Aqui, copiamos o diretório inteiro que contém os arquivos que precisamos transferir e enviá -los para o nó remoto. Pode ser um pouco demorado, pois é preciso primeiro mover todos os arquivos para um determinado diretório e depois copiar o diretório completamente. Um exemplo demonstra isso.

-Nome: Cópia do diretório para dispositivo remoto
cópia de:
src: myconfig/
dest: etc/myfolder
Proprietário: raiz
Grupo: Raiz
Modo: u = rw, g = rw, o = r

O script acima copia o diretório myconfig/para um dispositivo remoto com destino/etc/myFolder. É uma transferência de diretório inter. O segmento "modo" simplesmente garante que os objetos do sistema de arquivos sejam criados com as permissões corretas. Esses modos podem ser visualizados na página principal do módulo em "Parâmetros de cópia do módulo".

Copiando arquivos para vários destinos remotos

Para uma eficiência adicional na cópia de vários arquivos, podemos usar um loop para enviar arquivos para vários destinos completamente. Vamos usar o mecanismo de loop para enviar 4 utilitários para o host remoto de uma só vez.

-Nome: Copiando vários arquivos para vários destinos
cópia de:
src: item.src
dest: item.dest
Proprietário: raiz
Grupo: Raiz
Modo: u = rw, g = rw, o = r
com itens:
-src: setup1.conf, dest:/etc/setup1f/
-src: setup2.conf, dest:/etc/setup2f/
-src: setup3.conf, dest:/etc/setup3f/
-src: setup4.conf, dest:/etc/setup4f/

O código acima copia os arquivos de configuração de 4 utilitários do proprietário da raiz para o host remoto no diretório /etc /instalação. O item.SRC ”indica que mais de 1 item está sendo copiado da máquina de destino.

Copie arquivos de um destino para outro no host remoto

Com Ansible, também podemos copiar arquivos de um destino para outro no host remoto. Embora este procedimento seja válido para arquivos, ele não funciona para diretórios. Um pequeno script que transfere um arquivo de teste da pasta1 para a pasta2 é mostrado abaixo.

-Nome: Transferência de arquivos no host remoto
cópia de:
src: $ home/pasta1/test_file
Remote_src: true
dest: $ home/pasta2/test_file

Crie um arquivo de backup no host remoto antes de copiar

Há momentos em que podemos copiar outro arquivo por engano. Um remédio para evitar esses problemas é criar um arquivo de backup no servidor remoto.

O módulo de cópia Ansible vem com um parâmetro de "backup" para combater exatamente isso. Caso um arquivo remoto esteja lá e não seja o mesmo que o arquivo copiado, um novo arquivo será criado. A diferença é que o novo arquivo será anexado ao registro de data e hora atual e o nome do arquivo original. Por padrão, o parâmetro de backup tem seu valor definido como 'não'.

Por exemplo, o script a seguir cria um backup de “MyScript.txt ”no diretório /abc do host remoto. Será nomeado algo como 'MyScript.TXT.8565.2022-03-17@20: 51: 18 '.

- Hosts: Blocks
tarefas:
- Nome: exemplo de backup de arquivo de cópia Ansible
cópia de:
src: ~/myscript.TXT
dest: /abc
Backup: Sim

Conclusão

Neste artigo, analisamos o módulo de cópia e seus parâmetros. Vimos como poderíamos usar várias abordagens para transferir vários arquivos do host local para o remoto e também manipular certos aspectos, como alterar o diretório de arquivos copiados remotamente ou transferir vários arquivos para vários destinos.

Isso foi tudo para o módulo de cópia em Ansible, juntamente com procedimentos de cópia para vários arquivos entre dispositivos. Felizmente, qualquer confusão que você teve em relação ao mecanismo de cópia Ansible é liberada após passar por este artigo.