Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New client packages (also tar now) that don't use the config repo #70

Merged
merged 44 commits into from
Mar 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
c616e8a
prepare new client package without config repo
bedroge Feb 8, 2021
40c5cae
enable ci on this branch
bedroge Feb 8, 2021
6df5d70
enable geoapi
bedroge Feb 8, 2021
353f1bf
use config repo domain for now
bedroge Feb 8, 2021
e745d59
use existing config in group vars
bedroge Feb 10, 2021
2628f25
add public keys, remove new part
bedroge Feb 10, 2021
381bec0
remove whitespaces
bedroge Feb 10, 2021
207c201
change name of task
bedroge Feb 10, 2021
aa2b10b
correct name of pilot key
bedroge Feb 10, 2021
8c3ffa6
Let CI test access to the pilot repo instead of the cvmfs-config repo
bedroge Feb 10, 2021
8f4ef56
build tar package
bedroge Feb 10, 2021
c572367
fix the ls test, add test for tarball
bedroge Feb 10, 2021
e6c345c
fix macos test
bedroge Feb 10, 2021
efe57f0
remove current test branch for building packages
bedroge Feb 10, 2021
5d82d36
comment the eessi config repo
bedroge Feb 11, 2021
f767fc8
comment config repo for stratum 0/1
bedroge Feb 11, 2021
2e446af
still include the old cvmfs-config repo for the CI
bedroge Feb 11, 2021
7fde248
still include the old cvmfs-config repo for the CI
bedroge Feb 11, 2021
1e6156e
dont run the cvmfs-config playbook in CI
bedroge Feb 11, 2021
35f7739
replace cvmfs-config by ci repo
bedroge Feb 11, 2021
458b7ef
escape quotes
bedroge Feb 11, 2021
809d9d5
use heredoc instead of echo
bedroge Feb 11, 2021
f4934f3
use eq instead of equalto
bedroge Feb 11, 2021
f89ebb4
use sameas instead of eq
bedroge Feb 11, 2021
02f93ac
dont select only the repo name
bedroge Feb 11, 2021
787d438
add pubkey for ci repo
bedroge Feb 11, 2021
29defa4
add note about PR https://github.com/galaxyproject/ansible-cvmfs/pull/32
bedroge Feb 12, 2021
3f0d208
don't use config repo for clients
bedroge Feb 12, 2021
5d606af
configure clients statically (no config repo)
bedroge Feb 12, 2021
c008c1b
remove config repo lines
bedroge Feb 12, 2021
f0a0383
improve domain config, add comments
bedroge Feb 12, 2021
3c9ebf9
use CVMFS_CLIENT_PROFILE=single instead of setting a proxy
bedroge Feb 12, 2021
646f2c4
update README
bedroge Feb 12, 2021
0a7c593
fix typo
bedroge Feb 12, 2021
432ed69
remove auto keyword
bedroge Feb 15, 2021
8567142
remove config repo from package description
bedroge Feb 15, 2021
bfd6143
remove config repo from Stratum 1 CI
bedroge Feb 15, 2021
efd868a
remove config repo from comment
bedroge Feb 15, 2021
2e2f22c
remove stratum0-deploy-cvmfs-config.yml
bedroge Feb 15, 2021
cc63b10
Merge branch 'main' into remove_config_repo
bedroge Feb 18, 2021
9b2db5b
Merge branch 'main' into remove_config_repo
bedroge Mar 2, 2021
e9f6569
remove commented lines
bedroge Mar 2, 2021
ebb2f76
Merge branch 'remove_config_repo' of github.com:bedroge/filesystem-la…
bedroge Mar 2, 2021
ebe44f1
remove commented CVMFS_NFILES
bedroge Mar 2, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 81 additions & 14 deletions .github/workflows/build-test-release-client-packages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ on:
push:
branches:
- main
- test_client_packages_ci
tags:
- 'v*'
pull_request:
branches:
- main
- test_client_packages_ci

jobs:

Expand Down Expand Up @@ -49,23 +47,32 @@ jobs:
uses: bpicode/github-action-fpm@master
with:
fpm_args: "etc"
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t rpm -a all -s dir -C ./package --description 'CVMFS config repository package for EESSI.'"
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t rpm -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"

- name: Build Deb package
id: build-deb
uses: bpicode/github-action-fpm@master
with:
fpm_args: "etc"
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t deb -a all -s dir -C ./package --description 'CVMFS config repository package for EESSI.'"
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t deb -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"

