Ansible Copy

Ansible fornece a funcionalidade de copiar os arquivos e diretórios com a ajuda de módulos de cópia e de busca. O módulo copiar é versátil.

O módulo copiar é usado para copiar arquivos e pastas da máquina local para os servidores remotos. E o módulo fetch para copiar dados da máquina remota para a máquina local.

Se você quiser copiar arquivos após substituir por variáveis, tais como arquivos de configuração com mudanças de IP, ou você também pode usar o módulo de modelo. Você pode executar muitas tarefas complicadas com este módulo.

Copiar arquivos do local para o remoto

O módulo de cópia é usado para verificar o conjunto de arquivos no parâmetro src, na máquina local. E então, ele irá copiar os dados para o caminho da máquina remota especificado no destpath.

No exemplo abaixo, iremos copiar o arquivo sample.txt no diretório home da máquina local, para o destino é o diretório /tmp no servidor remoto. Desde que não estejamos especificando nenhuma permissão para o arquivo, a permissão padrão para o arquivo remoto é definida como -rw-rw-r-(0664).

Caso 1: Se o arquivo já estiver presente no servidor remoto, mas o conteúdo do arquivo fonte for diferente, então o arquivo de destino será modificado. Você pode controlar isso definindo o parâmetro force. O padrão está definido para sim. Então ele modifica o arquivo por padrão.

Se você não quiser que o arquivo seja modificado, se o arquivo fonte for diferente, então você pode definir Não. A seguinte tarefa irá copiar o arquivo se o arquivo não existir no servidor remoto.

Caso 2: Se o arquivo não foi encontrado na máquina local, o Ansible throw an error.

Por exemplo: fatal: : FAILED!=> {“changed”: falso, “failed”: verdadeiro, “msg”: “incapaz de encontrar ‘~/sample.txt’ nos caminhos esperados.”}

Copying Directories from Local to Remote

Pode também copiar pastas ou directórios usando o módulo Ansible copy. Se o caminho ‘src’ for um diretório, então ele será copiado recursivamente. Ou o diretório inteiro será copiado.

Existem duas variações diferentes para esta tarefa. Dependendo se você tem o caractere ‘/’ no ponto final do caminho ‘src’ ou não.

O primeiro método irá criar um diretório no servidor remoto, com o nome definido no parâmetro src. Depois, ele irá copiar e colar o conteúdo da pasta de origem nesse diretório.

Se você quiser este comportamento, então ele não dará o ‘/’ após o caminho no parâmetro src.

no exemplo abaixo, primeiro criará um diretório chamado copy_dir_ex na /tmp do servidor remoto.

Copiar arquivos entre diretórios na máquina remota

Cópia possível permite copiar os arquivos de um diretório para outro na mesma máquina remota. Mas isto é apenas para arquivos, não para os diretórios. Você pode usar o parâmetro remote_src para deixar o Ansible saber suas intenções.

O código abaixo irá copiar /tmp/test.txt para o diretório home do usuário (/home//).