Document and update fileserver roles
The add-fileserver role needs to be used by a job in a config repo as it performs local actions such as adding a host to the inventory and needs to be run on localhost. publish-artifacts-to-fileserver doesn't have any special requirements, but it's fairly useless without the first role. Change-Id: I0e37ee297b13dceb70300a4f8f4accc233254df3
This commit is contained in:
parent
1b04947156
commit
fa7507fd98
34
roles/add-fileserver/README.rst
Normal file
34
roles/add-fileserver/README.rst
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
Add a remote fileserver to the inventory so that content can be uploaded
|
||||||
|
in subsequent tasks or roles.
|
||||||
|
|
||||||
|
**Role Variables**
|
||||||
|
|
||||||
|
.. zuul:rolevar:: fileserver
|
||||||
|
|
||||||
|
Complex argument which contains the information about the remote
|
||||||
|
destination as well as the authentication information needed. It is
|
||||||
|
expected that this argument comes from a `Secret`.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: fqdn
|
||||||
|
|
||||||
|
The FQDN of the remote host.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: path
|
||||||
|
|
||||||
|
The remote path. Content will be put into a directory below this path
|
||||||
|
that matches ``zuul.project.short_name``. The full path including
|
||||||
|
the project short name will be added to the hostvars of the host
|
||||||
|
as ``zuul_fileserver_project_path``.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: ssh_known_hosts
|
||||||
|
|
||||||
|
String containing known host signature for the remote host.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: ssh_private_key
|
||||||
|
|
||||||
|
Contents of the ssh private key to use.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: ssh_username
|
||||||
|
:default: ansible_user
|
||||||
|
|
||||||
|
Remote ssh user name to use.
|
@ -1,21 +1,22 @@
|
|||||||
- name: Create SSH private key from secret
|
- name: Create SSH private key from secret
|
||||||
copy:
|
copy:
|
||||||
content: "{{ fileserver.ssh_private_key }}"
|
content: "{{ fileserver.ssh_private_key }}"
|
||||||
dest: ~/.ssh/tarballs_id_rsa
|
dest: ~/.ssh/fileserver_id_rsa
|
||||||
mode: 0600
|
mode: 0600
|
||||||
|
|
||||||
- name: Add tarballs server ssh key
|
- name: Add fileserver ssh key
|
||||||
command: ssh-add ~/.ssh/tarballs_id_rsa
|
command: ssh-add ~/.ssh/fileserver_id_rsa
|
||||||
|
|
||||||
- name: Remove SSH private key from disk
|
- name: Remove SSH private key from disk
|
||||||
command: shred ~/.ssh/tarballs_id_rsa
|
command: shred ~/.ssh/fileserver_id_rsa
|
||||||
|
|
||||||
- name: Add tarballs server to inventory
|
- name: Add fileserver to inventory
|
||||||
add_host:
|
add_host:
|
||||||
name: "{{ fileserver.fqdn }}"
|
name: "{{ fileserver.fqdn }}"
|
||||||
ansible_user: "{{ fileserver.ssh_username }}"
|
ansible_user: "{{ fileserver.ssh_username|default(ansible_user) }}"
|
||||||
|
zuul_fileserver_project_path: "{{ fileserver.path }}/{{ zuul.project.short_name }}"
|
||||||
|
|
||||||
- name: Add tarballs server to known hosts
|
- name: Add fileserver server to known hosts
|
||||||
known_hosts:
|
known_hosts:
|
||||||
name: "{{ fileserver.fqdn }}"
|
name: "{{ fileserver.fqdn }}"
|
||||||
key: "{{ fileserver.ssh_known_hosts }}"
|
key: "{{ fileserver.ssh_known_hosts }}"
|
||||||
|
15
roles/publish-artifacts-to-fileserver/README.rst
Normal file
15
roles/publish-artifacts-to-fileserver/README.rst
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Publish contents of ``{{ zuul.executor.work_root }}/artifacts/`` dir using
|
||||||
|
rsync over ssh to a remote fileserver that has previously been added to
|
||||||
|
the inventory by :zuul:role:`add-fileserver`.
|
||||||
|
|
||||||
|
**Role Variables**
|
||||||
|
|
||||||
|
:zuul:role:`add-fileserver` sets the following variable in the hostvars of the
|
||||||
|
hosts it adds, but it is documented for reference.
|
||||||
|
|
||||||
|
.. zuul:rolevar:: zuul_fileserver_project_path
|
||||||
|
|
||||||
|
The remote path. Content will be put into a directory below this path
|
||||||
|
that matches ``zuul.project.short_name``. The full path including
|
||||||
|
the project short name will be added to the hostvars of the host
|
||||||
|
as ``zuul_fileserver_project_path``.
|
@ -1,10 +1,6 @@
|
|||||||
- name: Set tarball path
|
- name: Ensure project artifact directory exists
|
||||||
set_fact:
|
|
||||||
tarball_path: "{{ fileserver.path }}/{{ zuul.project.short_name }}"
|
|
||||||
|
|
||||||
- name: Ensure project directory exists
|
|
||||||
file:
|
file:
|
||||||
path: "{{ tarball_path }}"
|
path: "{{ zuul_fileserver_project_path }}"
|
||||||
state: directory
|
state: directory
|
||||||
recurse: yes
|
recurse: yes
|
||||||
mode: 0775
|
mode: 0775
|
||||||
@ -12,4 +8,4 @@
|
|||||||
- name: Upload contents of the artifacts folder
|
- name: Upload contents of the artifacts folder
|
||||||
synchronize:
|
synchronize:
|
||||||
src: "{{ zuul.executor.work_root }}/artifacts/"
|
src: "{{ zuul.executor.work_root }}/artifacts/"
|
||||||
dest: "{{ tarball_path }}/"
|
dest: "{{ zuul_fileserver_project_path }}/"
|
||||||
|
Loading…
Reference in New Issue
Block a user