- name: Build tar package
id: build-tar
uses: bpicode/github-action-fpm@master
with:
fpm_args: "etc"
fpm_opts: "--debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t tar -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.'"

- name: Find filenames of generated packages
id: find_filenames
shell: bash
run: |
rpmfile="$(ls -1 cvmfs-config-eessi*.rpm)"
debfile="$(ls -1 cvmfs-config-eessi*.deb)"
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
echo ::set-output name=rpmfile::${rpmfile}
echo ::set-output name=debfile::${debfile}
echo ::set-output name=tarfile::${tarfile}

- name: Upload Deb package as artifact
uses: actions/upload-artifact@v2
Expand All @@ -79,6 +86,12 @@ jobs:
name: RPM package
path: ${{ steps.find_filenames.outputs.rpmfile }}

- name: Upload tar package as artifact
uses: actions/upload-artifact@v2
with:
name: Tar package
path: ${{ steps.find_filenames.outputs.tarfile }}

build-macos-package:
runs-on: macos-latest
steps:
Expand Down Expand Up @@ -113,7 +126,7 @@ jobs:
run: gem install --no-document fpm

- name: Build package
run: "fpm --debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t osxpkg -a all -s dir -C ./package --description 'CVMFS config repository package for EESSI.' etc"
run: "fpm --debug -n cvmfs-config-eessi -v ${{ steps.get_version.outputs.version }} -t osxpkg -a all -s dir -C ./package --description 'CVMFS configuration package for EESSI.' etc"

- name: Find filename of generated package
id: find_filename
Expand Down Expand Up @@ -157,13 +170,13 @@ jobs:
run: sudo dpkg -i ./${{ steps.find_filename.outputs.debfile }}

- name: Add local CVMFS configuration (/etc/cvmfs/default.local)
run: echo "CVMFS_HTTP_PROXY=DIRECT" | sudo tee /etc/cvmfs/default.local
run: echo "CVMFS_CLIENT_PROFILE=single" | sudo tee /etc/cvmfs/default.local

- name: Mount the repositories
run: sudo cvmfs_config setup

- name: Test repository access
run: ls /cvmfs/cvmfs-config.eessi-hpc.org/etc/cvmfs
run: ls /cvmfs/pilot.eessi-hpc.org/

test-rpm-package:
needs: build-linux-packages
Expand Down Expand Up @@ -195,14 +208,51 @@ jobs:
run: rpm -i ./${{ steps.find_filename.outputs.rpmfile }}

- name: Add local CVMFS configuration (/etc/cvmfs/default.local)
run: echo "CVMFS_HTTP_PROXY=DIRECT" | tee /etc/cvmfs/default.local
run: echo "CVMFS_CLIENT_PROFILE=single" | tee /etc/cvmfs/default.local

- name: Mount the repositories
#run: cvmfs_config setup
run: mkdir -p /cvmfs/cvmfs-config.eessi-hpc.org && mount -t cvmfs cvmfs-config.eessi-hpc.org /cvmfs/cvmfs-config.eessi-hpc.org
run: mkdir -p /cvmfs/pilot.eessi-hpc.org && mount -t cvmfs pilot.eessi-hpc.org /cvmfs/pilot.eessi-hpc.org

- name: Test repository access
run: ls /cvmfs/pilot.eessi-hpc.org/

test-tar-package:
needs: build-linux-packages
runs-on: ubuntu-latest
steps:
- name: Install CVMFS dependencies
run: sudo apt-get install lsb-release

- name: Download and install CVMFS client
run: wget https://ecsft.cern.ch/dist/cvmfs/cvmfs-release/cvmfs-release-latest_all.deb && sudo dpkg -i cvmfs-release-latest_all.deb

- name: Install CVMFS client
run: sudo apt-get update && sudo apt-get install cvmfs

- name: Download cvmfs-config-eessi package
uses: actions/download-artifact@v2
with:
name: Tar package

- name: Find filename of package
id: find_filename
shell: bash
run: |
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
echo ::set-output name=tarfile::${tarfile}

- name: Install package
run: sudo tar -C / -xf ./${{ steps.find_filename.outputs.tarfile }}

- name: Add local CVMFS configuration (/etc/cvmfs/default.local)
run: echo "CVMFS_CLIENT_PROFILE=single" | sudo tee /etc/cvmfs/default.local

- name: Mount the repositories
run: sudo cvmfs_config setup

