Copy

Documentação oficial: https://docs.ansible.com/ansible/latest/modules/copy_module.html

  • Modulo copy copia arquivos locais/remotos para destinos locais/remotos.

Opções

Parâmetro Opção/Default Descrição
attributes
(add em 2.3)
Atributo que um diretório ou arquivo deve ter. Para descobrir quais opções/flags disponíveis, consulte a página man do comando chattr na máquina de destino. Comando possuí os atributos exibidos pelo lsattr. = O operador é escolhido por padrão, de outra forma, os operadores + ou - precisam ser incluídos na string Apelido: attr
backup
bool
Opções:
no ←
yes
Cria um arquivo de backup incluindo informação timestamp para que você consigo restaurar caso tenha algum problema.
checksum
(add em 2.5)
Checagem do arquivo via Checksum SHA1. Verifica se a cópia do arquivo foi bem sucedida. Caso opção não seja informada, Ansible calculará usando o arquivo de origem.
content Quando usado, você define conteúdo do arquivo. Caso queira utilizar manipulação de arquivos avançada, consulte o módulo template.
decrypt
bool
(add em 2.4)
Opções:
yes ←
no
Está opção descriptografa arquivos de origem utilizando o Ansible Vault.
dest required Caminho absoluto para onde arquivo(s) deve(m) ser copiado(s). Se origem for um diretório, o destino também deve ser um. Se dest é um caminho inexistente, termina com “/” ou origem for um diretório, o dest será criado. Se origem e dest forem arquivos, o arquivo principal do dest não será criado, se ela ainda não existir, a tarefa falhará.
directory_mode
(add em 1.5)
Defina este modo para fazer uma cópia recursiva dos diretórios. Se parâmetro não for definido, usaremos os padrões do sistema. O modo só é definido em diretórios novos, não afetando aqueles que já existiam.
follow
bool
(add em 1.8)
Opções: no ← yes Essa opção/flag indica que os links do sistema de arquivos de destino devem ser seguidos (Se existirem).
force
bool
Opções:
yes ←
no
A flag/opção padrão é yes (sim). Ele substituirá o arquivo remoto quando arquivo for diferente do origem. Se no (não), o arquivo só será substituído se não existir. Apelido: thirsty
group Nome do grupo que será aplicado ao arquivo ou diretório. Função similar comando chown.
local_follow
bool
(Add em 2.4)
Opções: no yes ← Essa opção indica que os links na arvore do sistema de arquivos de origem devem ser seguidos. (Se existir)
mode Permissão em que arquivo ou diretório deve ter. Caso você esteja acostumado com chmod, lembre-se que as opção são octais. Você deve adicionar um zero à esquerda para que analisar YAML do Ansible saiba que é um número octal. Exemplo: (0644 ou 01777) ou cite [ ‘blablabla’ ] Exemplo: ‘644’ ou ‘1777’ para que o Ansible receba uma string e possa fazer sua própria conversão em número. Caso não seja definido corretamente, os números serão calculados de forma inesperada. A partir da versão 1.8, o modo pode ser especificado de forma simbólica. Exemplo: (u+rwx ou u=rw,g=r,o=r). A partir da versão 2.3 o modo também preserva a sequencia de string especial. Isso significa que ele receberá as mesmas permissões do arquivo de origem.
owner Nome do usuário dono do arquivo ou diretório. . Função similar comando chown.
remote_src
bool
(Add em 2.0)
Opções:
no ←
yes
Se no , ele irá procurar pela origem/maquina principal. Se yes , irá para a máquina remota/alvo usando o src. Opção/Flag Default é no (não). Atualmente, o remote_src não suporta cópia recursiva. remote_src funciona apenas no mode=preserve na versão 2.6.
selevel Padrão: s0 Level é parte do SELinux file context. Este é o atributo MLS / MCS, às vezes conhecido como o range. A característica _default funciona como seuser
serole Role é parte do SELinux file context, _default é uma função que funciona com seuser.
setype Type é parte do SELinux file context, _default é uma função que funciona com seuser.
seuser User é parte do SELinux file context. Será o padrão para a política do sistema. Se aplicável, será definido como _default. Se disponível, ele usará o user como parte da política.
src Caminho local para cópia ao servidor remoto. Pode ser absoluta ou relativa. Se path for um diretório, ele será copia recursivamente. Neste caso, se caminho terminar com barra “/”, somente o conteúdo interno desse diretório será copiado ao destino. Caso contrário, se não terminar com barra “/”, o diretório e todo conteúdo recursivo será copiado. Este comportamento é semelhante ao Rsync.
unsafe_writes
bool
(Add em 2.2)
Opções:
no ←
yes
Por padrão, este modulo utiliza operações atômicas (atomic operations) para evitar corrupção de dados ou leituras inconsistentes, as vezes os sistemas são configurados ou apenas quebrados para prevenir que isto aconteça. Um exemplo são os arquivos montados no docker, que não podem ser atualizados atomicamente de dentro do contêiner e só podem ser gravados de maneira insegura. Essa opção permite que o Ansible retorne a métodos não seguros de atualização de arquivos quando operações atômicas falham (no entanto, isso não força o Ansible a executar gravações inseguras). IMPORTANTE! As gravações inseguras estão sujeitas a condições de execução e podem levar à corrupção de dados.
validate O comando validate é usado antes da copia. O caminho para o arquivo a ser validado é passado via ‘%s’, que deve estar presente como no exemplo abaixo. O comando é passado com segurança para que os recursos do shell, como expansão e pipes, não funcionem.



