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//).