- name: Test repository access
run: ls /cvmfs/cvmfs-config.eessi-hpc.org/etc/cvmfs
run: ls /cvmfs/pilot.eessi-hpc.org/

test-macos-package:
needs: build-macos-package
Expand Down Expand Up @@ -230,16 +280,16 @@ jobs:
run: sudo installer -target / -pkg ./${{ steps.find_filename.outputs.pkgfile }}

- name: Add local CVMFS configuration (/etc/cvmfs/default.local)
run: echo "CVMFS_HTTP_PROXY=DIRECT" | sudo tee /etc/cvmfs/default.local
run: echo "CVMFS_CLIENT_PROFILE=single" | sudo tee /etc/cvmfs/default.local

- name: Mount the repositories
run: sudo mkdir -p /Users/Shared/cvmfs/cvmfs-config.eessi-hpc.org && sudo mount -t cvmfs cvmfs-config.eessi-hpc.org /Users/Shared/cvmfs/cvmfs-config.eessi-hpc.org
run: sudo mkdir -p /Users/Shared/cvmfs/pilot.eessi-hpc.org && sudo mount -t cvmfs pilot.eessi-hpc.org /Users/Shared/cvmfs/pilot.eessi-hpc.org

- name: Test repository access
run: ls /Users/Shared/cvmfs/cvmfs-config.eessi-hpc.org/etc/cvmfs
run: ls /Users/Shared/cvmfs/pilot.eessi-hpc.org/

release:
needs: [build-linux-packages, build-macos-package, test-deb-package, test-rpm-package, test-macos-package]
needs: [build-linux-packages, build-macos-package, test-deb-package, test-rpm-package, test-macos-package, test-tar-package]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
Expand All @@ -253,6 +303,11 @@ jobs:
with:
name: RPM package

- name: Download tar package
uses: actions/download-artifact@v2
with:
name: Tar package

- name: Download macOS package
uses: actions/download-artifact@v2
with:
Expand All @@ -265,9 +320,11 @@ jobs:
rpmfile="$(ls -1 cvmfs-config-eessi*.rpm)"
debfile="$(ls -1 cvmfs-config-eessi*.deb)"
pkgfile="$(ls -1 cvmfs-config-eessi*.pkg)"
tarfile="$(ls -1 cvmfs-config-eessi*.tar)"
echo ::set-output name=rpmfile::${rpmfile}
echo ::set-output name=debfile::${debfile}
echo ::set-output name=pkgfile::${pkgfile}
echo ::set-output name=tarfile::${tarfile}

- name: Create Release
id: create_release
Expand Down Expand Up @@ -309,3 +366,13 @@ jobs:
asset_path: ${{ steps.find_filenames.outputs.pkgfile }}
asset_name: ${{ steps.find_filenames.outputs.pkgfile }}
asset_content_type: application/x-newton-compatible-pkg

- name: Upload Tar as release asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ steps.find_filenames.outputs.tarfile }}
asset_name: ${{ steps.find_filenames.outputs.tarfile }}
asset_content_type: application/x-tar
6 changes: 4 additions & 2 deletions .github/workflows/test-playbook.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ echo ' - 127.0.0.1' >> inventory/local_site_specific_vars.yml
# Don't use the GEO API for the Stratum 1, since we do not have a key here.
export CVMFS_GEO_DB_FILE=NONE

# Only test the cvmfs-config repo on the Stratum 1, as the other ones may be very large.
# Only test CI suitable repos on the Stratum 1, as the other ones may be very large.
if [ $playbook == "stratum1.yml" ]
then
echo 'cvmfs_repositories: "[{{ eessi_cvmfs_config_repo.repository }}]"' >> inventory/local_site_specific_vars.yml
cat >> inventory/local_site_specific_vars.yml <<-EOF
cvmfs_repositories: "{{ eessi_cvmfs_repositories | selectattr('use_for_ci', 'defined') | selectattr('use_for_ci', 'sameas', true) | list }}"
EOF
fi

