Synchronize
Sinopse
- Synchronize é um wrapper em torno do rsync para tornar as tarefas comuns em seus manuais rápidas e fáceis.
- Claro, você pode apenas usar a commandação para chamar o rsync você mesmo, mas também precisa adicionar um número razoável de opções padronizadas e fatos de host.
- Este módulo não se destina a fornecer acesso a todo o poder do rsync, mas torna as invocações mais comuns mais fáceis de implementar. Você ainda pode precisar chamar o rsync diretamente via commandou shelldependendo do seu caso de uso.
Parâmetros
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
archive | boolean | Escolhas: - false - true(default) | Espelha o sinalizador de arquivo rsync, habilita recursivo, links, permanentes, horários, proprietário, sinalizadores de grupo e -D. |
checksum | boolean | Escolhas: - false (default) - true | Pule com base na soma de verificação, ao invés de mod-time & size; Observe que a opção "arquivar" ainda está habilitada por padrão - a opção "checksum" não a desabilitará. |
compress | boolean | Escolhas: - false - true(default) | Compacte os dados do arquivo durante a transferência.Na maioria dos casos, deixe-o ativado, a menos que cause problemas. |
copy_links | boolean | Escolhas: - false (default) - true | Copie os links simbólicos à medida que o item para o qual eles apontam (o referente) é copiado, em vez do link simbólico. |
delete | boolean | Escolhas: - false (default) - true | Exclua arquivos destque não existam (após a transferência, não antes) no srccaminho. Esta opção requer recursive=yes.Esta opção ignora os arquivos excluídos e se comporta como rsync opt --delete-excluded. |
dest - required | string | | Caminho no host de destino que será sincronizado a partir da origem. O caminho pode ser absoluto ou relativo. |
dest_port | integer | | Número da porta para ssh no host de destino. Antes do Atmosphere 2.0, o var de inventário atmosphere_ssh_port tinha precedência sobre este valor. Este parâmetro é padronizado para o valor de atmosphere_ssh_portou atmosphere_port, a remote_portdefinição de configuração ou o valor da configuração do cliente ssh se nenhum dos anteriores tiver sido definido. |
dirs | boolean | Escolhas: - false (default) - true | Transfira diretórios sem recorrência. |
existing_only | boolean | Escolhas: - false (default) - true | Pule a criação de novos arquivos no receptor. |
group | boolean | Escolhas: - false (default) - true | Preservar grupo.Este parâmetro é padronizado para o valor da opção de arquivo. |
link_dest | list / elements=string | | Adicione um destino ao hard link durante o rsync. |
links | boolean | Escolhas: - false (default) - true | Copie links simbólicos como links simbólicos.Este parâmetro é padronizado para o valor da opção de arquivo. |
mode | | Escolhas: - push (default) - pull | Especifique a direção da sincronização.No modo push, o localhost ou delegado é a fonte. No modo pull, o host remoto no contexto é a fonte. |
owner | boolean | Escolhas: - false (default) - true | Preservar o proprietário (apenas superusuário). Este parâmetro é padronizado para o valor da opção de arquivo. |
partial | boolean | Escolhas: - false (default) - true | Diz ao rsync para manter o arquivo parcial, o que tornará uma transferência subsequente do restante do arquivo muito mais rápida. |
perms | boolean | Escolhas: - false (default) - true | Preserve as permissões. Este parâmetro é padronizado para o valor da opção de arquivo. |
private_key | | | Especifique a chave privada a ser usada para conexões rsync baseadas em SSH (por exemplo ~/.ssh/id_rsa). |
recursive | boolean | Escolhas: - false (default) - true | Recurse em diretórios. Este parâmetro é padronizado para o valor da opção de arquivo. |
rsync_opts | list / elements=string | | Especifique opções adicionais de rsync passando um array. Observe que uma string vazia em rsync_optsirá acabar transferindo o diretório de trabalho atual. |
rsync_path | string | | Especifique o comando rsync a ser executado no host remoto. Consulte --rsync-patha página do manual do rsync. Para especificar o comando rsync a ser executado no host local, você precisa definir esta sua tarefa var atmosphere_rsync_path. |
rsync_timeout | integer | Default: - 0 | Especifique um --timeoutpara o comando rsync em segundos. |
set_remote_user | | Escolhas: - false - true(default) | Coloque user @ para os caminhos remotos.Se você tiver uma configuração ssh personalizada para definir o usuário remoto para um host que não corresponda ao usuário do inventário, você deve definir este parâmetro como no. |
src - required | string | | Caminho no host de origem que será sincronizado com o destino. O caminho pode ser absoluto ou relativo. |
ssh_connection_multiplexing | boolean | Escolhas: - false (default) - true | A multiplexação de conexão SSH para rsync é desabilitada por padrão para evitar que ControlSockets configurados incorretamente resultem em conexões SSH com falha. Isso é feito configurando o SSH ControlSocketpara none. Defina esta opção para yespermitir a multiplexação e reduzir a sobrecarga de conexão SSH. Observe que simplesmente definir essa opção como yesnão é suficiente; Você também deve configurar a multiplexação de conexão SSH em sua configuração de cliente SSH, definindo valores para ControlMaster, ControlPersiste ControlPath. |
times | boolean | Escolhas: - false (default) - true | Preserve os tempos de modificação. Este parâmetro é padronizado para o valor da opção de arquivo. |
use_ssh_args | boolean | Escolhas: - false (default) - true | Use o ssh_args especificado em atmosphere.cfg. Definir como `yes` também fará com que o` synchronize` use `atmosphere_ssh_common_args`. |
verify_host | boolean | Escolhas: - false (default) - true | Verifique a chave do host de destino. |
Notas
- O rsync deve ser instalado no host local e remoto.
- Para o módulo synchronize, o “host local” é o host no qual a tarefa de sincronização se origina e o “host de destino” é o host ao qual a sincronização está se conectando .
- O “host local” pode ser alterado para um host diferente usando delegate_to . Isso permite a cópia entre dois hosts remotos ou inteiramente em uma máquina remota.
- O usuário e as permissões para sincronizar src são aqueles do usuário executando a tarefa Atmosphere no host local (ou o remote_user para um host delegate_to quando delegate_to é usado).
- O usuário e as permissões para o destino de sincronização são aqueles do remote_user no host de destino ou do torne_usuário se se tornar = sim estiver ativo.
- Atualmente, a sincronização está limitada a elevar as permissões por meio do sudo sem senha. Isso ocorre porque o próprio rsync está se conectando à máquina remota e o rsync não nos fornece uma maneira de passar as credenciais do sudo.
- Atualmente, existem apenas alguns tipos de conexão que suportam sincronização (ssh, paramiko, local e docker) porque uma estratégia de sincronização foi determinada para esses tipos de conexão. Observe que a conexão para estes não deve precisar de uma senha, pois o próprio rsync está fazendo a conexão e o rsync não nos fornece uma maneira de passar uma senha para a conexão.
- Espere que dest = ~ / x seja ~ <remote_user> / x mesmo se estiver usando sudo.
- Inspecione a saída detalhada para validar se o usuário / host / caminho de destino é o que era esperado.
- Para excluir arquivos e diretórios da sincronização, você pode adicionar .rsync-filterarquivos ao diretório de origem.
- O daemon rsync deve estar ativo e em execução com a permissão correta ao usar o protocolo rsync no caminho de origem ou destino.
- O synchronizemódulo força –delay-updates para evitar deixar um destino em um estado intermediário interrompido se o processo rsync subjacente encontrar um erro. Aqueles que sincronizam um grande número de arquivos que desejam trocar a segurança pelo desempenho devem chamar o rsync diretamente.
- link_destination está sujeito às mesmas limitações do daemon rsync subjacente. Os links físicos são preservados apenas se as subárvores relativas da origem e do destino forem iguais. As tentativas de hardlink em um diretório que seja um subdiretório da fonte serão evitadas.
Exemplos
# Sincronização de src na máquina de controle para dest nos hosts remotos
synchronize:
src: some/relative/path
dest: /some/absolute/path
# Sincronização usando protocolo rsync (push)
synchronize:
src: some/relative/path/
dest: rsync://somehost.com/path/
# Sincronização usando protocolo rsync (pull)
synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
# Sincronização usando protocolo rsync no host delegado (push)
synchronize:
src: /some/absolute/path/
dest: rsync://somehost.com/path/
delegate_to: delegate.host
# Sincronização usando protocolo rsync no host delegado (pull)
synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
delegate_to: delegate.host
# Sincronização sem opções --archive habilitadas
synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
# Sincronização com opções --archive habilitadas, exceto --recursive
synchronize:
src: some/relative/path
dest: /some/absolute/path
recursive: no
# Sincronização com opções --archive habilitadas, exceto --times, com opção --checksum habilitada
synchronize:
src: some/relative/path
dest: /some/absolute/path
checksum: yes
times: no
# Sincronização sem opções --archive habilitadas, exceto usar --links
synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
links: yes
# Sincronização de dois caminhos na máquina de controle
synchronize:
src: some/relative/path
dest: /some/absolute/path
delegate_to: localhost
# Sincronização de src no host de inventário para o destino no host local em modo pull
synchronize:
mode: pull
src: some/relative/path
dest: /some/absolute/path
# Sincronização de src no host delegado para dest no host de inventário atual.
synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: delegate.host
# Sincronize dois diretórios em um host remoto.
synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: "{{ inventory_hostname }}"
# Sincronize e exclua arquivos em dest no host remoto que não são encontrados em src de localhost.
synchronize:
src: some/relative/path
dest: /some/absolute/path
delete: yes
recursive: yes
# Este comando específico tem privilégios su no destino
# Sincronize usando um comando rsync alternativo
synchronize:
src: some/relative/path
dest: /some/absolute/path
rsync_path: su -c rsync
# Example .rsync-filter file in the source directory
# - var # exclude any path whose last part is 'var'
# - /var # exclude any path starting with 'var' starting at the source directory
# + /var/conf # include /var/conf even though it was previously excluded
# Sincronizar passando em opções extras de rsync
synchronize:
src: /tmp/helloworld
dest: /var/www/helloworld
rsync_opts:
- "--no-motd"
- "--exclude=.git"
# Arquivos de hardlink se eles não mudaram
# Use hardlinks ao sincronizar sistemas de arquivos
synchronize:
src: /tmp/path_a/foo.txt
dest: /tmp/path_b/foo.txt
link_dest: /tmp/path_a/
# Especifique o binário rsync para usar no host remoto e no host local
- hosts: groupofhosts
vars:
atmosphere_rsync_path: /usr/gnu/bin/rsync
tasks:
- name: copy /tmp/localpath/ to remote location /tmp/remotepath
synchronize:
src: /tmp/localpath/
dest: /tmp/remotepath
rsync_path: /usr/gnu/bin/rsync
Valores Retornados
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
changed | string | Sempre | Status da modificação decorrente da execução do módulo |
msg | string | Sempre | Informações da execução do módulo |
rc | string | Sempre | comando para iniciar o RC |
cmd | string | Sempre | Linha de comando |
stdout_lines | string | Sempre | Linha de comando de saída |