Exemplos

---
- name: Exemplo: Copiando arquivos definindo permissões. Dono/Grupo/Permissões
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: 0644
 
- name: Igual anterior, mas utilizamos o modulo simbólico. Equivalente 0644
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u=rw,g=r,o=r
 
- name: Outro modo simbólico, adicionando permissões e removendo outros
  copy:
    src: /srv/myfiles/foo.conf
    dest: /etc/foo.conf
    owner: foo
    group: foo
    mode: u+rw,g-wx,o-rwx
 
- name: Copiando arquivo "ntp.conf" e efetuando backup do original se for diferente.
  copy:
    src: /mine/ntp.conf
    dest: /etc/ntp.conf
    owner: root
    group: root
    mode: 0644
    backup: yes
 
- name: Copiando arquivo "sudoers", em seguida, validamos com comando visudo
  copy:
    src: /mine/sudoers
    dest: /etc/sudoers
    validate: /usr/sbin/visudo -cf %s
 
- name: Copiando o arquivo "sudoers" para validarmos remotamente
  copy:
    src: /etc/sudoers
    dest: /etc/sudoers.edit
    remote_src: yes
    validate: /usr/sbin/visudo -cf %s
 
- name: Copiando arquivo e adicionando conteúdo em texto utilizando a flag 'content'
  copy:
    content: '# This file was moved to /etc/other.conf'
    dest: /etc/mine.conf

Valores de retorno

Valores de retorno comuns estão documentados aqui, os campos a seguir são exclusivos deste módulo:

Valor Retorno Descrição
backup_file string changed and if backup=yes Nome do arquivo criado Modelo: /path/to/file.txt.2015-02-12@22:09~
checksum string success sha1 checksum do arquivo depois da execução Modelo: 6e642bb8dd5c2e027bf21dd923337cbb4214f827
dest string success Destino do arquivo/dir Modelo: /path/to/file.txt
gid int success Id do grupo do arquivo após execução Modelo: 100
group string success Grupo do arquivo após execução Modelo: httpd
md5sum string when supported md5 checksum do arquivo após cópia Modelo: 2a5aeecc61dc98c4d780b14b330e3282
mode string success Permissões do alvo após execução Modelo: 420
owner string success Dono do arquivo após execução Modelo: httpd
size success Tamanho do arquivo após execução Modelo: 1220
src changed Origem do arquivo usado para cópia ao servidor de destino. Modelo: /home/httpd/.ansible/tmp/ansible-tmp-1423796390.97-147729857856000/source
state success Status do alvo após execução Modelo: file
uid success Id do dono do arquivo após execução Modelo: 100