# Install the Ansible dependencies.
Expand Down
3 changes: 0 additions & 3 deletions .github/workflows/test-playbooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,5 @@ jobs:
run: docker run -d --workdir /github/workspace --rm -e INPUT_PLAYBOOK -e HOME -e GITHUB_JOB -e GITHUB_REF -e GITHUB_SHA -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RETENTION_DAYS -e GITHUB_ACTOR -e GITHUB_WORKFLOW -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GITHUB_EVENT_NAME -e GITHUB_SERVER_URL -e GITHUB_API_URL -e GITHUB_GRAPHQL_URL -e GITHUB_WORKSPACE -e GITHUB_ACTION -e GITHUB_EVENT_PATH -e GITHUB_PATH -e GITHUB_ENV -e RUNNER_OS -e RUNNER_TOOL_CACHE -e RUNNER_TEMP -e RUNNER_WORKSPACE -e ACTIONS_RUNTIME_URL -e ACTIONS_RUNTIME_TOKEN -e ACTIONS_CACHE_URL -e GITHUB_ACTIONS=true -e CI=true -v "/var/run/docker.sock":"/var/run/docker.sock" -v $HOME:"/github/home" -v "$HOME/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/_temp/_runner_file_commands":"/github/file_commands" -v "$GITHUB_WORKSPACE":"/github/workspace" -v /sys/fs/cgroup:/sys/fs/cgroup --privileged --device /dev/fuse --mount type=bind,source=${GITHUB_WORKSPACE}/srv,target=/srv --mount type=bind,source=${GITHUB_WORKSPACE}/srv,target=/var/spool/cvmfs --name ${{ matrix.component }}-${{ matrix.os }} docker.pkg.github.com/$(echo $GITHUB_REPOSITORY | tr '[A-Z]' '[a-z]')/${{ matrix.os }}
- name: Execute the playbook
run: docker exec ${{ matrix.component }}-${{ matrix.os }} /test-playbook.sh ${{ matrix.component }}.yml
- name: Execute additional playbook for Stratum 0
run: docker exec ${{ matrix.component }}-${{ matrix.os }} /test-playbook.sh ${{ matrix.component }}-deploy-cvmfs-config.yml
if: ${{ matrix.component == 'stratum0' }}
- name: Stop the container
run: docker kill ${{ matrix.component }}-${{ matrix.os }}
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,13 @@ Next, you need to make a file `/etc/cvmfs/default.local` manually; this file is
contains, for instance, the URL to your local proxy and the size of the local cache. As an example, you can put
the following in this file, which corresponds to not using a proxy and setting the local quota limit to 40000MB:
```
CVMFS_HTTP_PROXY=DIRECT
CVMFS_CLIENT_PROFILE=single
bedroge marked this conversation as resolved.
Show resolved Hide resolved
CVMFS_QUOTA_LIMIT=40000
```
If you do want to use your own proxy, replace the first line by:
```
CVMFS_HTTP_PROXY=<hostname of your proxy>:<port>
```
For more details about configuring your client, see https://cvmfs.readthedocs.io/en/stable/cpt-configure.html.

Finally, run `cvmfs_config setup` to set up CVMFS.
Expand Down
66 changes: 38 additions & 28 deletions inventory/group_vars/all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,23 @@
# vars file for eessi project

# Automatically configure EESSI CVMFS repos.
eessi_cvmfs_repos_enabled: config-repo
eessi_cvmfs_repos_enabled: true

# Email address for the project, which will be put in the contact file on the config repo.
# Email address for the project.
eessi_email: [email protected]

# Defaults for eessi-hpc.org config repo, syntax for each key is the same as that of cvmfs_<key | pluralize>
eessi_cvmfs_config_repo:
domain: eessi-hpc.org
key:
path: /etc/cvmfs/keys/eessi-hpc.org/cvmfs-config.eessi-hpc.org.pub
#
# Defaults for eessi-hpc.org repos.
#

# We do not use a config repo anymore.
eessi_cvmfs_config_repo: {}

# Public keys for the repositories, which you can find on the Stratum 0 at:
# /etc/cvmfs/keys/*.pub
# Note: you first have to run the stratum0.yml playbook once to generate the repositories and keys.
eessi_cvmfs_keys:
- path: /etc/cvmfs/keys/eessi-hpc.org/cvmfs-config.eessi-hpc.org.pub
key: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqoTBc/Eksr9ECEOoCzHA
Expand All @@ -22,25 +29,6 @@ eessi_cvmfs_config_repo:
+hCt494UsFs3tchmTebpK+x3pVRXybQ66Qm1mQiaz+2VbUJdQEov4RCC5PcOmOOk
BwIDAQAB
-----END PUBLIC KEY-----
urls:
- "http://cvmfs-s1-rug.eessi-hpc.org/cvmfs/@fqrn@"
- "http://cvmfs-s1-bgo.eessi-hpc.org/cvmfs/@fqrn@"
repository:
repository: cvmfs-config.eessi-hpc.org
stratum0: cvmfs-s0.eessi-hpc.org
owner: "{{ cvmfs_repo_owner | default('root') }}"
key_dir: /etc/cvmfs/keys/eessi-hpc.org
server_options: []
client_options: []

