Role - tripleo-transfer

Role Documentation

Welcome to the “tripleo_transfer” role documentation.

Role Defaults

This section highlights all of the defaults and variables set within the “tripleo_transfer” role.

# All variables intended for modification should be placed in this file.


# Required variables:
#   * `tripleo_transfer_src_host` -- the inventory name of the source host
#   * `tripleo_transfer_src_dir` -- directory on the source host to transfer from
#   * `tripleo_transfer_dest_host` -- the inventory name of the destination host
#   * `tripleo_transfer_dest_dir` -- directory on the destination host to transfer to
tripleo_transfer_debug: '{{ ((ansible_verbosity | int) >= 2) | bool }}'
tripleo_transfer_src_become: true
tripleo_transfer_dest_become: true
tripleo_transfer_flag_file:
# tripleo_transfer_key_location: location of the private key used to connect
# from src host to dest host.
tripleo_transfer_key_location: ~/transfer_key
# tripleo_transfer_cleanup_keys: clean up the keypair from the source host
# and remove public key from destination host when true.
tripleo_transfer_cleanup_keys: true
# tripleo_transfer_exclude: a list of patterns to selectively exclude
# some files from the transfer to the destination host.
tripleo_transfer_exclude: []
# tripleo_transfer_include: a list of patterns to selectively include
# some files from the transfer to the destination host. Files in this list
# are not filtered out with tripleo_transfer_exclude.
tripleo_transfer_include: []
# tripleo_transfer_sync_options: override default transfer options
tripleo_transfer_sync_options: --delay-updates -F --ignore-times --compress --archive
  --delete

Role Variables: main.yml

# All variables intended for internal use should be placed in this file.


# make sure we have a trailing forward slash in the src, otherwise rsync creates extra dir
tripleo_transfer_src_dir_safe: '{{ tripleo_transfer_src_dir }}/'

# make sure we do not have a trailing forward slash in the dest
tripleo_transfer_dest_dir_safe: "{{ tripleo_transfer_dest_dir | regex_replace('\\\
  /$', '') }}"

Molecule Scenarios

Molecule is being used to test the “tripleo_transfer” role. The following section highlights the drivers in service and provides an example playbook showing how the role is leveraged.

Scenario: default

Molecule Inventory
hosts:
  all:
    hosts:
      controller1:
        ansible_host: 127.0.0.2
      controller2:
        ansible_host: 127.0.0.3
    vars:
      test_src_dir: /tmp/src_files
      test_src_files:
      - testfile1
      - testfile2
      - testfile3
      test_dst_dir: /tmp/dst_files
      test_dst_files:
      - testfile4
      - testfile5
      - testfile6
      test2_src_dir: /tmp/src_files_2
      test2_dst_dir: /tmp/dst_files_2
      test2_src_files:
      - transferred
      test2_exclude_src_files:
      - skip1
      - skip2
      - donotcopy
      test2_include_pattern:
      - transferred
      test2_exclude_pattern:
      - skip*
      - donotcopy
Example default playbook
- name: Collect facts
  hosts: all
  gather_facts: false
  any_errors_fatal: true
  tasks:
  - name: Gather a minimal set of facts
    setup:
      gather_subset: '!all,min'

- name: Converge
  hosts: localhost
  connection: local
  any_errors_fatal: true
  tasks:
  - name: Install openssl for file creation
    package:
      name: openssl
      state: present
    become: true

  - name: Create test directories
    file:
      state: directory
      path: '{{ item }}'
    loop:
    - '{{ test_src_dir }}'
    - '{{ test_dst_dir }}'
    - '{{ test2_src_dir }}'
    - '{{ test2_dst_dir }}'

  - name: Create 1GB src test files with random content
    shell: >-
      openssl rand -out {{ item }} -base64 $(( 2**30 * 3/4 ))
    args:
      chdir: '{{ test_src_dir }}'
      creates: '{{ item }}'
    loop: '{{ test_src_files }}'

  - name: Create empty dst test files with random content
    file:
      path: '{{ test_dst_dir }}/{{ item }}'
      state: touch
    loop: '{{ test_dst_files }}'

  - include_role:
      name: tripleo_transfer
    vars:
      tripleo_transfer_src_host: controller2
      tripleo_transfer_src_dir: '{{ test_src_dir }}'
      tripleo_transfer_dest_host: controller1
      tripleo_transfer_dest_dir: '{{ test_dst_dir }}'

  - name: Create empty src test files
    file:
      state: touch
      path: '{{ test2_src_dir }}/{{ item }}'
    loop: '{{ test2_src_files + test2_exclude_src_files }}'

  - include_role:
      name: tripleo_transfer
    vars:
      tripleo_transfer_src_host: controller2
      tripleo_transfer_src_dir: '{{ test2_src_dir }}'
      tripleo_transfer_dest_host: controller1
      tripleo_transfer_dest_dir: '{{ test2_dst_dir }}'
      tripleo_transfer_exclude: '{{ test2_exclude_pattern }}'
      tripleo_transfer_include: '{{ test2_include_pattern }}'