installation of riaf
====================
requirement
-----------
To install riaf on a system there are a few requirements to fulfill.
First of all you need a server:
* running Linux (e. g. `Ubuntu `__ 20.04)
* fully qualified domain name
* accessible by ssh and https (firewall setting)
I used a virtual machine from a provider in the internet.
zfs data storage
----------------
If you want to store the data on a zfs file system you should prepare ``/data``
as a zfs file system and adapt it after :ref:`installation and configuration`.
You can use the ansible playbook :ref:`play_install_zfs.yaml` in this repository to create ``/data`` as a zfs file system pool, e. g.:
.. code-block:: sh
ansible-playbook --ask-vault-pass -l [my_server] -v play_install_zfs.yaml
You should adapt :ref:`task_install_zfs.yaml ` to your needs.
After :ref:`installation and configuration` you can use the ansible playbook
:ref:`play_gitolite_home2zfs_filesystem.yaml` to adapt it, e. g.:
.. code-block:: sh
ansible-playbook --ask-vault-pass -l [my_server] -v play_gitolite_home2zfs_filesystem.yaml
installation and configuration
------------------------------
You can use the ansible playbook :ref:`play_install_riaf.yaml` to install
and configure riaf, e. g.:
.. code-block:: sh
ansible-playbook --ask-vault-pass -l [my_server] -v play_install_riaf.yaml
You will be asked for a few variables and the output could look like:
.. code-block:: text
Using ~/.ansible.cfg as config file
initial ssh adminkey for gitolite: [skipped here]
gitolite user name [git]:
path to the gitolite home directory (repositories are stored here) [/data/gitolite]:
DNS name of the server [example.com]:
config file of the gitolite web site [configs/gitolite.conf]:
ssl certificate of the web site [cert/gitolite.crt]:
ssl certificate key of the web site [cert/gitolite.key]:
path to gitolite-suexec-wrapper.sh [configs/gitolite-suexec-wrapper.sh]:
path to index.html [configs/index.html]:
path to the script update_list_all_users [configs/update_list_all_users]:
path to the server_timestamping script [configs/server_timestamping]:
path to the riaf_landing_page script [configs/riaf_landing_page]:
...
Instead of giving them one by one you can also pass them as command line options, e. g.:
.. code-block:: sh
ansible-playbook --ask-vault-pass -l [my_server] -v play_install_riaf.yaml \
--extra-vars "ssh_adminkey_gitolite='$(cat ~/.ssh/gitolite_admin_fdm_ed25519.pub)'" \
--extra-vars "gitolite_user=git" \
--extra-vars "gitolite_home=/data/gitolite" \
--extra-vars "servername=example.com" \
--extra-vars "configfile_gitolite_site=configs/gitolite.conf" \
--extra-vars "ssl_cert_crt=https_zertifikat/example.com.crt" \
--extra-vars "ssl_cert_key=https_zertifikat/example.com.key" \
--extra-vars "gitolite_suexec_wrapper=configs/gitolite-suexec-wrapper.sh" \
--extra-vars "index_html=configs/index.html" \
--extra-vars "gitolite_update_list_all_users=configs/update_list_all_users" \
--extra-vars "server_timestamping_script=configs/server_timestamping" \
--extra-vars "riaf_landing_page_script=configs/riaf_landing_page"
The output could look like:
.. code-block:: sh
Using ~/.ansible.cfg as config file
...
_____________________________________________
< PLAY [installation and basic configuration] >
---------------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
...
____________
< PLAY RECAP >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
riaf_test_system : ok=65 changed=62 unreachable=0 failed=0
With this the following software is installed and configured:
* [gitolite]_
* [fuse_git_bare_fs]_
* [sskm]_
* [gitolite_web_interface]_
* [pydabu]_
* [git]_
* [WebDAV]_
* [git-annex]_
* [OpenSSH]_
* [apache]_
Further you need to prepare a few additional tools and config files:
You should prepare your ssl certificates.
gitolite.conf
_____________
The apache configuration :download:`gitolite.conf <../ansible_playbooks/ubuntu_20.04/configs/gitolite.conf>` is a good example. It is adapted by the ansible playbook:
.. literalinclude:: ../ansible_playbooks/ubuntu_20.04/configs/gitolite.conf
:language: apache
gitolite-suexec-wrapper.sh
__________________________
The tool :download:`gitolite-suexec-wrapper.sh <../ansible_playbooks/ubuntu_20.04/configs/gitolite-suexec-wrapper.sh>` is just a small wrapper to use gitolite with both ssh and http mode clients (see `Making repositories available to both ssh and http mode clients `_). It is adapted by the ansible playbook:
.. literalinclude:: ../ansible_playbooks/ubuntu_20.04/configs/gitolite-suexec-wrapper.sh
:language: bash
index.html
__________
The starting page :download:`index.html <../ansible_playbooks/ubuntu_20.04/configs/index.html>` for the web interface is a very basic example:
.. literalinclude:: ../ansible_playbooks/ubuntu_20.04/configs/index.html
:language: html
server_timestamping
___________________
The gitolite trigger :ref:`server_timestamping