#
# Defaults for eessi-hpc.org repos.
#

# Public keys for the repositories, which you can find on the Stratum 0 at:
# /etc/cvmfs/keys/*.pub
# Note: you first have to run the stratum0.yml playbook once to generate the repositories and keys.
eessi_cvmfs_keys:
- path: /etc/cvmfs/keys/eessi-hpc.org/pilot.eessi-hpc.org.pub
key: |
-----BEGIN PUBLIC KEY-----
Expand All @@ -52,6 +40,19 @@ eessi_cvmfs_keys:
HJN0HHOVdRIwNjjPkV2jIqhJoI85no89v8/V45SFPVo+A7N0Cj4QdQrQTezpnlby
FQIDAQAB
-----END PUBLIC KEY-----
# The following (duplicate) key can be removed after this PR has been merged:
# https://github.com/galaxyproject/ansible-cvmfs/pull/32
- path: /etc/cvmfs/keys/eessi-hpc.org/ci.eessi-hpc.org.pub
key: |
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAommtaoqQ36Rb/cFnqUWg
8FoYCOjJWVBMQ4sVZ87oFRWehOUbcfy/ah85D9055HQws7i/hLNGJJAa7Es3E2o8
v8LtSlRdfR1A7b7LA6p3213HHz6dNU6I1riwtE2OP7/w4Q3+Agj1iRtW535GwzGo
4ZbewL8T1kbyaEm4HyefoitHXJthoPyTlYAhvAegIil1VJPhJZW+q/NWxnsd9QGJ
uAtbSICQg6mBJI50KiCBYmKHOAjH2W8qEnLWc7JoPoNvAHuMx1ya6YerBM5T9Esm
HJN0HHOVdRIwNjjPkV2jIqhJoI85no89v8/V45SFPVo+A7N0Cj4QdQrQTezpnlby
FQIDAQAB
-----END PUBLIC KEY-----

# URLs for all the Stratum 1 servers.
eessi_cvmfs_server_urls:
Expand All @@ -71,8 +72,17 @@ eessi_cvmfs_repositories:
- CVMFS_AUTO_GC=false
- CVMFS_AUTO_TAG_TIMESPAN="30 days ago"
- CVMFS_GARBAGE_COLLECTION=true
client_options:
- CVMFS_NFILES=4096
client_options: []
use_for_ci: no
- repository: ci.eessi-hpc.org
stratum0: cvmfs-s0.eessi-hpc.org
owner: "{{ cvmfs_repo_owner | default('root') }}"
key_dir: /etc/cvmfs/keys/eessi-hpc.org
server_options:
- CVMFS_AUTO_GC=false
- CVMFS_GARBAGE_COLLECTION=true
client_options: []
use_for_ci: yes

# Override all the Galaxy defaults by our EESSI defaults.
# This is required, beucase the galaxy_* variables are used inside the Ansible tasks.
Expand Down
3 changes: 0 additions & 3 deletions inventory/group_vars/cvmfsclients
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,3 @@
# List of proxies to be used for the clients.
# Override this setting in your local_site_specific_vars.yml file.
cvmfs_http_proxies: "{{ local_cvmfs_http_proxies | default(['DIRECT']) }}"

# Use the CVMFS configuration repository for the clients.
eessi_cvmfs_repos_enabled: config-repo
1 change: 0 additions & 1 deletion inventory/group_vars/cvmfsstratum0servers
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
---

cvmfs_repositories: "{{ eessi_cvmfs_repositories + [eessi_cvmfs_config_repo.repository] }}"
2 changes: 0 additions & 2 deletions inventory/group_vars/cvmfsstratum1servers
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
---

cvmfs_repositories: "{{ eessi_cvmfs_repositories + [eessi_cvmfs_config_repo.repository] }}"
cvmfs_keys: "{{ eessi_cvmfs_keys + [eessi_cvmfs_config_repo.key] }}"
cvmfs_squid_conf_src: "{{ local_stratum1_cvmfs_squid_conf_src | default('eessi_stratum1_squid.conf.j2') }}"
Loading