Import the tripleo-transfer role
The tripleo-transfer role from tripleo-common has been imported. This role will now be tested with molecule running in containers allowing us to validate the role functionality on CENT7 in a mock multi-node setup. Change-Id: If34709e5bd2f3a50ad673c1c6744379476c06d1c Signed-off-by: Kevin Carter <kecarter@redhat.com>
This commit is contained in:
parent
fb866f7319
commit
335b5da82f
23
doc/source/roles/role-tripleo-transfer.rst
Normal file
23
doc/source/roles/role-tripleo-transfer.rst
Normal file
@ -0,0 +1,23 @@
|
||||
=======================================
|
||||
TripleO-Ansible Role - tripleo-transfer
|
||||
=======================================
|
||||
|
||||
This role provides for the following services:
|
||||
|
||||
* tripleo-transfer
|
||||
|
||||
|
||||
Default variables
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. literalinclude:: ../../../tripleo_ansible/roles/tripleo-transfer/defaults/main.yml
|
||||
:language: yaml
|
||||
:start-after: under the License.
|
||||
|
||||
|
||||
Example playbook
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
.. literalinclude:: ../../../tripleo_ansible/roles/tripleo-transfer/molecule/default/playbook.yml
|
||||
:language: yaml
|
||||
:start-after: under the License.
|
6
tox.ini
6
tox.ini
@ -286,3 +286,9 @@ basepython = {[testenv:mol]basepython}
|
||||
deps = {[testenv:mol]deps}
|
||||
changedir = {toxinidir}/tripleo_ansible/roles/tripleo-image-serve
|
||||
commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py
|
||||
|
||||
[testenv:mol-tripleo-transfer]
|
||||
basepython = {[testenv:mol]basepython}
|
||||
deps = {[testenv:mol]deps}
|
||||
changedir = {toxinidir}/tripleo_ansible/roles/tripleo-transfer
|
||||
commands = python -m pytest --color=yes --html={envlogdir}/reports.html --self-contained-html {tty:-s} {toxinidir}/tests/test_molecule.py
|
||||
|
22
tripleo_ansible/roles/tripleo-transfer/README.md
Normal file
22
tripleo_ansible/roles/tripleo-transfer/README.md
Normal file
@ -0,0 +1,22 @@
|
||||
tripleo-transfer
|
||||
================
|
||||
|
||||
An Ansible role to files from one overcloud node to another one.
|
||||
|
||||
Optional:
|
||||
|
||||
* `tripleo_transfer_storage_root_dir` -- directory on the Ansible host
|
||||
under which all data is temporarily stored
|
||||
(defaults to "/var/lib/mistral/tripleo-transfer")
|
||||
* `tripleo_transfer_storage_root_become` -- whether to use `become`
|
||||
when creating the storage root directory
|
||||
(defaults to false)
|
||||
* `tripleo_transfer_src_become` -- whether to use `become`
|
||||
on the source host
|
||||
(defaults to true)
|
||||
* `tripleo_transfer_dest_become` -- whether to use `become`
|
||||
on the destination host
|
||||
(defaults to true)
|
||||
* `tripleo_transfer_dest_wipe` -- whether to wipe the destination
|
||||
directory before transferring the content
|
||||
(defaults to true)
|
31
tripleo_ansible/roles/tripleo-transfer/defaults/main.yml
Normal file
31
tripleo_ansible/roles/tripleo-transfer/defaults/main.yml
Normal file
@ -0,0 +1,31 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
# All variables intended for modification should place 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_storage_root_dir: /var/lib/mistral/tripleo-transfer
|
||||
tripleo_transfer_storage_root_become: false
|
||||
tripleo_transfer_src_become: true
|
||||
tripleo_transfer_dest_become: true
|
||||
tripleo_transfer_dest_wipe: true
|
44
tripleo_ansible/roles/tripleo-transfer/meta/main.yml
Normal file
44
tripleo_ansible/roles/tripleo-transfer/meta/main.yml
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
galaxy_info:
|
||||
author: OpenStack
|
||||
description: TripleO OpenStack Role -- tripleo-transfer
|
||||
company: Red Hat
|
||||
license: Apache-2.0
|
||||
min_ansible_version: 2.7
|
||||
#
|
||||
# Provide a list of supported platforms, and for each platform a list of versions.
|
||||
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
|
||||
# To view available platforms and versions (or releases), visit:
|
||||
# https://galaxy.ansible.com/api/v1/platforms/
|
||||
#
|
||||
platforms:
|
||||
- name: Fedora
|
||||
versions:
|
||||
- 28
|
||||
- name: CentOS
|
||||
versions:
|
||||
- 7
|
||||
|
||||
galaxy_tags:
|
||||
- tripleo
|
||||
|
||||
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
# if you add dependencies to this list.
|
||||
dependencies: []
|
@ -0,0 +1,37 @@
|
||||
# Molecule managed
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
{% if item.registry is defined %}
|
||||
FROM {{ item.registry.url }}/{{ item.image }}
|
||||
{% else %}
|
||||
FROM {{ item.image }}
|
||||
{% endif %}
|
||||
|
||||
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates && apt-get clean; \
|
||||
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel python*-dnf bash {{ item.pkg_extras | default('') }} && dnf clean all; \
|
||||
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl python-setuptools bash {{ item.pkg_extras | default('') }} && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml {{ item.pkg_extras | default('') }} && zypper clean -a; \
|
||||
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates {{ item.pkg_extras | default('') }}; \
|
||||
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates {{ item.pkg_extras | default('') }} && xbps-remove -O; fi
|
||||
|
||||
{% for pkg in item.easy_install | default([]) %}
|
||||
# install pip for centos where there is no python-pip rpm in default repos
|
||||
RUN easy_install {{ pkg }}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
CMD ["sh", "-c", "while true; do sleep 10000; done"]
|
@ -0,0 +1,68 @@
|
||||
---
|
||||
driver:
|
||||
name: docker
|
||||
|
||||
log: true
|
||||
|
||||
platforms:
|
||||
- name: overcloud-controller-0
|
||||
hostname: overcloud-controller-0
|
||||
image: centos:7
|
||||
dockerfile: Dockerfile
|
||||
pkg_extras: python-setuptools
|
||||
easy_install:
|
||||
- pip
|
||||
environment: &env
|
||||
http_proxy: "{{ lookup('env', 'http_proxy') }}"
|
||||
https_proxy: "{{ lookup('env', 'https_proxy') }}"
|
||||
command: /sbin/init
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
capabilities:
|
||||
- ALL # CENT7 requires all due to the age of the software
|
||||
volumes:
|
||||
- /run/udev:/run/udev:ro
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
|
||||
- name: overcloud-controller-1
|
||||
hostname: overcloud-controller-1
|
||||
image: centos:7
|
||||
dockerfile: Dockerfile
|
||||
pkg_extras: python-setuptools
|
||||
easy_install:
|
||||
- pip
|
||||
environment:
|
||||
<<: *env
|
||||
command: /sbin/init
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
capabilities:
|
||||
- ALL # CENT7 requires all due to the age of the software
|
||||
volumes:
|
||||
- /run/udev:/run/udev:ro
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
|
||||
provisioner:
|
||||
name: ansible
|
||||
log: true
|
||||
env:
|
||||
ANSIBLE_STDOUT_CALLBACK: yaml
|
||||
|
||||
scenario:
|
||||
test_sequence:
|
||||
- destroy
|
||||
- create
|
||||
- prepare
|
||||
- converge
|
||||
- verify
|
||||
- destroy
|
||||
|
||||
lint:
|
||||
enabled: false
|
||||
|
||||
verifier:
|
||||
name: testinfra
|
||||
lint:
|
||||
name: flake8
|
@ -0,0 +1,26 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
- name: Converge
|
||||
hosts: all
|
||||
roles:
|
||||
- role: "tripleo-transfer"
|
||||
tripleo_transfer_src_host: overcloud-controller-0
|
||||
tripleo_transfer_src_dir: /etc
|
||||
tripleo_transfer_dest_host: overcloud-controller-1
|
||||
tripleo_transfer_dest_dir: /opt/etc-target
|
||||
tripleo_transfer_storage_root_dir: /tmp/transfer-staging
|
@ -0,0 +1,22 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
- name: Prepare
|
||||
hosts: all
|
||||
become: true
|
||||
roles:
|
||||
- role: test_deps
|
@ -0,0 +1,15 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
23
tripleo_ansible/roles/tripleo-transfer/tasks/cleanup.yml
Normal file
23
tripleo_ansible/roles/tripleo-transfer/tasks/cleanup.yml
Normal file
@ -0,0 +1,23 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
- name: ensure tripleo_transfer storage directory is removed
|
||||
file:
|
||||
path: "{{ tripleo_transfer_storage_root_dir }}"
|
||||
state: absent
|
||||
delegate_to: localhost
|
||||
become: "{{ tripleo_transfer_storage_root_become }}"
|
98
tripleo_ansible/roles/tripleo-transfer/tasks/main.yml
Normal file
98
tripleo_ansible/roles/tripleo-transfer/tasks/main.yml
Normal file
@ -0,0 +1,98 @@
|
||||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
|
||||
- name: make sure we don't have a trailing forward slash in the src
|
||||
set_fact:
|
||||
tripleo_transfer_src_dir_safe: "{{ tripleo_transfer_src_dir | regex_replace('\\/$', '') }}"
|
||||
cacheable: false
|
||||
|
||||
- name: make sure we don't have a trailing forward slash in the dst
|
||||
set_fact:
|
||||
tripleo_transfer_dest_dir_safe: "{{ tripleo_transfer_dest_dir | regex_replace('\\/$', '') }}"
|
||||
cacheable: false
|
||||
|
||||
- name: ensure local storage directory exists and has correct permissions
|
||||
file:
|
||||
path: "{{ tripleo_transfer_storage_root_dir }}"
|
||||
# Attempting to set an owner fails with "chown failed: failed to
|
||||
# look up user" so we at least ensure the permissions.
|
||||
mode: 0700
|
||||
state: directory
|
||||
delegate_to: localhost
|
||||
become: "{{ tripleo_transfer_storage_root_become }}"
|
||||
|
||||
- name: create tempfile for the archive
|
||||
tempfile:
|
||||
prefix: ansible.tripleo-transfer.
|
||||
register: tripleo_transfer_tempfile
|
||||
become: "{{ tripleo_transfer_src_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_src_host }}"
|
||||
|
||||
# Using the "archive" module lists lists all tarred files in module
|
||||
# output, if there's too many files, it can crash ansible even with
|
||||
# "no_log: true".
|
||||
- name: create the archive
|
||||
shell: |-
|
||||
set -euo pipefail
|
||||
tar --transform "s|^{{ tripleo_transfer_src_dir_safe | basename }}|{{ tripleo_transfer_dest_dir_safe | basename }}|" \
|
||||
-czf "{{ tripleo_transfer_tempfile.path }}" \
|
||||
-C "{{ tripleo_transfer_src_dir_safe | dirname }}" \
|
||||
"{{ tripleo_transfer_src_dir_safe | basename }}"
|
||||
become: "{{ tripleo_transfer_src_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_src_host }}"
|
||||
|
||||
- name: fetch the archive
|
||||
fetch:
|
||||
src: "{{ tripleo_transfer_tempfile.path }}"
|
||||
dest: "{{ tripleo_transfer_storage_root_dir }}/{{ tripleo_transfer_dest_host }}{{ tripleo_transfer_dest_dir_safe }}.tar.gz"
|
||||
flat: true
|
||||
become: "{{ tripleo_transfer_src_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_src_host }}"
|
||||
|
||||
- name: remove tempfile
|
||||
file:
|
||||
name: "{{ tripleo_transfer_tempfile.path }}"
|
||||
state: absent
|
||||
become: "{{ tripleo_transfer_src_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_src_host }}"
|
||||
|
||||
- name: wipe the destination directory
|
||||
file:
|
||||
path: "{{ tripleo_transfer_dest_dir_safe }}"
|
||||
state: absent
|
||||
become: "{{ tripleo_transfer_dest_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_dest_host }}"
|
||||
when: tripleo_transfer_dest_wipe|bool
|
||||
|
||||
- name: make sure the destination parent directory is present
|
||||
file:
|
||||
path: "{{ tripleo_transfer_dest_dir_safe|dirname }}"
|
||||
state: directory
|
||||
become: "{{ tripleo_transfer_dest_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_dest_host }}"
|
||||
|
||||
- name: push and extract the archive
|
||||
unarchive:
|
||||
src: "{{ tripleo_transfer_storage_root_dir }}/{{ tripleo_transfer_dest_host }}{{ tripleo_transfer_dest_dir_safe }}.tar.gz"
|
||||
dest: "{{ tripleo_transfer_dest_dir_safe|dirname }}"
|
||||
become: "{{ tripleo_transfer_dest_become }}"
|
||||
delegate_to: "{{ tripleo_transfer_dest_host }}"
|
||||
|
||||
- name: remove the local archive
|
||||
file:
|
||||
path: "{{ tripleo_transfer_storage_root_dir }}/{{ tripleo_transfer_dest_host }}{{ tripleo_transfer_dest_dir_safe }}.tar.gz"
|
||||
state: absent
|
@ -15,6 +15,7 @@
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-container-tag
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-container-rm
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-image-serve
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-transfer
|
||||
gate:
|
||||
jobs:
|
||||
- tripleo-ansible-centos-7-molecule-aide
|
||||
@ -30,6 +31,7 @@
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-container-tag
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-container-rm
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-image-serve
|
||||
- tripleo-ansible-centos-7-molecule-tripleo-transfer
|
||||
name: tripleo-ansible-molecule-jobs
|
||||
- job:
|
||||
files:
|
||||
@ -126,3 +128,10 @@
|
||||
parent: tripleo-ansible-centos
|
||||
vars:
|
||||
tox_envlist: mol-tripleo-image-serve
|
||||
- job:
|
||||
files:
|
||||
- ^tripleo_ansible/roles/tripleo-transfer/.*
|
||||
name: tripleo-ansible-centos-7-molecule-tripleo-transfer
|
||||
parent: tripleo-ansible-centos
|
||||
vars:
|
||||
tox_envlist: mol-tripleo-transfer
|
||||
|
Loading…
Reference in New Issue
Block a user