<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.c3g-app.sd4h.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Poq</id>
	<title>SD4H wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.c3g-app.sd4h.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Poq"/>
	<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/wiki/Special:Contributions/Poq"/>
	<updated>2026-04-22T16:06:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=230</id>
		<title>Backing up Object Store</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=230"/>
		<updated>2026-03-26T15:06:49Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Give us permission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Object Store data, while stored redundantly via Ceph, is not backed up by default.  Object Store buckets are backed up to the TSM tape system upon request only by following the procedures listed on this page.&lt;br /&gt;
&lt;br /&gt;
== Content and policies ==&lt;br /&gt;
The following are the default contents and policies of requested backups:&lt;br /&gt;
&lt;br /&gt;
What is in the backup?&lt;br /&gt;
 * Only the bucket data is backed up.  We are not currently backing up the IAM policies of the buckets or objects.&lt;br /&gt;
 * Only the current version of the data is seen by the backup system.  Object chunks or versioned objects are not seen by the backups system.&lt;br /&gt;
What is the backup policy?&lt;br /&gt;
 * Backups are run on a daily basis.&lt;br /&gt;
 * The current object and one modified version of object are kept (this is different than full bucket versioning).    &lt;br /&gt;
 * The modified version is kept for 60 days - after that period only the current object is kept. &lt;br /&gt;
 * Deleted objects are kept for 6 months.&lt;br /&gt;
&lt;br /&gt;
= Backup Procedure =&lt;br /&gt;
&lt;br /&gt;
Please follow this procedure to request backups of your buckets. &lt;br /&gt;
&lt;br /&gt;
==Email the list of buckets==&lt;br /&gt;
&lt;br /&gt;
Send a list of buckets to be backed up to [mailto:juno@calculquebec.ca sd4h support] with the name and ID of the project where the buckets live.&lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
An IAM policy statement must be applied to &#039;&#039;&#039;all the buckets&#039;&#039;&#039; you want to backup so the TSM robot user in charge of the backup can access them.  This can be done with the [https://awscli.amazonaws.com/v2/documentation/api/latest/index.html aws cli].&lt;br /&gt;
&lt;br /&gt;
First, ensure that &amp;lt;code&amp;gt;my-bucket&amp;lt;/code&amp;gt; currently has no IAM policy.  Check bucket &amp;lt;code&amp;gt;&amp;lt;my-bucket&amp;gt;&amp;lt;/code&amp;gt; using profile &amp;lt;code&amp;gt;my-profile&amp;lt;/code&amp;gt; (as defined in ~/.aws/config and ~/.aws/credentials files) with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$aws s3api get-bucket-policy --profile c3g-data-repos --bucket &amp;lt;my-bucket&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that command returns something, the new policy statements must be added to the existing policy (which is not covered here).&lt;br /&gt;
&lt;br /&gt;
The following policy.json needs to be applied.&lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetBucketPolicy&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::&amp;lt;my-bucket&amp;gt;/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::&amp;lt;my-bucket&amp;gt;&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the policy onto the bucket &amp;lt;code&amp;gt;&amp;lt;my-bucket&amp;gt;&amp;lt;/code&amp;gt; using the profile &amp;lt;code&amp;gt;my-profile:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$aws s3api put-bucket-policy --policy file://my-policy.json --profile my-profile --bucket &amp;lt;my-bucket&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Confirm IAM policy applied ==&lt;br /&gt;
As we did before, request the bucket&#039;s IAM policy, ensuring that the contents of policy.json are listed.&lt;br /&gt;
 $aws s3api get-bucket-policy --profile c3g-data-repos --bucket my-bucket&lt;br /&gt;
&lt;br /&gt;
=Restore Procedure=&lt;br /&gt;
&lt;br /&gt;
==List bucket==&lt;br /&gt;
&lt;br /&gt;
Send us the list of buckets or objects to restore at [mailto:juno@calculquebec.ca sd4h support]. &lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
For each bucket you want to be restored, you will be asked to create a bucket with the &amp;lt;code&amp;gt;-restore&amp;lt;/code&amp;gt; suffix. &lt;br /&gt;
&lt;br /&gt;
Following the previous procedure, apply this restore IAM policy. &lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObjectAcl&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:AbortMultipartUpload&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once done, we will restore your data to the &amp;lt;code&amp;gt;*-restore&amp;lt;/code&amp;gt; buckets.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=229</id>
		<title>Backing up Object Store</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=229"/>
		<updated>2026-03-24T20:06:11Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Give us permission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Object Store data, while stored redundantly via Ceph, is not backed up by default.  Object Store buckets are backed up to the TSM tape system upon request only by following the procedures listed on this page.&lt;br /&gt;
&lt;br /&gt;
== Content and policies ==&lt;br /&gt;
The following are the default contents and policies of requested backups:&lt;br /&gt;
&lt;br /&gt;
What is in the backup?&lt;br /&gt;
 * Only the bucket data is backed up.  We are not currently backing up the IAM policies of the buckets or objects.&lt;br /&gt;
 * Only the current version of the data is seen by the backup system.  Object chunks or versioned objects are not seen by the backups system.&lt;br /&gt;
What is the backup policy?&lt;br /&gt;
 * Backups are run on a daily basis.&lt;br /&gt;
 * The current object and one modified version of object are kept (this is different than full bucket versioning).    &lt;br /&gt;
 * The modified version is kept for 60 days - after that period only the current object is kept. &lt;br /&gt;
 * Deleted objects are kept for 6 months.&lt;br /&gt;
&lt;br /&gt;
= Backup Procedure =&lt;br /&gt;
&lt;br /&gt;
Please follow this procedure to request backups of your buckets. &lt;br /&gt;
&lt;br /&gt;
==Email the list of buckets==&lt;br /&gt;
&lt;br /&gt;
Send a list of buckets to be backed up to [mailto:juno@calculquebec.ca sd4h support] with the name and ID of the project where the buckets live.&lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
An IAM policy statement must be applied to &#039;&#039;&#039;all the buckets&#039;&#039;&#039; you want to backup so the TSM robot user in charge of the backup can access them.  This can be done with the [https://awscli.amazonaws.com/v2/documentation/api/latest/index.html aws cli].&lt;br /&gt;
&lt;br /&gt;
First, ensure that &amp;lt;code&amp;gt;my-bucket&amp;lt;/code&amp;gt; currently has no IAM policy.  Check bucket &amp;lt;code&amp;gt;&amp;lt;my-bucket&amp;gt;&amp;lt;/code&amp;gt; using profile &amp;lt;code&amp;gt;my-profile&amp;lt;/code&amp;gt; (as defined in ~/.aws/config and ~/.aws/credentials files) with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$aws s3api get-bucket-policy --profile c3g-data-repos --bucket &amp;lt;my-bucket&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that command returns something, the new policy statements must be added to the existing policy (which is not covered here).&lt;br /&gt;
&lt;br /&gt;
The following policy.json needs to be applied.&lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::&amp;lt;my-bucket&amp;gt;/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::&amp;lt;my-bucket&amp;gt;&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the policy onto the bucket &amp;lt;code&amp;gt;&amp;lt;my-bucket&amp;gt;&amp;lt;/code&amp;gt; using the profile &amp;lt;code&amp;gt;my-profile:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$aws s3api put-bucket-policy --policy file://my-policy.json --profile my-profile --bucket &amp;lt;my-bucket&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Confirm IAM policy applied ==&lt;br /&gt;
As we did before, request the bucket&#039;s IAM policy, ensuring that the contents of policy.json are listed.&lt;br /&gt;
 $aws s3api get-bucket-policy --profile c3g-data-repos --bucket my-bucket&lt;br /&gt;
&lt;br /&gt;
=Restore Procedure=&lt;br /&gt;
&lt;br /&gt;
==List bucket==&lt;br /&gt;
&lt;br /&gt;
Send us the list of buckets or objects to restore at [mailto:juno@calculquebec.ca sd4h support]. &lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
For each bucket you want to be restored, you will be asked to create a bucket with the &amp;lt;code&amp;gt;-restore&amp;lt;/code&amp;gt; suffix. &lt;br /&gt;
&lt;br /&gt;
Following the previous procedure, apply this restore IAM policy. &lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObjectAcl&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:AbortMultipartUpload&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once done, we will restore your data to the &amp;lt;code&amp;gt;*-restore&amp;lt;/code&amp;gt; buckets.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=227</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=227"/>
		<updated>2026-03-17T14:06:16Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* How to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   7 680 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 10 176 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API, [https://en.wikipedia.org/wiki/Erasure_code EC] 8+3 || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe, [https://en.wikipedia.org/wiki/Erasure_code EC] 4+2  || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High Performance Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[Bucket policy]]&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
* Configuring [[Bucket Object Versioning]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Networking&amp;diff=226</id>
		<title>OpenStack Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Networking&amp;diff=226"/>
		<updated>2026-03-17T14:05:59Z</updated>

		<summary type="html">&lt;p&gt;Poq: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Networking&amp;diff=225</id>
		<title>OpenStack Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Networking&amp;diff=225"/>
		<updated>2026-03-17T14:05:18Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;Openstack networking is managed by the [https://docs.openstack.org/neutron/latest/ Neutron] service.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Openstack networking is managed by the [https://docs.openstack.org/neutron/latest/ Neutron] service.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=224</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=224"/>
		<updated>2026-03-17T14:02:23Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* How to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   7 680 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 10 176 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API, [https://en.wikipedia.org/wiki/Erasure_code EC] 8+3 || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe, [https://en.wikipedia.org/wiki/Erasure_code EC] 4+2  || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
* [[OpenStack Networking]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High Performance Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[Bucket policy]]&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
* Configuring [[Bucket Object Versioning]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=220</id>
		<title>Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=220"/>
		<updated>2026-03-01T14:11:09Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* I cannot upload a file larger than 48GB. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://rclone.org/ Rclone] is a powerful client that can interact with multiple storage backends, it offers a good support for our Ceph version of the S3 api and has good speed transfer out of the box.  It can also be used to mount an Object Store as traditional block file storage.  &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First [https://rclone.org/downloads/ download rclone] or use the [https://rclone.org/install/#script-installation script installation].  Then [[Store_and_Share_data#Configuring_S3_access|get your S3 &amp;lt;code&amp;gt;id key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;]] from Open Stack.&lt;br /&gt;
&lt;br /&gt;
Create the following file:  &lt;br /&gt;
&lt;br /&gt;
  ~/.config/rclone/rclone.conf&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[my-project]&lt;br /&gt;
type = s3&lt;br /&gt;
provider = Other&lt;br /&gt;
env_auth = false&lt;br /&gt;
access_key_id = &amp;lt;S3 ID from previous step&amp;gt;&lt;br /&gt;
secret_access_key = &amp;lt;S3 secret from previous step&amp;gt;&lt;br /&gt;
endpoint = https://objets.juno.calculquebec.ca&lt;br /&gt;
acl = private&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then list current bucket, create a bucket and then copy a file into it,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
$rclone mkdir   c3g-prod:test&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
          -1 2025-04-15 18:08:32        -1 test&lt;br /&gt;
$rclone copy my-file.txt my-project:test&lt;br /&gt;
$rclone ls  my-project:test/&lt;br /&gt;
    12408 my-file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mounting an Object Store ==&lt;br /&gt;
To allow mounting by non-root users, in /etc/fuse.conf, uncomment:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
user_allow_other&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mount the Object Store in daemon mode with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone mount &amp;lt;rclone config block&amp;gt;:&amp;lt;bucket&amp;gt; /path/to/mount/dir --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
# For example:&lt;br /&gt;
#rclone mount c3g-data-repos:ihec_data /mnt/ihec_data_objstr --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;A service may be used to auto-mount the Object Store on boot with a service file (in /etc/systemd/system/).&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Mount the ihec_data_objstr, even after a restart&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=My Object Store automount&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/bin/rclone mount &amp;lt;rclone config block&amp;gt;:&amp;lt;bucket&amp;gt; /path/to/mount/point/dir --no-modtime --fast-list --transfers 50 --checkers 50 --allow-other --read-only&lt;br /&gt;
# For example:&lt;br /&gt;
# ExecStart=/usr/bin/rclone mount c3g-data-repos:ihec_data /mnt/ihec_data_objstr --no-modtime --fast-list --transfers 50 --checkers 50 --allow-other --read-only&lt;br /&gt;
ExecStop=/usr/bin/fusermount -u /mnt/ihec_data_objstr&lt;br /&gt;
Restart=always&lt;br /&gt;
SyslogIdentifier=ihec_data_objstr&lt;br /&gt;
User=ihec&lt;br /&gt;
Group=ihec&lt;br /&gt;
Environment=RCLONE_CONFIG=/home/ihec/.config/rclone/rclone.conf&lt;br /&gt;
TimeoutStopSec=30&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;enable and start the service.&lt;br /&gt;
&lt;br /&gt;
== Mounting a public Object Store without using credentials ==&lt;br /&gt;
Public Object Stores may be accessed or mounted as read-only without the use of Open Stack credentials.  This relies on a bucket syntax prepended with the Open Stack project ID.&lt;br /&gt;
&lt;br /&gt;
Your ~/.config/rclone/rclone.conf need not contain an access_key_id and secret_access_key but only:&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[my-public-project]&lt;br /&gt;
type = s3&lt;br /&gt;
provider = Other&lt;br /&gt;
env_auth = false&lt;br /&gt;
endpoint = https://objets.juno.calculquebec.ca&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then combine the OS project ID and the bucket name like so:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone lsd my-public-project:&amp;lt;OS project ID&amp;gt;:&amp;lt;bucket name&amp;gt;&lt;br /&gt;
# For example:&lt;br /&gt;
# rclone lsd my-public-project:d5f8b8e8e3e2442f81573b2f0951013b:ihec_data&lt;br /&gt;
# or&lt;br /&gt;
# rclone mount my-public-project:d5f8b8e8e3e2442f81573b2f0951013b:ihec_data /mnt/ihec_data_objstr --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No problems, only solutions ==&lt;br /&gt;
&lt;br /&gt;
=== I cannot upload a file larger than 48GB. === &lt;br /&gt;
In some situations, rclone is not able to guess the size of the file to upload and use the default value of &amp;lt;code&amp;gt;--s3-chunk-size 5M&amp;lt;/code&amp;gt; to split and upload the file to the bucket. But since the server has a 10,000 chunk limit, the upload crashes.&lt;br /&gt;
&lt;br /&gt;
You can solve that by setting a larger  value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone copy --s3-chunk-size 50M my-large-file.cram my-project:test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way is to lower the maximum number of parts in a multipart upload using [https://rclone.org/s3/#s3-max-upload-parts --s3-max-upload-parts], for example: &amp;lt;code&amp;gt;--s3-max-upload-parts 1000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that you need the ram of your computer to be larger than chunks.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=219</id>
		<title>Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=219"/>
		<updated>2026-03-01T14:10:30Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* I cannot upload a file larger than 48GB. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://rclone.org/ Rclone] is a powerful client that can interact with multiple storage backends, it offers a good support for our Ceph version of the S3 api and has good speed transfer out of the box.  It can also be used to mount an Object Store as traditional block file storage.  &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
First [https://rclone.org/downloads/ download rclone] or use the [https://rclone.org/install/#script-installation script installation].  Then [[Store_and_Share_data#Configuring_S3_access|get your S3 &amp;lt;code&amp;gt;id key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;]] from Open Stack.&lt;br /&gt;
&lt;br /&gt;
Create the following file:  &lt;br /&gt;
&lt;br /&gt;
  ~/.config/rclone/rclone.conf&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[my-project]&lt;br /&gt;
type = s3&lt;br /&gt;
provider = Other&lt;br /&gt;
env_auth = false&lt;br /&gt;
access_key_id = &amp;lt;S3 ID from previous step&amp;gt;&lt;br /&gt;
secret_access_key = &amp;lt;S3 secret from previous step&amp;gt;&lt;br /&gt;
endpoint = https://objets.juno.calculquebec.ca&lt;br /&gt;
acl = private&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then list current bucket, create a bucket and then copy a file into it,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
$rclone mkdir   c3g-prod:test&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
          -1 2025-04-15 18:08:32        -1 test&lt;br /&gt;
$rclone copy my-file.txt my-project:test&lt;br /&gt;
$rclone ls  my-project:test/&lt;br /&gt;
    12408 my-file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mounting an Object Store ==&lt;br /&gt;
To allow mounting by non-root users, in /etc/fuse.conf, uncomment:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
user_allow_other&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Mount the Object Store in daemon mode with:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone mount &amp;lt;rclone config block&amp;gt;:&amp;lt;bucket&amp;gt; /path/to/mount/dir --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
# For example:&lt;br /&gt;
#rclone mount c3g-data-repos:ihec_data /mnt/ihec_data_objstr --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;A service may be used to auto-mount the Object Store on boot with a service file (in /etc/systemd/system/).&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Mount the ihec_data_objstr, even after a restart&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=My Object Store automount&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/bin/rclone mount &amp;lt;rclone config block&amp;gt;:&amp;lt;bucket&amp;gt; /path/to/mount/point/dir --no-modtime --fast-list --transfers 50 --checkers 50 --allow-other --read-only&lt;br /&gt;
# For example:&lt;br /&gt;
# ExecStart=/usr/bin/rclone mount c3g-data-repos:ihec_data /mnt/ihec_data_objstr --no-modtime --fast-list --transfers 50 --checkers 50 --allow-other --read-only&lt;br /&gt;
ExecStop=/usr/bin/fusermount -u /mnt/ihec_data_objstr&lt;br /&gt;
Restart=always&lt;br /&gt;
SyslogIdentifier=ihec_data_objstr&lt;br /&gt;
User=ihec&lt;br /&gt;
Group=ihec&lt;br /&gt;
Environment=RCLONE_CONFIG=/home/ihec/.config/rclone/rclone.conf&lt;br /&gt;
TimeoutStopSec=30&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;enable and start the service.&lt;br /&gt;
&lt;br /&gt;
== Mounting a public Object Store without using credentials ==&lt;br /&gt;
Public Object Stores may be accessed or mounted as read-only without the use of Open Stack credentials.  This relies on a bucket syntax prepended with the Open Stack project ID.&lt;br /&gt;
&lt;br /&gt;
Your ~/.config/rclone/rclone.conf need not contain an access_key_id and secret_access_key but only:&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[my-public-project]&lt;br /&gt;
type = s3&lt;br /&gt;
provider = Other&lt;br /&gt;
env_auth = false&lt;br /&gt;
endpoint = https://objets.juno.calculquebec.ca&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Then combine the OS project ID and the bucket name like so:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone lsd my-public-project:&amp;lt;OS project ID&amp;gt;:&amp;lt;bucket name&amp;gt;&lt;br /&gt;
# For example:&lt;br /&gt;
# rclone lsd my-public-project:d5f8b8e8e3e2442f81573b2f0951013b:ihec_data&lt;br /&gt;
# or&lt;br /&gt;
# rclone mount my-public-project:d5f8b8e8e3e2442f81573b2f0951013b:ihec_data /mnt/ihec_data_objstr --daemon --daemon-wait 0 --allow-other --read-only&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No problems, only solutions ==&lt;br /&gt;
&lt;br /&gt;
=== I cannot upload a file larger than 48GB. === &lt;br /&gt;
In some situations, rclone is not able to guess the size of the file to upload and use the default value of &amp;lt;code&amp;gt;--s3-chunk-size 5M&amp;lt;/code&amp;gt; to split and upload the file to the bucket. But since the server has a 10,000 chunk limit, the upload crashes.&lt;br /&gt;
&lt;br /&gt;
You can solve that by setting a larger  value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rclone copy --s3-chunk-size 50M my-large-file.cram my-project:test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another way is to lower the maximum number of parts in a multipart upload using [https://rclone.org/s3/#s3-max-upload-parts --s3-max-upload-parts], for example: &amp;lt;code&amp;gt;--s3-max-upload-parts 1000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note that you need the ram of your computer to be larger that chunks.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Bucket_policy&amp;diff=218</id>
		<title>Bucket policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Bucket_policy&amp;diff=218"/>
		<updated>2026-02-06T19:26:46Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bucket policies can be used to make buckets partially or completely public, they can also be used to limit access to public buckets. They can be used as some kind of firewall on your data. &lt;br /&gt;
&lt;br /&gt;
Our Object store S3 API is provided by Ceph&#039;s Rados Gateway. Its [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/ supported policies] are a subset of the [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html AWS bucket policies].&lt;br /&gt;
&lt;br /&gt;
== Making a bucket public on a specific IP address range.==&lt;br /&gt;
&lt;br /&gt;
We will use the [https://docs.aws.amazon.com/cli/latest/ aws cli] set policies. Make sure that is it properly configured for Juno.&lt;br /&gt;
&lt;br /&gt;
This policy.json example will let objects from the bucket &amp;lt;private bucket&amp;gt; in project &amp;lt;project id&amp;gt; be listed (s3:ListBucket) and read (s3:GetObject) from the public IP &amp;lt; open IP&amp;gt; without the need for identification.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Id&amp;quot;: &amp;quot;S3-allow-from-my-ip&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;IPAllow&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: [&lt;br /&gt;
                &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
                &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
                &amp;quot;arn:aws:s3::&amp;lt;project id&amp;gt;:&amp;lt;private bucket&amp;gt;/*&amp;quot;,&lt;br /&gt;
                &amp;quot;arn:aws:s3::&amp;lt;project id&amp;gt;:&amp;lt;private bucket&amp;gt;&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;IpAddress&amp;quot;: {&lt;br /&gt;
                    &amp;quot;aws:SourceIp&amp;quot;: &amp;quot;&amp;lt;open IP&amp;gt;/32&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The policy on projects &amp;lt;project&amp;gt; is applied like this:&lt;br /&gt;
&lt;br /&gt;
Get the local IP, this is the floating IP of a VM I have deployed on my project, but it could be any public IP or range.       &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
$curl -4 ifconfig.co&lt;br /&gt;
198.168.189.175&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check that the bucket is private, it returns AccessDenied in a xml file.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
$curl  https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite/&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;Error&amp;gt;&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&amp;lt;Message&amp;gt;&amp;lt;/Message&amp;gt;&amp;lt;BucketName&amp;gt;truite&amp;lt;/BucketName&amp;gt;&amp;lt;RequestId&amp;gt;tx00000a0656342bf1c6a6f-0069862e7e-122190171-default&amp;lt;/RequestId&amp;gt;&amp;lt;HostId&amp;gt;122190171-default-default&amp;lt;/HostId&amp;gt;&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml formal is a pain we all have to deal with from time to time. You can install the [https://github.com/kislyuk/yq/ yq] cli to you environement to make them readable. The cli comes with yq a yaml parser but also with xq, an xml parser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
$pip install yq&lt;br /&gt;
$curl -s    https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq  &lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Error&amp;quot;: {&lt;br /&gt;
    &amp;quot;Code&amp;quot;: &amp;quot;AccessDenied&amp;quot;,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: null,&lt;br /&gt;
    &amp;quot;BucketName&amp;quot;: &amp;quot;truite&amp;quot;,&lt;br /&gt;
    &amp;quot;RequestId&amp;quot;: &amp;quot;tx00000b4182e1d6e9932f2-0069863de1-122190231-default&amp;quot;,&lt;br /&gt;
    &amp;quot;HostId&amp;quot;: &amp;quot;122190231-default-default&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, lets apply the policy and see if we can list the bucket and get the data&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
$aws --profile po-test s3api  put-bucket-policy --policy file://policy.json --bucket truite&lt;br /&gt;
$curl -s   https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq .ListBucketResult.Contents.[].Key&lt;br /&gt;
&amp;quot;package.json/package.json&amp;quot;&lt;br /&gt;
&amp;quot;testdir/&amp;quot;&lt;br /&gt;
&amp;quot;testdir/package.json&amp;quot;&lt;br /&gt;
&amp;quot;vagabon.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For good mesure we go on another machine to make sure that the data is not available form there:&lt;br /&gt;
&amp;lt;syntaxhighlight &amp;gt;&lt;br /&gt;
$curl -4 ifconfig.co&lt;br /&gt;
132.219.138.77&lt;br /&gt;
$curl -s   https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Error&amp;quot;: {&lt;br /&gt;
    &amp;quot;Code&amp;quot;: &amp;quot;AccessDenied&amp;quot;,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: null,&lt;br /&gt;
    &amp;quot;BucketName&amp;quot;: &amp;quot;truite&amp;quot;,&lt;br /&gt;
    &amp;quot;RequestId&amp;quot;: &amp;quot;tx00000f13e03ed77f374bd-0069863f2b-122190379-default&amp;quot;,&lt;br /&gt;
    &amp;quot;HostId&amp;quot;: &amp;quot;122190379-default-default&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Bucket_policy&amp;diff=217</id>
		<title>Bucket policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Bucket_policy&amp;diff=217"/>
		<updated>2026-02-06T19:24:10Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;Bucket policies can be used to make buckets partially or completely public, they can also be used to limit access to public buckets. They can be used as some kind of firewall on your data.   Our Object store S3 API is provided by Ceph&amp;#039;s Rados Gateway. Its [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/ supported policies] are a subset of the [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html AWS bucket policies].  == Making a bucket public...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bucket policies can be used to make buckets partially or completely public, they can also be used to limit access to public buckets. They can be used as some kind of firewall on your data. &lt;br /&gt;
&lt;br /&gt;
Our Object store S3 API is provided by Ceph&#039;s Rados Gateway. Its [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/ supported policies] are a subset of the [https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html AWS bucket policies].&lt;br /&gt;
&lt;br /&gt;
== Making a bucket public on a specific IP address range.==&lt;br /&gt;
&lt;br /&gt;
We will use the [https://docs.aws.amazon.com/cli/latest/ aws cli] set policies. Make sure that is it properly configured for Juno.&lt;br /&gt;
&lt;br /&gt;
This policy.json example will let objects from the bucket &amp;lt;private bucket&amp;gt; in project &amp;lt;project id&amp;gt; be listed (s3:ListBucket) and read (s3:GetObject) from the public IP &amp;lt; open IP&amp;gt; without the need for identification.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Id&amp;quot;: &amp;quot;S3-allow-from-my-ip&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Sid&amp;quot;: &amp;quot;IPAllow&amp;quot;,&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: &amp;quot;*&amp;quot;,&lt;br /&gt;
            &amp;quot;Action&amp;quot;: [&lt;br /&gt;
                &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
                &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
                &amp;quot;arn:aws:s3::&amp;lt;project id&amp;gt;:&amp;lt;private bucket&amp;gt;/*&amp;quot;,&lt;br /&gt;
                &amp;quot;arn:aws:s3::&amp;lt;project id&amp;gt;:&amp;lt;private bucket&amp;gt;&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;IpAddress&amp;quot;: {&lt;br /&gt;
                    &amp;quot;aws:SourceIp&amp;quot;: &amp;quot;&amp;lt;open IP&amp;gt;/32&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The policy on projects &amp;lt;project&amp;gt; is applied like this:&lt;br /&gt;
&lt;br /&gt;
Get the local IP, this is the floating IP of a VM I have deployed on my project, but it could be any public IP or range.       &lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$curl -4 ifconfig.co&lt;br /&gt;
198.168.189.175&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Check that the bucket is private, it returns AccessDenied in a xml file.&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$curl  https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite/&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;Error&amp;gt;&amp;lt;Code&amp;gt;AccessDenied&amp;lt;/Code&amp;gt;&amp;lt;Message&amp;gt;&amp;lt;/Message&amp;gt;&amp;lt;BucketName&amp;gt;truite&amp;lt;/BucketName&amp;gt;&amp;lt;RequestId&amp;gt;tx00000a0656342bf1c6a6f-0069862e7e-122190171-default&amp;lt;/RequestId&amp;gt;&amp;lt;HostId&amp;gt;122190171-default-default&amp;lt;/HostId&amp;gt;&amp;lt;/Error&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The xml formal is a pain we all have to deal with from time to time. You can install the [https://github.com/kislyuk/yq/ yq] cli to you environement to make them readable. The cli comes with yq a yaml parser but also with xq, an xml parser.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$pip install yq&lt;br /&gt;
$curl -s    https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq  &lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Error&amp;quot;: {&lt;br /&gt;
    &amp;quot;Code&amp;quot;: &amp;quot;AccessDenied&amp;quot;,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: null,&lt;br /&gt;
    &amp;quot;BucketName&amp;quot;: &amp;quot;truite&amp;quot;,&lt;br /&gt;
    &amp;quot;RequestId&amp;quot;: &amp;quot;tx00000b4182e1d6e9932f2-0069863de1-122190231-default&amp;quot;,&lt;br /&gt;
    &amp;quot;HostId&amp;quot;: &amp;quot;122190231-default-default&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, lets apply the policy and see if we can list the bucket and get the data&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$aws --profile po-test s3api  put-bucket-policy --policy file://policy.json --bucket truite&lt;br /&gt;
$curl -s   https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq .ListBucketResult.Contents.[].Key&lt;br /&gt;
&amp;quot;package.json/package.json&amp;quot;&lt;br /&gt;
&amp;quot;testdir/&amp;quot;&lt;br /&gt;
&amp;quot;testdir/package.json&amp;quot;&lt;br /&gt;
&amp;quot;vagabon.png&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
For good mesure we go on another machine to make sure that the data is not available form there:&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$curl -4 ifconfig.co&lt;br /&gt;
132.219.138.77&lt;br /&gt;
$curl -s   https://objets.juno.calculquebec.ca/ad99d6c3087041bcb6c0fe5f2da54df9:truite  | xq&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;Error&amp;quot;: {&lt;br /&gt;
    &amp;quot;Code&amp;quot;: &amp;quot;AccessDenied&amp;quot;,&lt;br /&gt;
    &amp;quot;Message&amp;quot;: null,&lt;br /&gt;
    &amp;quot;BucketName&amp;quot;: &amp;quot;truite&amp;quot;,&lt;br /&gt;
    &amp;quot;RequestId&amp;quot;: &amp;quot;tx00000f13e03ed77f374bd-0069863f2b-122190379-default&amp;quot;,&lt;br /&gt;
    &amp;quot;HostId&amp;quot;: &amp;quot;122190379-default-default&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=216</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=216"/>
		<updated>2026-02-06T17:15:30Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Object Store */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   7 680 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 10 176 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API, [https://en.wikipedia.org/wiki/Erasure_code EC] 8+3 || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe, [https://en.wikipedia.org/wiki/Erasure_code EC] 4+2  || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[Bucket policy]]&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
* Configuring [[Bucket Object Versioning]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Globus&amp;diff=213</id>
		<title>Globus</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Globus&amp;diff=213"/>
		<updated>2026-01-26T19:02:00Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Requesting access  ==&lt;br /&gt;
We offer the possibility of managing your Object Storage space with Globus. This is not a default offering and the configuration needs to be activated by one of our platform administrators. You can request access at juno@calculquebec.ca.&lt;br /&gt;
&lt;br /&gt;
== Globus Web App Browser Compatibility Issues ==&lt;br /&gt;
Globus should be compatible with most evergreen browsers; however, users have reported problems with Firefox (146.0, 5-Dec-2025).  Uploading and downloading through the Web App did not function.&lt;br /&gt;
&lt;br /&gt;
== Get S3 API key ==&lt;br /&gt;
&lt;br /&gt;
Data access is a two-level step. SD4H needs to give you access, you also need to generate your own key to complete the procedure. The procedure to generate [[Store_and_Share_data#Create_the_S3_(ec2)_Credentials|S3 credentials is documented on another page]]. The important point here is that the &#039;&#039;access&#039;&#039; and &#039;&#039;secret&#039;&#039; keys will are named &#039;&#039;AWS IAM Access Key ID&#039;&#039; and &#039;&#039;AWS IAM Secret Key&#039;&#039;, respectively, in the Globus interface.&lt;br /&gt;
&lt;br /&gt;
== Accessing My Data ==&lt;br /&gt;
Once you have the confirmation that a Globus Collection has been configured on the SD4H side, you can connected to [https://app.globus.org the Globus app ] with your &#039;&#039;Digital Research Alliance of Canada&#039;&#039; account and look for the name of your OpenStack project in FILE MANAGER --&amp;gt; Collection search inbox. Here the project this example de project is named c3g-dev.  &lt;br /&gt;
 &lt;br /&gt;
[[File:Screenshot from 2025-02-10 15-54-48.png|caption|none|1200px|Search for you project&#039;s collection]]&lt;br /&gt;
&lt;br /&gt;
The collection will always be named &amp;lt;project name&amp;gt;_collection and be subscribed under SD4H Globus Automated Endpoint. Look the three pictograms to the left of the  list. You will see the pad lock and the pantheon-like pictogram and the key, meaning respectively that the collection is in institutional High Availability mode and private.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After accessing the collection, you will see the following request: &#039;&#039;&#039;Your credential requires some initial setup&#039;&#039;&#039;. Click continue and enter there the &#039;&#039;AWS IAM Access Key ID&#039;&#039; and &#039;&#039;AWS IAM Secret Key&#039;&#039; you got from the previous step.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=210</id>
		<title>Store and Share data</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=210"/>
		<updated>2025-12-15T16:37:26Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
SD4H has a large Object Store. Objects are accessible through a web API via the Rados Gateway (radosgw) service. Both the S3 and swift API standards are supported by the radosgw.&lt;br /&gt;
&lt;br /&gt;
In an Object Store, an object is the equivalent of a file on a posix file system. The object store gives users a lot of flexibility, but the steps to do simple tasks like sharing and transferring data involve somewhat of a learning cure. We propose a procedure here so this curve is as gentle as possible. Once done, the procedure will be both more secure and more flexible than sharing data on a share HPC platform or on some VM owned by your group. You can find more information in our [[Object Store Quick Start]] page.    &lt;br /&gt;
&lt;br /&gt;
= Configuring S3 access =&lt;br /&gt;
&lt;br /&gt;
# You first need to have your [[OpenStack Client]] installed and configured. &lt;br /&gt;
# Then, with the client you generate an e2c/S3 id and secret&lt;br /&gt;
&lt;br /&gt;
With the client is installed and the RC files downloaded in step 1 you can create the S3 ID and secret. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack ec2 credentials create&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Field      | Value                                                                                                                                                                       |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| access     | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                                                                                            |&lt;br /&gt;
| links      | {&#039;self&#039;: &#039;https://juno.calculquebec.ca:5000/v3/users/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/credentials/OS-EC2/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&#039;} |&lt;br /&gt;
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| secret     | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| trust_id   | None                                                                                                                                                                        |&lt;br /&gt;
| user_id    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                            |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important values here are &amp;lt;code&amp;gt;access&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;which are the S3 [aws_]access_key_id and [aws_]secret_access_key respectively. AWS stands for Amazon Web Services, they are the creator of the S3 API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Manage you S3 buckets with Globus =&lt;br /&gt;
&lt;br /&gt;
See the [[Globus]] documentation&lt;br /&gt;
&lt;br /&gt;
= Use a S3 client to manage your bucket =&lt;br /&gt;
There are a few clients that can be used to access Ceph S3 api. We recomend [[rclone]], it is fast and and flexible.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=209</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=209"/>
		<updated>2025-11-27T18:16:56Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   7 680 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 10 176 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API, [https://en.wikipedia.org/wiki/Erasure_code EC] 8+3 || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe, [https://en.wikipedia.org/wiki/Erasure_code EC] 4+2  || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
* Configuring [[Bucket Object Versioning]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=SD4H_Infrastructure&amp;diff=203</id>
		<title>SD4H Infrastructure</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=SD4H_Infrastructure&amp;diff=203"/>
		<updated>2025-11-07T17:18:04Z</updated>

		<summary type="html">&lt;p&gt;Poq: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=SD4H_Infrastructure&amp;diff=202</id>
		<title>SD4H Infrastructure</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=SD4H_Infrastructure&amp;diff=202"/>
		<updated>2025-11-07T17:06:01Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;[https://lh4.googleusercontent.com/-cLKEldMbT_E/Tx8qXDuw6eI/AAAAAAAAAAs/Ke0pnlk8Gpg/w500-h344-k/BPMN%2Bdiagram%2Brc2f.png]  &amp;lt;img src=&amp;quot;https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;lightbox=1&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Physical-Server-room-dynamic.drawio&amp;amp;dark=auto#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1IwVyZtr1YYNp4-ZnK3BiEhElyQPFW9qZ%25.jpg&amp;quot;&amp;gt;   {| | https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;lightbox=1&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;tit...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://lh4.googleusercontent.com/-cLKEldMbT_E/Tx8qXDuw6eI/AAAAAAAAAAs/Ke0pnlk8Gpg/w500-h344-k/BPMN%2Bdiagram%2Brc2f.png]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;lightbox=1&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Physical-Server-room-dynamic.drawio&amp;amp;dark=auto#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1IwVyZtr1YYNp4-ZnK3BiEhElyQPFW9qZ%25.jpg&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| https://viewer.diagrams.net/?tags=%7B%7D&amp;amp;lightbox=1&amp;amp;highlight=0000ff&amp;amp;edit=_blank&amp;amp;layers=1&amp;amp;nav=1&amp;amp;title=Physical-Server-room-dynamic.drawio&amp;amp;dark=auto#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1IwVyZtr1YYNp4-ZnK3BiEhElyQPFW9qZ%26export%3Ddownload.jpg&lt;br /&gt;
|-&lt;br /&gt;
| caption&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=201</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=201"/>
		<updated>2025-11-05T03:43:53Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   7 680 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 10 176 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=200</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=200"/>
		<updated>2025-10-30T14:53:30Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   10 176 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 7 680 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58 PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=199</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=199"/>
		<updated>2025-10-30T14:53:16Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   10 176 cores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 7 680 cores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 cores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=198</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=198"/>
		<updated>2025-10-30T14:52:44Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   10 176 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 7 680 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3 072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=197</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=197"/>
		<updated>2025-10-30T14:52:18Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   10176 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 7680 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=196</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=196"/>
		<updated>2025-10-07T17:26:36Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== API endpoints ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Object Store API Endpoints&lt;br /&gt;
!Object Store API&lt;br /&gt;
!Endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Swift&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://objets.juno.calculquebec.ca/swift/v1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;S3&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://objets.juno.calculquebec.ca&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Project Specific Endpoint Patterns (for public READ buckets)&lt;br /&gt;
!Object Store API&lt;br /&gt;
!Project endpoint pattern&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Swift&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;endpoint&amp;gt;/&#039;&#039;&#039;AUTH_&amp;lt;PROJECT ID&amp;gt;/&amp;lt;CONTAINER&amp;gt;/&amp;lt;OBJECT&amp;gt;&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;S3&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;endpoint&amp;gt;/&#039;&#039;&#039;&amp;lt;PROJECT ID&amp;gt;:&amp;lt;CONTAINER&amp;gt;/&amp;lt;OBJECT&amp;gt;&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
=== The Swift Api ===&lt;br /&gt;
You can get access to the [https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html Object Store swift Api]  directly with the same RC file credential that you created for the Openstack client in the prerequisites step, and the official [https://pypi.org/project/python-swiftclient/ Openstack Swift client]. &lt;br /&gt;
&lt;br /&gt;
Note that while the S3 Api is more feature rich and has better support, some operations can only be done with the Swift Api which is the native OpenStack Object Store Api. For example, to get the Quota of you account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $ source $HOME/id/myproject-openrc.sh # created for the OpenStack client&lt;br /&gt;
 $ swift stat --lh&lt;br /&gt;
                                    Account: AUTH_d5f8b8e8e3e2442f81573b2f0951013b&lt;br /&gt;
                                 Containers: 11&lt;br /&gt;
                                    Objects: 2.0M&lt;br /&gt;
                                      Bytes: 1.1P&lt;br /&gt;
                                Quota Bytes: 1.5P&lt;br /&gt;
   Containers in policy &amp;quot;default-placement&amp;quot;: 11&lt;br /&gt;
      Objects in policy &amp;quot;default-placement&amp;quot;: 2.0M&lt;br /&gt;
        Bytes in policy &amp;quot;default-placement&amp;quot;: 1.1P&lt;br /&gt;
Objects in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
  Bytes in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
                      Meta Quota-Containers: 1000&lt;br /&gt;
                                X-Timestamp: 1745522890.88092&lt;br /&gt;
                X-Account-Bytes-Used-Actual: 1287786000326656&lt;br /&gt;
                                 X-Trans-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                     X-Openstack-Request-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                              Accept-Ranges: bytes&lt;br /&gt;
                               Content-Type: text/plain; charset=utf-8&lt;br /&gt;
                                     Server: Ceph Object Gateway (squid)&lt;br /&gt;
                                 Connection: close&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You see here an account with 11 Containers (Swift&#039;s Containers are S3 Buckets) 2 Million objects, and 1.1 PB used out of its 1.5 PB quota.&lt;br /&gt;
&lt;br /&gt;
=== The S3 Api ===&lt;br /&gt;
While the Switft API can be accessed with the OpenStack RC file credentials, the S3 object store maintains its own set of credentials.&lt;br /&gt;
&lt;br /&gt;
To create S3 credentials for a project/user:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
openstack ec2 credentials create&lt;br /&gt;
&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Field      | Value                                                                                            |&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
| access     | &amp;lt;S3 ACCESS KEY&amp;gt;                                                                                  |&lt;br /&gt;
| links      | {&#039;self&#039;: &#039;https://juno.calculquebec.ca:5000/v3/users/&amp;lt;USER ID&amp;gt;/credentials/OS-EC2/&amp;lt;ACCESS KEY&amp;gt;&#039;} |&lt;br /&gt;
| project_id | &amp;lt;OPENSTACK PROJECT ID&amp;gt;                                                                           |&lt;br /&gt;
| secret     | &amp;lt;S3 SECRET KEY&amp;gt;                                                                                  |&lt;br /&gt;
| trust_id   | None                                                                                             |&lt;br /&gt;
| user_id    | &amp;lt;USER ID&amp;gt;                                                                                        |&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Using the Object Store ===&lt;br /&gt;
Consider using [[rclone]] to access and work with the Object Store.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Sharing your Data==&lt;br /&gt;
&lt;br /&gt;
We recommend using [[Globus]] to share data Store in our Object Store. However, you can also [[Share Object Store Data#Share data with Bucket Policies|share data using bucket policies]] with groups that are also tenants on our platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== What an Object Store is and isn&#039;t==&lt;br /&gt;
(from https://github.com/s3fs-fuse/s3fs-fuse?tab=readme-ov-file#limitations)&lt;br /&gt;
&lt;br /&gt;
Generally, an Object Store cannot offer the same performance or semantics as a local file system.  More specifically: &lt;br /&gt;
&lt;br /&gt;
*random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy&lt;br /&gt;
* metadata operations such as listing directories have poor performance due to network latency&lt;br /&gt;
*non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)&lt;br /&gt;
*no atomic renames of files or directories&lt;br /&gt;
*no coordination between multiple clients mounting the same bucket&lt;br /&gt;
*no hard links&lt;br /&gt;
*inotify detects only local modifications, not external ones by other clients or tools&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Share_Object_Store_Data&amp;diff=195</id>
		<title>Share Object Store Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Share_Object_Store_Data&amp;diff=195"/>
		<updated>2025-10-07T17:25:52Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;We recommend using Globus to share data Store in our Object Store. But you can also use bucket policies to share data with groups that are also tenants on our platform.   = Share data with Bucket Policies =  == Create the right policy ==  Note that we are only documenting the use of the S3 API, but note that setting will also be [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/#swift transfer to the swift API].   We will show you you can create a [https://docs.c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We recommend using [[Globus]] to share data Store in our Object Store. But you can also use bucket policies to share data with groups that are also tenants on our platform.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Share data with Bucket Policies =&lt;br /&gt;
&lt;br /&gt;
== Create the right policy ==&lt;br /&gt;
&lt;br /&gt;
Note that we are only documenting the use of the S3 API, but note that setting will also be [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/#swift transfer to the swift API]. &lt;br /&gt;
&lt;br /&gt;
We will show you you can create a [https://docs.ceph.com/en/latest/radosgw/bucketpolicy/ bucket policy] to share selected objects from that bucket to other tenants of the platform. &lt;br /&gt;
&lt;br /&gt;
First ask the other group what their project number on the Juno is. It is a 33 digit hexadecimal number [https://juno.calculquebec.ca/identity located here]. We will denote that number as &amp;lt;code&amp;gt;&amp;amp;lt;Remote-Project&amp;amp;gt;&amp;lt;/code&amp;gt;. Here is a &amp;lt;code&amp;gt;policy.jon&amp;lt;/code&amp;gt; example file that can share the content of &amp;lt;code&amp;gt;bucket-to-share&amp;lt;/code&amp;gt; with all members of &amp;lt;code&amp;gt;&amp;amp;lt;Remote-Project&amp;amp;gt;&amp;lt;/code&amp;gt;. Note that you cannot share the bucket with a specific member of that project; you share it with the project as a whole.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Id&amp;quot;: &amp;quot;S3PolicyId1&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam::&amp;lt;Remote-Project&amp;gt;:user/&amp;lt;Remote-Project&amp;gt;&amp;quot;]},&lt;br /&gt;
            &amp;quot;Action&amp;quot;: [&lt;br /&gt;
              &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
              &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
                       &amp;quot;arn:aws:s3:::bucket-to-share&amp;quot;,&lt;br /&gt;
                       &amp;quot;arn:aws:s3:::bucket-to-share/*&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
Note that you need to give access to &amp;lt;code&amp;gt;bucket-to-share&amp;lt;/code&amp;gt; itself, so you can read information about it. You also need to give access to the objects with the glob&#039;s notation &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;. It also means that you can give access to a specific list of objects like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
    &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,&lt;br /&gt;
    &amp;quot;Id&amp;quot;: &amp;quot;S3PolicyId1&amp;quot;,&lt;br /&gt;
    &amp;quot;Statement&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
            &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam::&amp;lt;Remote-Project&amp;gt;:user/&amp;lt;Remote-Project&amp;gt;&amp;quot;]},&lt;br /&gt;
            &amp;quot;Action&amp;quot;: [&lt;br /&gt;
              &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
              &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
                       &amp;quot;arn:aws:s3:::bucket-to-share&amp;quot;,&lt;br /&gt;
                       &amp;quot;arn:aws:s3:::bucket-to-share/prefix-*&amp;quot;,&lt;br /&gt;
                       &amp;quot;arn:aws:s3:::bucket-to-share/specific-file.txt&amp;quot;&lt;br /&gt;
            ]&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
== Apply the Policy to the Bucket  ==&lt;br /&gt;
&lt;br /&gt;
You first need to [[create an s3 key and secret pair]]. Then use the client of you choosing to interact with the S3 API. We like the official &amp;lt;code&amp;gt;aws&amp;lt;/code&amp;gt; client, since it is flexible and well documented. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;aws  s3api put-bucket-policy --bucket bucket-to-share --policy file://policy.json&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How can the other group can read the data now? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That part is a bit more complicated... Every tenant in our Ceph cluster lives in its own namespace, which means that [https://stackoverflow.com/questions/24112647/why-are-s3-and-google-storage-bucket-names-a-global-namespace unlike the AWS] object store, out [https://docs.ceph.com/en/latest/radosgw/multitenancy/#accessing-buckets-with-explicit-tenants namespace configuration is not global]. It uses multi-tenancy... to an extent. When you are accessing the object store of your own tenant, it does not make a difference if the namespace is global or not. When accessing the data from another tenant, your tenant’s id is prepended to the bucket name like this : &amp;lt;code&amp;gt;&amp;amp;lt;Remote-Project&amp;amp;gt;:&amp;amp;lt;bucket-name&amp;amp;gt;&amp;lt;/code&amp;gt;. This means that you need to share your bucket &amp;lt;code&amp;gt;project id&amp;lt;/code&amp;gt; with the group you want to share the data with. Lest say that your &amp;lt;code&amp;gt;project id&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;&amp;amp;lt;my-project&amp;amp;gt;&amp;lt;/code&amp;gt;, your collaborator will be able to use the &amp;lt;code&amp;gt;rclone&amp;lt;/code&amp;gt; client out of the box like this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;rclone ls  rclone-config-name:&amp;lt;my-project&amp;gt;:mybu/  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However some clients will not accept the &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; in the bucket name. If you are using &amp;lt;code&amp;gt;boto3&amp;lt;/code&amp;gt;, the official &amp;lt;code&amp;gt;aws&amp;lt;/code&amp;gt; python &amp;lt;code&amp;gt;s3&amp;lt;/code&amp;gt; client, you will need to add the &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; character to the VALID_BUCKET list of accepted `character before using it:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;import boto3&lt;br /&gt;
from botocore.config import Config&lt;br /&gt;
import botocore.handlers&lt;br /&gt;
import re&lt;br /&gt;
botocore.handlers.VALID_BUCKET = re.compile(r&#039;^[:a-zA-Z0-9.\-_]{1,255}$&#039;)&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
# Specify the bucket name including the tenant&lt;br /&gt;
bucket_name = &amp;quot;tenant:bucketname&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Example: List objects in the bucket&lt;br /&gt;
response = s3_client.list_objects_v2(Bucket=bucket_name)&lt;br /&gt;
[...]&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, the &amp;lt;code&amp;gt;aws&amp;lt;/code&amp;gt; client is also built on top of the &amp;lt;code&amp;gt;boto3&amp;lt;/code&amp;gt; library, and changing the VALID_BUCKET value in the &amp;lt;code&amp;gt;awscli/botocore/handlers.py&amp;lt;/code&amp;gt; installed with you &amp;lt;code&amp;gt;aws&amp;lt;/code&amp;gt; client would also let you use that client. While it is a working hack, we would not recommend that last solution as a sustainable way of using that tool.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=194</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=194"/>
		<updated>2025-10-07T17:14:29Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* The S3 Api */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== API endpoints ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Object Store API Endpoints&lt;br /&gt;
!Object Store API&lt;br /&gt;
!Endpoint&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Swift&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://objets.juno.calculquebec.ca/swift/v1&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;S3&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://objets.juno.calculquebec.ca&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Project Specific Endpoint Patterns (for public READ buckets)&lt;br /&gt;
!Object Store API&lt;br /&gt;
!Project endpoint pattern&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Swift&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;endpoint&amp;gt;/&#039;&#039;&#039;AUTH_&amp;lt;PROJECT ID&amp;gt;/&amp;lt;CONTAINER&amp;gt;/&amp;lt;OBJECT&amp;gt;&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;S3&#039;&#039;&#039;&lt;br /&gt;
|&amp;lt;code&amp;gt;&amp;lt;endpoint&amp;gt;/&#039;&#039;&#039;&amp;lt;PROJECT ID&amp;gt;:&amp;lt;CONTAINER&amp;gt;/&amp;lt;OBJECT&amp;gt;&#039;&#039;&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
=== The Swift Api ===&lt;br /&gt;
You can get access to the [https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html Object Store swift Api]  directly with the same RC file credential that you created for the Openstack client in the prerequisites step, and the official [https://pypi.org/project/python-swiftclient/ Openstack Swift client]. &lt;br /&gt;
&lt;br /&gt;
Note that while the S3 Api is more feature rich and has better support, some operations can only be done with the Swift Api which is the native OpenStack Object Store Api. For example, to get the Quota of you account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $ source $HOME/id/myproject-openrc.sh # created for the OpenStack client&lt;br /&gt;
 $ swift stat --lh&lt;br /&gt;
                                    Account: AUTH_d5f8b8e8e3e2442f81573b2f0951013b&lt;br /&gt;
                                 Containers: 11&lt;br /&gt;
                                    Objects: 2.0M&lt;br /&gt;
                                      Bytes: 1.1P&lt;br /&gt;
                                Quota Bytes: 1.5P&lt;br /&gt;
   Containers in policy &amp;quot;default-placement&amp;quot;: 11&lt;br /&gt;
      Objects in policy &amp;quot;default-placement&amp;quot;: 2.0M&lt;br /&gt;
        Bytes in policy &amp;quot;default-placement&amp;quot;: 1.1P&lt;br /&gt;
Objects in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
  Bytes in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
                      Meta Quota-Containers: 1000&lt;br /&gt;
                                X-Timestamp: 1745522890.88092&lt;br /&gt;
                X-Account-Bytes-Used-Actual: 1287786000326656&lt;br /&gt;
                                 X-Trans-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                     X-Openstack-Request-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                              Accept-Ranges: bytes&lt;br /&gt;
                               Content-Type: text/plain; charset=utf-8&lt;br /&gt;
                                     Server: Ceph Object Gateway (squid)&lt;br /&gt;
                                 Connection: close&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You see here an account with 11 Containers (Swift&#039;s Containers are S3 Buckets) 2 Million objects, and 1.1 PB used out of its 1.5 PB quota.&lt;br /&gt;
&lt;br /&gt;
=== The S3 Api ===&lt;br /&gt;
While the Switft API can be accessed with the OpenStack RC file credentials, the S3 object store maintains its own set of credentials.&lt;br /&gt;
&lt;br /&gt;
To create S3 credentials for a project/user:&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
openstack ec2 credentials create&lt;br /&gt;
&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Field      | Value                                                                                            |&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
| access     | &amp;lt;S3 ACCESS KEY&amp;gt;                                                                                  |&lt;br /&gt;
| links      | {&#039;self&#039;: &#039;https://juno.calculquebec.ca:5000/v3/users/&amp;lt;USER ID&amp;gt;/credentials/OS-EC2/&amp;lt;ACCESS KEY&amp;gt;&#039;} |&lt;br /&gt;
| project_id | &amp;lt;OPENSTACK PROJECT ID&amp;gt;                                                                           |&lt;br /&gt;
| secret     | &amp;lt;S3 SECRET KEY&amp;gt;                                                                                  |&lt;br /&gt;
| trust_id   | None                                                                                             |&lt;br /&gt;
| user_id    | &amp;lt;USER ID&amp;gt;                                                                                        |&lt;br /&gt;
+------------+--------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Using the Object Store ===&lt;br /&gt;
Consider using [[rclone]] to access and work with the Object Store.&lt;br /&gt;
&lt;br /&gt;
==What an Object Store is and isn&#039;t==&lt;br /&gt;
(from https://github.com/s3fs-fuse/s3fs-fuse?tab=readme-ov-file#limitations)&lt;br /&gt;
&lt;br /&gt;
Generally, an Object Store cannot offer the same performance or semantics as a local file system.  More specifically:&lt;br /&gt;
&lt;br /&gt;
*random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy&lt;br /&gt;
*metadata operations such as listing directories have poor performance due to network latency&lt;br /&gt;
*non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)&lt;br /&gt;
*no atomic renames of files or directories&lt;br /&gt;
*no coordination between multiple clients mounting the same bucket&lt;br /&gt;
*no hard links&lt;br /&gt;
*inotify detects only local modifications, not external ones by other clients or tools&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=193</id>
		<title>Backing up Object Store</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Backing_up_Object_Store&amp;diff=193"/>
		<updated>2025-09-23T13:28:37Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* List bucket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
Object Store data, while stored redundantly via Ceph, is not backed up by default.  Object Store buckets are backed up to the TSM tape system upon request only by following the procedures listed on this page.&lt;br /&gt;
&lt;br /&gt;
== Content and policies ==&lt;br /&gt;
The following are the default contents and policies of requested backups:&lt;br /&gt;
&lt;br /&gt;
What is in the backup?&lt;br /&gt;
 * Only the bucket data is backed up.  We are not currently backing up the IAM policies of the buckets or objects.&lt;br /&gt;
 * Only the current version of the data is seen by the backup system.  Object chunks or versioned objects are not seen by the backups system.&lt;br /&gt;
What is the backup policy?&lt;br /&gt;
 * Backups are run on a daily basis.&lt;br /&gt;
 * The current object and one modified version of object are kept (this is different than full bucket versioning).    &lt;br /&gt;
 * The modified version is kept for 6 month - after that period only the current object is kept. &lt;br /&gt;
 * Deleted objects are kept for 6 months.&lt;br /&gt;
&lt;br /&gt;
= Backup Procedure =&lt;br /&gt;
&lt;br /&gt;
Please follow this procedure to request backups of your buckets. &lt;br /&gt;
&lt;br /&gt;
==Email the list of buckets==&lt;br /&gt;
&lt;br /&gt;
Send a list of buckets to be backed up to [mailto:juno@calculquebec.ca sd4h support] with the name and ID of the project where the buckets live.&lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
An IAM policy statement must be applied to &#039;&#039;&#039;all the buckets&#039;&#039;&#039; you want to backup so the TSM robot user in charge of the backup can access them.  This can be done with the [https://awscli.amazonaws.com/v2/documentation/api/latest/index.html aws cli].&lt;br /&gt;
&lt;br /&gt;
First, ensure that &amp;lt;code&amp;gt;my-bucket&amp;lt;/code&amp;gt; currently has no IAM policy.  Check bucket &amp;lt;code&amp;gt;my-bucket&amp;lt;/code&amp;gt; using profile &amp;lt;code&amp;gt;my-profile&amp;lt;/code&amp;gt; (as defined in ~/.aws/config and ~/.aws/credentials files) with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$aws s3api get-bucket-policy --profile c3g-data-repos --bucket my-bucket&lt;br /&gt;
&lt;br /&gt;
An error occurred (NoSuchBucketPolicy) when calling the GetBucketPolicy operation: The bucket policy does not exist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that command returns something, the new policy statements must be added to the existing policy (which is not covered here).&lt;br /&gt;
&lt;br /&gt;
The following policy.json needs to be applied.&lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Load the policy onto the bucket &amp;lt;code&amp;gt;my-bucket&amp;lt;/code&amp;gt; using the profile &amp;lt;code&amp;gt;my-profile:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$aws s3api put-bucket-policy --policy file://my-policy.json --profile my-profile --bucket my-bucket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Confirm IAM policy applied ==&lt;br /&gt;
As we did before, request the bucket&#039;s IAM policy, ensuring that the contents of policy.json are listed.&lt;br /&gt;
 $aws s3api get-bucket-policy --profile c3g-data-repos --bucket my-bucket&lt;br /&gt;
&lt;br /&gt;
=Restore Procedure=&lt;br /&gt;
&lt;br /&gt;
==List bucket==&lt;br /&gt;
&lt;br /&gt;
Send us the list of buckets or objects to restore at [mailto:juno@calculquebec.ca sd4h support]. &lt;br /&gt;
&lt;br /&gt;
==Give us permission==&lt;br /&gt;
&lt;br /&gt;
For each bucket you want to be restored, you will be asked to create a bucket with the &amp;lt;code&amp;gt;-restore&amp;lt;/code&amp;gt; suffix. &lt;br /&gt;
&lt;br /&gt;
Following the previous procedure, apply this restore IAM policy. &lt;br /&gt;
&amp;lt;div class=&amp;quot;filename&amp;quot;&amp;gt;&#039;&#039;&#039;File :&#039;&#039;&#039; policy.json &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot; file=&amp;quot;my-policy.json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;quot;Statement&amp;quot;: [&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,&lt;br /&gt;
    &amp;quot;Principal&amp;quot;: {&amp;quot;AWS&amp;quot;: [&amp;quot;arn:aws:iam:::user/tsm&amp;quot;]},&lt;br /&gt;
    &amp;quot;Action&amp;quot;: [&lt;br /&gt;
      &amp;quot;s3:ListBucket&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:GetObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObject&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:PutObjectAcl&amp;quot;,&lt;br /&gt;
      &amp;quot;s3:AbortMultipartUpload&amp;quot;&lt;br /&gt;
    ],&lt;br /&gt;
    &amp;quot;Resource&amp;quot;: [&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore/*&amp;quot;,&lt;br /&gt;
      &amp;quot;arn:aws:s3:::my-bucket-restore&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once done, we will restore your data to the &amp;lt;code&amp;gt;*-restore&amp;lt;/code&amp;gt; buckets.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=192</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=192"/>
		<updated>2025-09-11T19:43:55Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || 3 copies, all SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=191</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=191"/>
		<updated>2025-09-11T19:42:54Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; NVMe || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=190</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=190"/>
		<updated>2025-09-11T18:57:41Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || All SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 58PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; All SSD || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=189</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=189"/>
		<updated>2025-09-11T18:57:08Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Infrastructure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || All SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 60PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; All SSD || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
* [[SSH to a server via Bastion]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=172</id>
		<title>OpenStack Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=172"/>
		<updated>2025-07-24T14:50:55Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Installing Missing Plugins with pip */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Install the openstack client==&lt;br /&gt;
You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo dnf install python-openstackclient-doc.noarch&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo apt-get install python python-dev python-pip&lt;br /&gt;
sudo pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;pip&amp;quot;&amp;gt;&lt;br /&gt;
This will get you the latest version of the client&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OSX&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to have [https://brew.sh/ homebew] installed, then the client can be install using pipx&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
brew install pipx&lt;br /&gt;
pipx install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;windows&amp;quot;&amp;gt;&lt;br /&gt;
Install your favorite linux distribution&lt;br /&gt;
with [https://learn.microsoft.com/en-us/windows/wsl/install-manual Windows Subsystem Linux]&lt;br /&gt;
and follow the precedure from another tab :)&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installing Missing Plugins===&lt;br /&gt;
&lt;br /&gt;
Depending on the procedure that was used to install the OpenStask client, some plugin could be missing. They can be added with pip, for example the &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; subcommand is part of the Manilla plugin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
pip install python-manilaclient&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A list of the main plugins is available in [https://docs.openstack.org/python-openstackclient/latest/cli/plugin-commands/index.html openstack documentation client page].&lt;br /&gt;
&lt;br /&gt;
==Get the client rc file==&lt;br /&gt;
&lt;br /&gt;
Once the client is install you need to set login credentials. You can get these credentials by connecting to the [https://juno.calculquebec.ca/ Juno web page]. Select the right project to store your data and download the RC file:&lt;br /&gt;
&lt;br /&gt;
[[File:Get openstack rc file.gif|caption|frame|none| the RC file from the Juno website]]&lt;br /&gt;
&lt;br /&gt;
Lets say that we have saved the files here &amp;lt;code&amp;gt; $HOME/id/myproject-openrc.sh.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test the connection ==&lt;br /&gt;
&lt;br /&gt;
We will test the connection by listing all the images made available on the platform that can be used out of the box to start VMs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack image list &lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| ID                                   | Name                             | Status |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| 8b1f4da1-fc76-4658-b1c0-6cf804b41471 | AlmaLinux-8.10-x64-2024-05       | active |&lt;br /&gt;
| dfaf1644-a43b-4e90-8183-57a790d86721 | AlmaLinux-8.9-x64-2023-11        | active |&lt;br /&gt;
| dc381bb1-ad39-41d5-90d0-b95b71e845e6 | AlmaLinux-9.3-x64-2023-11        | active |&lt;br /&gt;
| 7a6e0a71-3748-49a9-aff7-33723ee087af | AlmaLinux-9.4-x64-2024-05        | active |&lt;br /&gt;
| 8afc3889-3430-4609-96a1-c318d4be2c61 | Debian-11.8-Bullseye-x64-2023-10 | active |&lt;br /&gt;
| eeee43a6-9301-43f4-b60b-ef80ce70ad5d | Debian-11.9-Bullseye-x64-2024-06 | active |&lt;br /&gt;
| 12588d14-c006-46d9-97d1-1cc1e97024f2 | Debian-12.2-Bookworm-x64-2023-10 | active |&lt;br /&gt;
| 18eeeba7-9fad-4b15-8d9b-678be2b67a88 | Debian-12.5-Bookworm-x64-2024-06 | active |&lt;br /&gt;
| f0580bb8-ff31-4bd4-818a-e5f45897bd1e | Fedora-39-1.5-x64-2023-11        | active |&lt;br /&gt;
| e9b7ef77-4d50-4d14-8094-44aa6d40ba83 | Fedora-40-1.14-x64-2024-06       | active |&lt;br /&gt;
| 4d533cb2-8179-4bc2-8c54-2e0f065b5137 | Rocky-8.10-x64-2024-06           | active |&lt;br /&gt;
| 90894672-707b-4103-8683-f06b9d5a6bd0 | Rocky-8.8-x64-2023-05            | active |&lt;br /&gt;
| cef2dcef-5c0d-40f3-9fde-b4d3a26ce8e1 | Rocky-8.9-x64-2023-11            | active |&lt;br /&gt;
| f95b59a2-99fd-4b7f-912c-d7f17640a791 | Rocky-9.3-x64-2023-11            | active |&lt;br /&gt;
| dcf29959-7404-4677-b24d-c25dfcef8da0 | Ubuntu-20.04.6-Focal-x64-2023-11 | active |&lt;br /&gt;
| 09222ea9-a2e2-405e-af14-1d5a59b6eab0 | Ubuntu-22.04.3-Jammy-x64-2023-11 | active |&lt;br /&gt;
| 9884ac0b-a05c-4327-b16a-104fabdf74cf | Ubuntu-22.04.4-Jammy-x64-2024-06 | active |&lt;br /&gt;
| 512331f0-b039-4e90-be2e-d79765a5b21a | Ubuntu-22.04.Jammy-x46-2023-07   | active |&lt;br /&gt;
| d812cc8a-caf9-4237-824c-0660d7654dc1 | Ubuntu-24.04-Noble-x64-2024-06   | active |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A return value looking like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line &amp;gt;&lt;br /&gt;
$ openstack image list &lt;br /&gt;
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5305b993-4c73-4a14-8596-a90bf64f293f)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Would normaly mean that there is a typo in you pasword, you can source the RC file again to correct your password.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=171</id>
		<title>OpenStack Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=171"/>
		<updated>2025-07-24T14:30:47Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Install the openstack client==&lt;br /&gt;
You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo dnf install python-openstackclient-doc.noarch&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo apt-get install python python-dev python-pip&lt;br /&gt;
sudo pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;pip&amp;quot;&amp;gt;&lt;br /&gt;
This will get you the latest version of the client&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OSX&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to have [https://brew.sh/ homebew] installed, then the client can be install using pipx&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
brew install pipx&lt;br /&gt;
pipx install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;windows&amp;quot;&amp;gt;&lt;br /&gt;
Install your favorite linux distribution&lt;br /&gt;
with [https://learn.microsoft.com/en-us/windows/wsl/install-manual Windows Subsystem Linux]&lt;br /&gt;
and follow the precedure from another tab :)&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Installing Missing Plugins with pip===&lt;br /&gt;
&lt;br /&gt;
Depending on the procedure that was used to install the OpenStask client, some plugin could be missing. They can be added with pip, for example the &amp;lt;code&amp;gt;share&amp;lt;/code&amp;gt; subcommand is part of the Manilla plugin:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
pip install python-manilaclient&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A list of the main plugins is available in [https://docs.openstack.org/python-openstackclient/latest/cli/plugin-commands/index.html openstack documentation client page].&lt;br /&gt;
&lt;br /&gt;
==Get the client rc file==&lt;br /&gt;
&lt;br /&gt;
Once the client is install you need to set login credentials. You can get these credentials by connecting to the [https://juno.calculquebec.ca/ Juno web page]. Select the right project to store your data and download the RC file:&lt;br /&gt;
&lt;br /&gt;
[[File:Get openstack rc file.gif|caption|frame|none| the RC file from the Juno website]]&lt;br /&gt;
&lt;br /&gt;
Lets say that we have saved the files here &amp;lt;code&amp;gt; $HOME/id/myproject-openrc.sh.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test the connection ==&lt;br /&gt;
&lt;br /&gt;
We will test the connection by listing all the images made available on the platform that can be used out of the box to start VMs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack image list &lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| ID                                   | Name                             | Status |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| 8b1f4da1-fc76-4658-b1c0-6cf804b41471 | AlmaLinux-8.10-x64-2024-05       | active |&lt;br /&gt;
| dfaf1644-a43b-4e90-8183-57a790d86721 | AlmaLinux-8.9-x64-2023-11        | active |&lt;br /&gt;
| dc381bb1-ad39-41d5-90d0-b95b71e845e6 | AlmaLinux-9.3-x64-2023-11        | active |&lt;br /&gt;
| 7a6e0a71-3748-49a9-aff7-33723ee087af | AlmaLinux-9.4-x64-2024-05        | active |&lt;br /&gt;
| 8afc3889-3430-4609-96a1-c318d4be2c61 | Debian-11.8-Bullseye-x64-2023-10 | active |&lt;br /&gt;
| eeee43a6-9301-43f4-b60b-ef80ce70ad5d | Debian-11.9-Bullseye-x64-2024-06 | active |&lt;br /&gt;
| 12588d14-c006-46d9-97d1-1cc1e97024f2 | Debian-12.2-Bookworm-x64-2023-10 | active |&lt;br /&gt;
| 18eeeba7-9fad-4b15-8d9b-678be2b67a88 | Debian-12.5-Bookworm-x64-2024-06 | active |&lt;br /&gt;
| f0580bb8-ff31-4bd4-818a-e5f45897bd1e | Fedora-39-1.5-x64-2023-11        | active |&lt;br /&gt;
| e9b7ef77-4d50-4d14-8094-44aa6d40ba83 | Fedora-40-1.14-x64-2024-06       | active |&lt;br /&gt;
| 4d533cb2-8179-4bc2-8c54-2e0f065b5137 | Rocky-8.10-x64-2024-06           | active |&lt;br /&gt;
| 90894672-707b-4103-8683-f06b9d5a6bd0 | Rocky-8.8-x64-2023-05            | active |&lt;br /&gt;
| cef2dcef-5c0d-40f3-9fde-b4d3a26ce8e1 | Rocky-8.9-x64-2023-11            | active |&lt;br /&gt;
| f95b59a2-99fd-4b7f-912c-d7f17640a791 | Rocky-9.3-x64-2023-11            | active |&lt;br /&gt;
| dcf29959-7404-4677-b24d-c25dfcef8da0 | Ubuntu-20.04.6-Focal-x64-2023-11 | active |&lt;br /&gt;
| 09222ea9-a2e2-405e-af14-1d5a59b6eab0 | Ubuntu-22.04.3-Jammy-x64-2023-11 | active |&lt;br /&gt;
| 9884ac0b-a05c-4327-b16a-104fabdf74cf | Ubuntu-22.04.4-Jammy-x64-2024-06 | active |&lt;br /&gt;
| 512331f0-b039-4e90-be2e-d79765a5b21a | Ubuntu-22.04.Jammy-x46-2023-07   | active |&lt;br /&gt;
| d812cc8a-caf9-4237-824c-0660d7654dc1 | Ubuntu-24.04-Noble-x64-2024-06   | active |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A return value looking like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line &amp;gt;&lt;br /&gt;
$ openstack image list &lt;br /&gt;
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5305b993-4c73-4a14-8596-a90bf64f293f)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Would normaly mean that there is a typo in you pasword, you can source the RC file again to correct your password.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=159</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=159"/>
		<updated>2025-04-24T19:51:44Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* The Swift Api */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
=== The Swift Api ===&lt;br /&gt;
The object store maintains its own set of credentials.&lt;br /&gt;
&lt;br /&gt;
You can get access to the [https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html Object Store swift Api]  directly with the same RC file credential that you created for the Openstack client in the perquisite step, and the official [https://pypi.org/project/python-swiftclient/ Openstack Swift client]. Not that while the S3 Api is more feture rich and has better support, some operation can only be done with the Swift Api which is the native openstack Object Store Api. For example, to get the Quota of you account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight ,lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $ source $HOME/id/myproject-openrc.sh # created for the OpenStack client&lt;br /&gt;
 $ swift stat --lh&lt;br /&gt;
                                    Account: AUTH_d5f8b8e8e3e2442f81573b2f0951013b&lt;br /&gt;
                                 Containers: 11&lt;br /&gt;
                                    Objects: 2.0M&lt;br /&gt;
                                      Bytes: 1.1P&lt;br /&gt;
                                Quota Bytes: 1.5P&lt;br /&gt;
   Containers in policy &amp;quot;default-placement&amp;quot;: 11&lt;br /&gt;
      Objects in policy &amp;quot;default-placement&amp;quot;: 2.0M&lt;br /&gt;
        Bytes in policy &amp;quot;default-placement&amp;quot;: 1.1P&lt;br /&gt;
Objects in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
  Bytes in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
                      Meta Quota-Containers: 1000&lt;br /&gt;
                                X-Timestamp: 1745522890.88092&lt;br /&gt;
                X-Account-Bytes-Used-Actual: 1287786000326656&lt;br /&gt;
                                 X-Trans-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                     X-Openstack-Request-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                              Accept-Ranges: bytes&lt;br /&gt;
                               Content-Type: text/plain; charset=utf-8&lt;br /&gt;
                                     Server: Ceph Object Gateway (squid)&lt;br /&gt;
                                 Connection: close&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You see here an account with 11 Containers (Swift&#039;s Containers are S3 Buckets) 2 Million objects, and 1.1 PB used out of its 1.5 PB quota.&lt;br /&gt;
&lt;br /&gt;
=== The S3 Api ===&lt;br /&gt;
&lt;br /&gt;
==What an Object Store is and isn&#039;t==&lt;br /&gt;
(from https://github.com/s3fs-fuse/s3fs-fuse?tab=readme-ov-file#limitations)&lt;br /&gt;
&lt;br /&gt;
Generally, an Object Store cannot offer the same performance or semantics as a local file system.  More specifically:&lt;br /&gt;
&lt;br /&gt;
*random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy&lt;br /&gt;
*metadata operations such as listing directories have poor performance due to network latency&lt;br /&gt;
*non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)&lt;br /&gt;
*no atomic renames of files or directories&lt;br /&gt;
*no coordination between multiple clients mounting the same bucket&lt;br /&gt;
*no hard links&lt;br /&gt;
*inotify detects only local modifications, not external ones by other clients or tools&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=158</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=158"/>
		<updated>2025-04-24T19:45:49Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* The Swift Api */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
=== The Swift Api ===&lt;br /&gt;
The object store maintains its own set of credentials.&lt;br /&gt;
&lt;br /&gt;
You can get access to the [https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html Object Store swift Api]  directly with the RC file credential from the previous step and the official [https://pypi.org/project/python-swiftclient/ Openstack Swift client].  Not that while the S3 Api is more feture rich and has better support, some operation can only be done with the Swift Api which is the native openstack Object Store Api. For example, to get the Quota of you account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $ source $HOME/id/myproject-openrc.sh # difined in the previous step&lt;br /&gt;
 $ swift stat --lh&lt;br /&gt;
                                    Account: AUTH_d5f8b8e8e3e2442f81573b2f0951013b&lt;br /&gt;
                                 Containers: 11&lt;br /&gt;
                                    Objects: 2.0M&lt;br /&gt;
                                      Bytes: 1.1P&lt;br /&gt;
                                Quota Bytes: 1.5P&lt;br /&gt;
   Containers in policy &amp;quot;default-placement&amp;quot;: 11&lt;br /&gt;
      Objects in policy &amp;quot;default-placement&amp;quot;: 2.0M&lt;br /&gt;
        Bytes in policy &amp;quot;default-placement&amp;quot;: 1.1P&lt;br /&gt;
Objects in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
  Bytes in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
                      Meta Quota-Containers: 1000&lt;br /&gt;
                                X-Timestamp: 1745522890.88092&lt;br /&gt;
                X-Account-Bytes-Used-Actual: 1287786000326656&lt;br /&gt;
                                 X-Trans-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                     X-Openstack-Request-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                              Accept-Ranges: bytes&lt;br /&gt;
                               Content-Type: text/plain; charset=utf-8&lt;br /&gt;
                                     Server: Ceph Object Gateway (squid)&lt;br /&gt;
                                 Connection: close&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You see here an account with 11 Containers (Swift&#039;s Containers are S3 Buckets) 2 Million objects, and 1.1 PB used out of its 1.5 PB quota.&lt;br /&gt;
&lt;br /&gt;
=== The S3 Api ===&lt;br /&gt;
&lt;br /&gt;
==What an Object Store is and isn&#039;t==&lt;br /&gt;
(from https://github.com/s3fs-fuse/s3fs-fuse?tab=readme-ov-file#limitations)&lt;br /&gt;
&lt;br /&gt;
Generally, an Object Store cannot offer the same performance or semantics as a local file system.  More specifically:&lt;br /&gt;
&lt;br /&gt;
*random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy&lt;br /&gt;
*metadata operations such as listing directories have poor performance due to network latency&lt;br /&gt;
*non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)&lt;br /&gt;
*no atomic renames of files or directories&lt;br /&gt;
*no coordination between multiple clients mounting the same bucket&lt;br /&gt;
*no hard links&lt;br /&gt;
*inotify detects only local modifications, not external ones by other clients or tools&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=157</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=157"/>
		<updated>2025-04-24T19:44:13Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Getting credentials for the object store */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
=== The Swift Api ===&lt;br /&gt;
The object store maintains its own set of credentials.&lt;br /&gt;
&lt;br /&gt;
You can get access to the [https://docs.openstack.org/swift/latest/api/object_api_v1_overview.html Object Store swift Api]  directly with the RC file credential from the previous step and the official [https://pypi.org/project/python-swiftclient/ Openstack Swift client].  Not that while the S3 Api is more feture rich and has better support, some operation can only be done with the Swift Api which is the native openstack Object Store Api. For example, to get the Quota of you account:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 $swift stat --lh&lt;br /&gt;
                                    Account: AUTH_d5f8b8e8e3e2442f81573b2f0951013b&lt;br /&gt;
                                 Containers: 11&lt;br /&gt;
                                    Objects: 2.0M&lt;br /&gt;
                                      Bytes: 1.1P&lt;br /&gt;
                                Quota Bytes: 1.5P&lt;br /&gt;
   Containers in policy &amp;quot;default-placement&amp;quot;: 11&lt;br /&gt;
      Objects in policy &amp;quot;default-placement&amp;quot;: 2.0M&lt;br /&gt;
        Bytes in policy &amp;quot;default-placement&amp;quot;: 1.1P&lt;br /&gt;
Objects in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
  Bytes in policy &amp;quot;default-placement-bytes&amp;quot;: 0&lt;br /&gt;
                      Meta Quota-Containers: 1000&lt;br /&gt;
                                X-Timestamp: 1745522890.88092&lt;br /&gt;
                X-Account-Bytes-Used-Actual: 1287786000326656&lt;br /&gt;
                                 X-Trans-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                     X-Openstack-Request-Id: tx0000058e846920f427dfe-00680a90ca-83214639-default&lt;br /&gt;
                              Accept-Ranges: bytes&lt;br /&gt;
                               Content-Type: text/plain; charset=utf-8&lt;br /&gt;
                                     Server: Ceph Object Gateway (squid)&lt;br /&gt;
                                 Connection: close&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You see here an account with 11 Containers (Swift&#039;s Containers are S3 Buckets) 2 Million objects, and 1.1 PB used out of its 1.5 PB quota.&lt;br /&gt;
&lt;br /&gt;
=== The S3 Api ===&lt;br /&gt;
&lt;br /&gt;
==What an Object Store is and isn&#039;t==&lt;br /&gt;
(from https://github.com/s3fs-fuse/s3fs-fuse?tab=readme-ov-file#limitations)&lt;br /&gt;
&lt;br /&gt;
Generally, an Object Store cannot offer the same performance or semantics as a local file system.  More specifically:&lt;br /&gt;
&lt;br /&gt;
*random writes or appends to files require rewriting the entire object, optimized with multi-part upload copy&lt;br /&gt;
*metadata operations such as listing directories have poor performance due to network latency&lt;br /&gt;
*non-AWS providers may have eventual consistency so reads can temporarily yield stale data (AWS offers read-after-write consistency since Dec 2020)&lt;br /&gt;
*no atomic renames of files or directories&lt;br /&gt;
*no coordination between multiple clients mounting the same bucket&lt;br /&gt;
*no hard links&lt;br /&gt;
*inotify detects only local modifications, not external ones by other clients or tools&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=149</id>
		<title>Object Store Quick Start</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Object_Store_Quick_Start&amp;diff=149"/>
		<updated>2025-04-24T01:13:11Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This section covers the required steps to get started with SD4H&#039;s object store.&lt;br /&gt;
&lt;br /&gt;
Some operations can be made in the OpenStack GUI, but features are limited.&lt;br /&gt;
CLI tools offer more control and will allow programmatic access to object store resources. &lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* Install and configure your [[OpenStack_Client|OpenStack CLI]]&lt;br /&gt;
&lt;br /&gt;
== Getting credentials for the object store ==&lt;br /&gt;
&lt;br /&gt;
The object store maintains its own set of credentials.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=148</id>
		<title>OpenStack Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=148"/>
		<updated>2025-04-24T01:12:36Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Get the client configuration or RC file from Juno */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Install the openstack client==&lt;br /&gt;
You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo dnf install python-openstackclient-doc.noarch&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo apt-get install python python-dev python-pip&lt;br /&gt;
sudo pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;pip&amp;quot;&amp;gt;&lt;br /&gt;
This will get you the latest version of the client&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OSX&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to have [https://brew.sh/ homebew] installed, then the client can be install using pipx&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
brew install pipx&lt;br /&gt;
pipx install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;windows&amp;quot;&amp;gt;&lt;br /&gt;
Install your favorite linux distribution&lt;br /&gt;
with [https://learn.microsoft.com/en-us/windows/wsl/install-manual Windows Subsystem Linux]&lt;br /&gt;
and follow the precedure from another tab :)&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the client rc file==&lt;br /&gt;
&lt;br /&gt;
Once the client is install you need to set login credentials. You can get these credentials by connecting to the [https://juno.calculquebec.ca/ Juno web page]. Select the right project to store your data and download the RC file:&lt;br /&gt;
&lt;br /&gt;
[[File:Get openstack rc file.gif|caption|frame|none| the RC file from the Juno website]]&lt;br /&gt;
&lt;br /&gt;
Lets say that we have saved the files here &amp;lt;code&amp;gt; $HOME/id/myproject-openrc.sh.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test the connection ==&lt;br /&gt;
&lt;br /&gt;
We will test the connection by listing all the images made available on the platform that can be used out of the box to start VMs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack image list &lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| ID                                   | Name                             | Status |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| 8b1f4da1-fc76-4658-b1c0-6cf804b41471 | AlmaLinux-8.10-x64-2024-05       | active |&lt;br /&gt;
| dfaf1644-a43b-4e90-8183-57a790d86721 | AlmaLinux-8.9-x64-2023-11        | active |&lt;br /&gt;
| dc381bb1-ad39-41d5-90d0-b95b71e845e6 | AlmaLinux-9.3-x64-2023-11        | active |&lt;br /&gt;
| 7a6e0a71-3748-49a9-aff7-33723ee087af | AlmaLinux-9.4-x64-2024-05        | active |&lt;br /&gt;
| 8afc3889-3430-4609-96a1-c318d4be2c61 | Debian-11.8-Bullseye-x64-2023-10 | active |&lt;br /&gt;
| eeee43a6-9301-43f4-b60b-ef80ce70ad5d | Debian-11.9-Bullseye-x64-2024-06 | active |&lt;br /&gt;
| 12588d14-c006-46d9-97d1-1cc1e97024f2 | Debian-12.2-Bookworm-x64-2023-10 | active |&lt;br /&gt;
| 18eeeba7-9fad-4b15-8d9b-678be2b67a88 | Debian-12.5-Bookworm-x64-2024-06 | active |&lt;br /&gt;
| f0580bb8-ff31-4bd4-818a-e5f45897bd1e | Fedora-39-1.5-x64-2023-11        | active |&lt;br /&gt;
| e9b7ef77-4d50-4d14-8094-44aa6d40ba83 | Fedora-40-1.14-x64-2024-06       | active |&lt;br /&gt;
| 4d533cb2-8179-4bc2-8c54-2e0f065b5137 | Rocky-8.10-x64-2024-06           | active |&lt;br /&gt;
| 90894672-707b-4103-8683-f06b9d5a6bd0 | Rocky-8.8-x64-2023-05            | active |&lt;br /&gt;
| cef2dcef-5c0d-40f3-9fde-b4d3a26ce8e1 | Rocky-8.9-x64-2023-11            | active |&lt;br /&gt;
| f95b59a2-99fd-4b7f-912c-d7f17640a791 | Rocky-9.3-x64-2023-11            | active |&lt;br /&gt;
| dcf29959-7404-4677-b24d-c25dfcef8da0 | Ubuntu-20.04.6-Focal-x64-2023-11 | active |&lt;br /&gt;
| 09222ea9-a2e2-405e-af14-1d5a59b6eab0 | Ubuntu-22.04.3-Jammy-x64-2023-11 | active |&lt;br /&gt;
| 9884ac0b-a05c-4327-b16a-104fabdf74cf | Ubuntu-22.04.4-Jammy-x64-2024-06 | active |&lt;br /&gt;
| 512331f0-b039-4e90-be2e-d79765a5b21a | Ubuntu-22.04.Jammy-x46-2023-07   | active |&lt;br /&gt;
| d812cc8a-caf9-4237-824c-0660d7654dc1 | Ubuntu-24.04-Noble-x64-2024-06   | active |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A return value looking like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line &amp;gt;&lt;br /&gt;
$ openstack image list &lt;br /&gt;
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5305b993-4c73-4a14-8596-a90bf64f293f)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Would normaly mean that there is a typo in you pasword, you can source the RC file again to correct your password.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=146</id>
		<title>Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=146"/>
		<updated>2025-04-15T22:51:00Z</updated>

		<summary type="html">&lt;p&gt;Poq: ^&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://rclone.org/ Rclone] is a powerful client that can interact with multiple storage backends, it offers a good support for our Ceph version of the S3 api and has good speed transfer out of the box. &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The first thing to do after [https://rclone.org/downloads/ having installed rclone] is to [[Store_and_Share_data#Configuring_S3_access|get your S3 &amp;lt;code&amp;gt;id key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
You can then create the following file:  &lt;br /&gt;
&lt;br /&gt;
  ~/.config/rclone/rclone.conf&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
[my-project]&lt;br /&gt;
type = s3&lt;br /&gt;
provider = Other&lt;br /&gt;
env_auth = false&lt;br /&gt;
access_key_id = &amp;lt;S3 ID from previous step&amp;gt;&lt;br /&gt;
secret_access_key = &amp;lt;S3 secret from previous step&amp;gt;&lt;br /&gt;
endpoint = https://objets.juno.calculquebec.ca&lt;br /&gt;
acl = private&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then list current bucket, create a bucket and then copy a file into it,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
$rclone mkdir   c3g-prod:test&lt;br /&gt;
$rclone lsd my-project:&lt;br /&gt;
          -1 2024-01-19 14:12:34        -1 backups&lt;br /&gt;
          -1 2024-03-07 14:23:26        -1 my-bucket&lt;br /&gt;
          -1 2025-04-15 18:08:32        -1 test&lt;br /&gt;
$rclone copy my-file.txt my-project:test&lt;br /&gt;
$rclone ls  my-project:test/&lt;br /&gt;
    12408 my-file.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No problems, only solutions ==&lt;br /&gt;
&lt;br /&gt;
1. I cannot upload file larger than 48GB. &lt;br /&gt;
 In some situation rclone is not able to guess the size of the file to upload and use the default value of`--s3-chunk-size 5M` to spit and upload file to the bucket. But since the server has a 10,000 chunk limit, the upload crashes. You can solve that by setting a larger  value:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$rclone copy --s3-chunk-size 50M my-large-file.cram  my-project:test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that you need the ram of your computer to be larger that chunks.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=145</id>
		<title>Rclone</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Rclone&amp;diff=145"/>
		<updated>2025-04-15T21:17:26Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;[https://rclone.org/ Rclone] is a powerful client that can interact with multiple storage backends, it offers a good support for our Ceph version of the S3 api and has good speed transfer out of the box.   == Configuration ==  The first thing to do is to get your S3 &amp;lt;code&amp;gt;id key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://rclone.org/ Rclone] is a powerful client that can interact with multiple storage backends, it offers a good support for our Ceph version of the S3 api and has good speed transfer out of the box. &lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
The first thing to do is to [[Store_and_Share_data#Configuring_S3_access|get your S3 &amp;lt;code&amp;gt;id key&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=144</id>
		<title>Store and Share data</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=144"/>
		<updated>2025-04-04T21:18:42Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
SD4H has a large Object Store. Objects are accessible through a web API via the Rados Gateway (radosgw) service. Both the S3 and swift API standards are supported by the radosgw.&lt;br /&gt;
&lt;br /&gt;
In an Object Store, an object is the equivalent of a file on a posix file system. The object store gives users a lot of flexibility, but the steps to do simple tasks like sharing and transferring data involve somewhat of a learning cure. We propose a procedure here so this curve is as gentle as possible. Once done, the procedure will be both more secure and more flexible than sharing data on a share HPC platform or on some VM owned by your group.   &lt;br /&gt;
&lt;br /&gt;
= Configuring S3 access =&lt;br /&gt;
&lt;br /&gt;
# You first need to have your [[OpenStack Client]] installed and configured. &lt;br /&gt;
# Then, with the client you generate an e2c/S3 id and secret&lt;br /&gt;
&lt;br /&gt;
With the client is installed and the RC files downloaded in step 1 you can create the S3 ID and secret. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack ec2 credentials create&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Field      | Value                                                                                                                                                                       |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| access     | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                                                                                            |&lt;br /&gt;
| links      | {&#039;self&#039;: &#039;https://juno.calculquebec.ca:5000/v3/users/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/credentials/OS-EC2/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&#039;} |&lt;br /&gt;
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| secret     | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| trust_id   | None                                                                                                                                                                        |&lt;br /&gt;
| user_id    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                            |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important values here are access&amp;lt;code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; which are the S3 [aws_]access_key_id and [aws_]secret_access_key respextively. AWS stands for Amazon Web Services, they are the creator of the S3 API.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Manage you S3 buckets with Globus=&lt;br /&gt;
&lt;br /&gt;
See the [[Globus]] documentation&lt;br /&gt;
&lt;br /&gt;
=Use a S3 client to manage your bucket=&lt;br /&gt;
There are a few clients that can be used to access Ceph S3 api. We recomend [[rclone]], it is fast and and flexible.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=143</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=143"/>
		<updated>2025-02-25T17:47:33Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Share a Network with another OpenStack project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers belonging to different projects, also called tenants, can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You need to attach the router that has access to the Public-Network to the network to give it access to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the [[OpenStack Client]], start by following the client&#039;s [[OpenStack_Client#Install_the_openstack_client|installation and configuration procedure]]. You also need the project ID of the tenant that will get access right to your network. The project ID can be found in the [https://juno.calculquebec.ca/identity/ identity tab] of the Juno platform web site by clicking on the Projects menu. In this example, all code is run for the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; projet, we will share the &amp;lt;code&amp;gt; share-net&amp;lt;/code&amp;gt; network with the &#039;&#039;target project&#039;&#039; &amp;lt;code&amp;gt; c3g-dev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt; id = b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s start by looking at the networks of the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network list &lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Name            | Subnets                              |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| 00b327b4-4fb2-4ed8-a7f2-6ff49e3b7e7c | CephFS-Network  | ebe6ed39-2304-457c-a758-c251bae591af |&lt;br /&gt;
| 052ea294-5ad8-46a9-a988-8a41688bd155 | po-test_network | 5eb14686-b56a-4628-8218-a3da340fdfae |&lt;br /&gt;
| 391bf6f5-ba1d-4262-8b45-dd87d130f3cd | share-net       | 9ea97afa-9dc9-4ed1-81d0-ab76d128fcef |&lt;br /&gt;
| 68512dd8-ecd5-44fc-8aa4-9d129ad2026d | Public-Network  | 5f6c7900-601a-4c92-8bd6-731688164e62 |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We see the three default networks and &amp;lt;code&amp;gt;share-net&amp;lt;/code&amp;gt;, the network that we created in the previous step. We will share it by creating a [https://docs.openstack.org/neutron/latest/admin/config-rbac.html Role-Based Access Control (RBAC)] that targets the project  &amp;lt;code&amp;gt;b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The target project now sees &amp;lt;share-net&amp;gt; and  can attach VMs to it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how to list your Network RBACs and how to delete them. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network rbac list &lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Object Type | Object ID                            |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| e7ffbe71-9b49-4036-8e0a-24d73c199fab | network     | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
$openstack network rbac delete e7ffbe71-9b49-4036-8e0a-24d73c199fab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=142</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=142"/>
		<updated>2025-02-25T17:39:28Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You need to attach the router that has access to the Public-Network to the network to give it access to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the [[OpenStack Client]], start by following the client&#039;s [[OpenStack_Client#Install_the_openstack_client|installation and configuration procedure]]. You also need the project ID of the tenant that will get access right to your network. The project ID can be found in the [https://juno.calculquebec.ca/identity/ identity tab] of the Juno platform web site by clicking on the Projects menu. In this example, all code is run for the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; projet, we will share the &amp;lt;code&amp;gt; share-net&amp;lt;/code&amp;gt; network with the &#039;&#039;target project&#039;&#039; &amp;lt;code&amp;gt; c3g-dev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt; id = b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s start by looking at the networks of the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network list &lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Name            | Subnets                              |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| 00b327b4-4fb2-4ed8-a7f2-6ff49e3b7e7c | CephFS-Network  | ebe6ed39-2304-457c-a758-c251bae591af |&lt;br /&gt;
| 052ea294-5ad8-46a9-a988-8a41688bd155 | po-test_network | 5eb14686-b56a-4628-8218-a3da340fdfae |&lt;br /&gt;
| 391bf6f5-ba1d-4262-8b45-dd87d130f3cd | share-net       | 9ea97afa-9dc9-4ed1-81d0-ab76d128fcef |&lt;br /&gt;
| 68512dd8-ecd5-44fc-8aa4-9d129ad2026d | Public-Network  | 5f6c7900-601a-4c92-8bd6-731688164e62 |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We see the three default networks and &amp;lt;code&amp;gt;share-net&amp;lt;/code&amp;gt;, the network that we created in the previous step. We will share it by creating a [https://docs.openstack.org/neutron/latest/admin/config-rbac.html Role-Based Access Control (RBAC)] that targets the project  &amp;lt;code&amp;gt;b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The target project now sees &amp;lt;share-net&amp;gt; and  can attach VMs to it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how to list your Network RBACs and how to delete them. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network rbac list &lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Object Type | Object ID                            |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| e7ffbe71-9b49-4036-8e0a-24d73c199fab | network     | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
$openstack network rbac delete e7ffbe71-9b49-4036-8e0a-24d73c199fab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=141</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=141"/>
		<updated>2025-02-25T17:36:47Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Share the network with another tenant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You need to attach the router that has access to the Public-Network to the network to give it acess to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the [[OpenStack Client]], start by following the client&#039;s [[OpenStack_Client#Install_the_openstack_client|installation and configuration procedure]]. You also need the project ID of the tenant that will get the acess right to you network. The project ID can be found in the [https://juno.calculquebec.ca/identity/ identity tab] of the Juno platform web site by clicking on the Projects menu. In this example, all code are ran form the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; projet, we will share the &amp;lt;code&amp;gt; share-net&amp;lt;/code&amp;gt; network with the &#039;&#039;target project&#039;&#039; &amp;lt;code&amp;gt; c3g-dev&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt; id = b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lets start by looking at the networks of the &amp;lt;code&amp;gt;po-test&amp;lt;/code&amp;gt; project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network list &lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Name            | Subnets                              |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
| 00b327b4-4fb2-4ed8-a7f2-6ff49e3b7e7c | CephFS-Network  | ebe6ed39-2304-457c-a758-c251bae591af |&lt;br /&gt;
| 052ea294-5ad8-46a9-a988-8a41688bd155 | po-test_network | 5eb14686-b56a-4628-8218-a3da340fdfae |&lt;br /&gt;
| 391bf6f5-ba1d-4262-8b45-dd87d130f3cd | share-net       | 9ea97afa-9dc9-4ed1-81d0-ab76d128fcef |&lt;br /&gt;
| 68512dd8-ecd5-44fc-8aa4-9d129ad2026d | Public-Network  | 5f6c7900-601a-4c92-8bd6-731688164e62 |&lt;br /&gt;
+--------------------------------------+-----------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We see the three default networks and &amp;lt;code&amp;gt;share-net&amp;lt;/code&amp;gt;, the network that we&#039;ve created in the previous step. We will share it by creatring a [https://docs.openstack.org/neutron/latest/admin/config-rbac.html Role-Based Access Control (RBAC)] that targets the project  &amp;lt;code&amp;gt;b84ceb857d8f40feb7eed5e972ec0e56&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The target project now sees &amp;lt;share-net&amp;gt; and  can attach VMs to it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$openstack network rbac create --target-project \&lt;br /&gt;
b84ceb857d8f40feb7eed5e972ec0e56  --action access_as_shared \&lt;br /&gt;
--type network 391bf6f5-ba1d-4262-8b45-dd87d130f3cd&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| Field             | Value                                |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
| action            | access_as_shared                     |&lt;br /&gt;
| id                | e7ffbe71-9b49-4036-8e0a-24d73c199fab |&lt;br /&gt;
| object_id         | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
| object_type       | network                              |&lt;br /&gt;
| project_id        | ad99d6c3087041bcb6c0fe5f2da54df9     |&lt;br /&gt;
| target_project_id | b84ceb857d8f40feb7eed5e972ec0e56     |&lt;br /&gt;
+-------------------+--------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is how to lis your Network RBAC and how to delete it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$openstack network rbac list &lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| ID                                   | Object Type | Object ID                            |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
| e7ffbe71-9b49-4036-8e0a-24d73c199fab | network     | 391bf6f5-ba1d-4262-8b45-dd87d130f3cd |&lt;br /&gt;
+--------------------------------------+-------------+--------------------------------------+&lt;br /&gt;
$openstack network rbac delete e7ffbe71-9b49-4036-8e0a-24d73c199fab&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=140</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=140"/>
		<updated>2025-02-25T15:22:37Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Create a new network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You need to attach the router that has access to the Public-Network to the network to give it acess to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the [[OpenStack Client]], start by following its [[OpenStack_Client#Install_the_openstack_client|installation and configuration procedure]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=139</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=139"/>
		<updated>2025-02-24T20:43:11Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Share the network with another tenant */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You would need to attach the router that has access to the Public-Network to the network to make that happen. &lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the [[OpenStack Client]], start by following its [[OpenStack_Client#Install_the_openstack_client|installation and configuration procedure]]&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=138</id>
		<title>Store and Share data</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Store_and_Share_data&amp;diff=138"/>
		<updated>2025-02-24T19:29:15Z</updated>

		<summary type="html">&lt;p&gt;Poq: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Intro=&lt;br /&gt;
SD4H has a large Object Store. Objects are accessible through a web API via the Rados Gateway (radosgw) service. Both the S3 and swift API standards are supported by the radosgw.&lt;br /&gt;
&lt;br /&gt;
In an Object Store, an object is the equivalent of a file on a posix file system. The object store gives users a lot of flexibility, but the steps to do simple tasks like sharing and transferring data involve somewhat of a learning cure. We propose a procedure here so this curve is as gentle as possible. Once done, the procedure will be both more secure and more flexible than sharing data on a share HPC platform or on some VM owned by your group.   &lt;br /&gt;
&lt;br /&gt;
= Configuring S3 access =&lt;br /&gt;
&lt;br /&gt;
You fist need to have your [[OpenStack Client]] installed and configured.&lt;br /&gt;
&lt;br /&gt;
==Create the S3 (ec2) Credentials==&lt;br /&gt;
&lt;br /&gt;
Now that your client is installed and the RC files for you project is downloaded, you can create the S3 ID and secret. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack ec2 credentials create&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| Field      | Value                                                                                                                                                                       |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
| access     | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                                                                                            |&lt;br /&gt;
| links      | {&#039;self&#039;: &#039;https://juno.calculquebec.ca:5000/v3/users/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/credentials/OS-EC2/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&#039;} |&lt;br /&gt;
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| secret     | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                                                            |&lt;br /&gt;
| trust_id   | None                                                                                                                                                                        |&lt;br /&gt;
| user_id    | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx                                                                                                            |&lt;br /&gt;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The important values here are access&amp;lt;code&amp;gt; and &amp;lt;code&amp;gt;secret&amp;lt;/code&amp;gt; which are the S3 [aws_]access_key_id and [aws_]secret_access_key respextively. AWS stands for Amazon Web Services, they are the creator of the S3 API.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Manage you S3 buckets with Globus==&lt;br /&gt;
&lt;br /&gt;
See the [[Globus]] documentation&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=137</id>
		<title>OpenStack Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=137"/>
		<updated>2025-02-24T19:28:38Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* Test the connection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Install the openstack client==&lt;br /&gt;
You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo dnf install python-openstackclient-doc.noarch&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo apt-get install python python-dev python-pip&lt;br /&gt;
sudo pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;pip&amp;quot;&amp;gt;&lt;br /&gt;
This will get you the latest version of the client&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OSX&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to have [https://brew.sh/ homebew] installed, then the client can be install using pipx&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
brew install pipx&lt;br /&gt;
pipx install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;windows&amp;quot;&amp;gt;&lt;br /&gt;
Install your favorite linux distribution&lt;br /&gt;
with [https://learn.microsoft.com/en-us/windows/wsl/install-manual Windows Subsystem Linux]&lt;br /&gt;
and follow the precedure from another tab :)&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the client configuration or RC file from Juno==&lt;br /&gt;
&lt;br /&gt;
Once the client is install you need to set login credentials. You can get these credentials by connecting to the [https://juno.calculquebec.ca/ Juno web page]. Select the right project to store your data and download the RC file:&lt;br /&gt;
&lt;br /&gt;
[[File:Get openstack rc file.gif|caption|frame|none| the RC file from the Juno website]]&lt;br /&gt;
&lt;br /&gt;
Lets say that we have saved the files here &amp;lt;code&amp;gt; $HOME/id/myproject-openrc.sh.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test the connection ==&lt;br /&gt;
&lt;br /&gt;
We will test the connection by listing all the images made available on the platform that can be used out of the box to start VMs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack image list &lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| ID                                   | Name                             | Status |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| 8b1f4da1-fc76-4658-b1c0-6cf804b41471 | AlmaLinux-8.10-x64-2024-05       | active |&lt;br /&gt;
| dfaf1644-a43b-4e90-8183-57a790d86721 | AlmaLinux-8.9-x64-2023-11        | active |&lt;br /&gt;
| dc381bb1-ad39-41d5-90d0-b95b71e845e6 | AlmaLinux-9.3-x64-2023-11        | active |&lt;br /&gt;
| 7a6e0a71-3748-49a9-aff7-33723ee087af | AlmaLinux-9.4-x64-2024-05        | active |&lt;br /&gt;
| 8afc3889-3430-4609-96a1-c318d4be2c61 | Debian-11.8-Bullseye-x64-2023-10 | active |&lt;br /&gt;
| eeee43a6-9301-43f4-b60b-ef80ce70ad5d | Debian-11.9-Bullseye-x64-2024-06 | active |&lt;br /&gt;
| 12588d14-c006-46d9-97d1-1cc1e97024f2 | Debian-12.2-Bookworm-x64-2023-10 | active |&lt;br /&gt;
| 18eeeba7-9fad-4b15-8d9b-678be2b67a88 | Debian-12.5-Bookworm-x64-2024-06 | active |&lt;br /&gt;
| f0580bb8-ff31-4bd4-818a-e5f45897bd1e | Fedora-39-1.5-x64-2023-11        | active |&lt;br /&gt;
| e9b7ef77-4d50-4d14-8094-44aa6d40ba83 | Fedora-40-1.14-x64-2024-06       | active |&lt;br /&gt;
| 4d533cb2-8179-4bc2-8c54-2e0f065b5137 | Rocky-8.10-x64-2024-06           | active |&lt;br /&gt;
| 90894672-707b-4103-8683-f06b9d5a6bd0 | Rocky-8.8-x64-2023-05            | active |&lt;br /&gt;
| cef2dcef-5c0d-40f3-9fde-b4d3a26ce8e1 | Rocky-8.9-x64-2023-11            | active |&lt;br /&gt;
| f95b59a2-99fd-4b7f-912c-d7f17640a791 | Rocky-9.3-x64-2023-11            | active |&lt;br /&gt;
| dcf29959-7404-4677-b24d-c25dfcef8da0 | Ubuntu-20.04.6-Focal-x64-2023-11 | active |&lt;br /&gt;
| 09222ea9-a2e2-405e-af14-1d5a59b6eab0 | Ubuntu-22.04.3-Jammy-x64-2023-11 | active |&lt;br /&gt;
| 9884ac0b-a05c-4327-b16a-104fabdf74cf | Ubuntu-22.04.4-Jammy-x64-2024-06 | active |&lt;br /&gt;
| 512331f0-b039-4e90-be2e-d79765a5b21a | Ubuntu-22.04.Jammy-x46-2023-07   | active |&lt;br /&gt;
| d812cc8a-caf9-4237-824c-0660d7654dc1 | Ubuntu-24.04-Noble-x64-2024-06   | active |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A return value looking like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line &amp;gt;&lt;br /&gt;
$ openstack image list &lt;br /&gt;
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5305b993-4c73-4a14-8596-a90bf64f293f)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Would normaly mean that there is a typo in you pasword, you can source the RC file again to correct your password.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=136</id>
		<title>OpenStack Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=OpenStack_Client&amp;diff=136"/>
		<updated>2025-02-24T19:27:47Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;==Install the openstack client== You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.  &amp;lt;tabs&amp;gt; &amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt; You can install the client form you package manager  {{Code   |lang=&amp;quot;bash&amp;quot;   |contents= sudo dnf install python-openstackclient-doc.noarch # test the installation openstack --version }} &amp;lt;/tab&amp;gt; &amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt; You can install the client form you package man...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Install the openstack client==&lt;br /&gt;
You will need to install and configure the [https://pypi.org/project/python-openstackclient/ openstack client] on your machine.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabs&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Fedora/RedHat Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo dnf install python-openstackclient-doc.noarch&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&amp;lt;tab name=&amp;quot;Debian/Ubuntu Linux&amp;quot;&amp;gt;&lt;br /&gt;
You can install the client form you package manager &lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
sudo apt-get install python python-dev python-pip&lt;br /&gt;
sudo pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;pip&amp;quot;&amp;gt;&lt;br /&gt;
This will get you the latest version of the client&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
pip install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;OSX&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You need to have [https://brew.sh/ homebew] installed, then the client can be install using pipx&lt;br /&gt;
{{Code&lt;br /&gt;
  |lang=&amp;quot;bash&amp;quot;&lt;br /&gt;
  |contents=&lt;br /&gt;
brew install pipx&lt;br /&gt;
pipx install python-openstackclient&lt;br /&gt;
# test the installation&lt;br /&gt;
openstack --version&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tab name=&amp;quot;windows&amp;quot;&amp;gt;&lt;br /&gt;
Install your favorite linux distribution&lt;br /&gt;
with [https://learn.microsoft.com/en-us/windows/wsl/install-manual Windows Subsystem Linux]&lt;br /&gt;
and follow the precedure from another tab :)&lt;br /&gt;
&amp;lt;/tab&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/tabs&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Get the client configuration or RC file from Juno==&lt;br /&gt;
&lt;br /&gt;
Once the client is install you need to set login credentials. You can get these credentials by connecting to the [https://juno.calculquebec.ca/ Juno web page]. Select the right project to store your data and download the RC file:&lt;br /&gt;
&lt;br /&gt;
[[File:Get openstack rc file.gif|caption|frame|none| the RC file from the Juno website]]&lt;br /&gt;
&lt;br /&gt;
Lets say that we have saved the files here &amp;lt;code&amp;gt; $HOME/id/myproject-openrc.sh.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test the connection ==&lt;br /&gt;
&lt;br /&gt;
We will test the connection by listing all the images made available on the platform that can be used out of the box to start VMs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
$ source  $HOME/id/myproject-openrc.sh&lt;br /&gt;
Please enter your OpenStack Password for project po-test as user poq: &lt;br /&gt;
# Use the same password that you used to connect to the [https://juno.calculquebec.ca/ Juno web page].&lt;br /&gt;
# you can now create the credentials&lt;br /&gt;
$ openstack image list &lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| ID                                   | Name                             | Status |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
| 8b1f4da1-fc76-4658-b1c0-6cf804b41471 | AlmaLinux-8.10-x64-2024-05       | active |&lt;br /&gt;
| dfaf1644-a43b-4e90-8183-57a790d86721 | AlmaLinux-8.9-x64-2023-11        | active |&lt;br /&gt;
| dc381bb1-ad39-41d5-90d0-b95b71e845e6 | AlmaLinux-9.3-x64-2023-11        | active |&lt;br /&gt;
| 7a6e0a71-3748-49a9-aff7-33723ee087af | AlmaLinux-9.4-x64-2024-05        | active |&lt;br /&gt;
| 8afc3889-3430-4609-96a1-c318d4be2c61 | Debian-11.8-Bullseye-x64-2023-10 | active |&lt;br /&gt;
| eeee43a6-9301-43f4-b60b-ef80ce70ad5d | Debian-11.9-Bullseye-x64-2024-06 | active |&lt;br /&gt;
| 12588d14-c006-46d9-97d1-1cc1e97024f2 | Debian-12.2-Bookworm-x64-2023-10 | active |&lt;br /&gt;
| 18eeeba7-9fad-4b15-8d9b-678be2b67a88 | Debian-12.5-Bookworm-x64-2024-06 | active |&lt;br /&gt;
| f0580bb8-ff31-4bd4-818a-e5f45897bd1e | Fedora-39-1.5-x64-2023-11        | active |&lt;br /&gt;
| e9b7ef77-4d50-4d14-8094-44aa6d40ba83 | Fedora-40-1.14-x64-2024-06       | active |&lt;br /&gt;
| 4d533cb2-8179-4bc2-8c54-2e0f065b5137 | Rocky-8.10-x64-2024-06           | active |&lt;br /&gt;
| 90894672-707b-4103-8683-f06b9d5a6bd0 | Rocky-8.8-x64-2023-05            | active |&lt;br /&gt;
| cef2dcef-5c0d-40f3-9fde-b4d3a26ce8e1 | Rocky-8.9-x64-2023-11            | active |&lt;br /&gt;
| f95b59a2-99fd-4b7f-912c-d7f17640a791 | Rocky-9.3-x64-2023-11            | active |&lt;br /&gt;
| dcf29959-7404-4677-b24d-c25dfcef8da0 | Ubuntu-20.04.6-Focal-x64-2023-11 | active |&lt;br /&gt;
| 09222ea9-a2e2-405e-af14-1d5a59b6eab0 | Ubuntu-22.04.3-Jammy-x64-2023-11 | active |&lt;br /&gt;
| 9884ac0b-a05c-4327-b16a-104fabdf74cf | Ubuntu-22.04.4-Jammy-x64-2024-06 | active |&lt;br /&gt;
| 512331f0-b039-4e90-be2e-d79765a5b21a | Ubuntu-22.04.Jammy-x46-2023-07   | active |&lt;br /&gt;
| d812cc8a-caf9-4237-824c-0660d7654dc1 | Ubuntu-24.04-Noble-x64-2024-06   | active |&lt;br /&gt;
+--------------------------------------+----------------------------------+--------+&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A return value looking like &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line &amp;gt;&lt;br /&gt;
$ openstack image list &lt;br /&gt;
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5305b993-4c73-4a14-8596-a90bf64f293f)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Would normaly mean that there is a typo in you pasword, you can source the RC file again to correct the error.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=135</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=135"/>
		<updated>2025-02-24T19:14:11Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* How to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || All SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 59PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; All SSD || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
* Install the [[OpenStack Client]]&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=134</id>
		<title>Networking</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Networking&amp;diff=134"/>
		<updated>2025-02-24T19:07:55Z</updated>

		<summary type="html">&lt;p&gt;Poq: Created page with &amp;quot;== Basics ==  You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &amp;#039;&amp;#039;local area network&amp;#039;&amp;#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basics ==&lt;br /&gt;
&lt;br /&gt;
You can see the current network of your project from the [https://juno.calculquebec.ca/project/network_topology/ Juno webpage]. There you see the three basic networks available to all projects: &amp;lt;code&amp;gt; &amp;lt;myproject&amp;gt;_network &amp;lt;/code&amp;gt;, where you VM lands by default, it is the &#039;&#039;local area network&#039;&#039; (LAN) of your project; the &amp;lt;code&amp;gt;Public-Network&amp;lt;/code&amp;gt; that is the internet, you see that a router named &amp;lt;code&amp;gt;&amp;lt;myproject&amp;gt;_router&amp;lt;/code&amp;gt; is connecting your LAN to the internet;  &amp;lt;code&amp;gt; CephFS-Network &amp;lt;/code&amp;gt; is the CephFS file system network; you need to connect your VM to that network to [https://docs.alliancecan.ca/wiki/CephFS access CephFS volumes]. &lt;br /&gt;
&lt;br /&gt;
== Share a Network with another OpenStack project == &lt;br /&gt;
&lt;br /&gt;
There could be situations where it is needed to share a network with the project of a collaborator on SD4H so communication between two servers can be done without having to resort to the internet.&lt;br /&gt;
&lt;br /&gt;
=== Create a new network ===&lt;br /&gt;
You can create a network from the Create network button from both the &amp;lt;code&amp;gt; Network Topology&amp;lt;/code&amp;gt; tab. Pick the name of the network with &amp;lt;code&amp;gt;Enable Admin State &amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Create Subnet box checked&amp;lt;/code&amp;gt;, click next, pick a name for the subnet, in &amp;lt;code&amp;gt;Network Address Source&amp;lt;/code&amp;gt; select &amp;lt;code&amp;gt;Allocate Network Address from a pool &amp;lt;/code&amp;gt;, select the 172.16.0.0/12 pool and use the needed &amp;lt;code&amp;gt; Network Mask &amp;lt;/code&amp;gt;, 24 will give you 256 addresses, click Next, make sure Enable DHCP is checked and click Create. You now have a new network. You can attach an existing VMs to that new network in the &amp;lt;code&amp;gt;Instance&amp;lt;/code&amp;gt; tab by selecting &amp;lt;code&amp;gt; Attach Interface&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;Actions&amp;lt;/code&amp;gt; drop down menu of the instance.  &lt;br /&gt;
&lt;br /&gt;
Not that VMs that will be solely attached to that network will have no internet access. You would need to attach the router that has access to the Public-Network to the network to make that happen. &lt;br /&gt;
&lt;br /&gt;
=== Share the network with another tenant ===&lt;br /&gt;
&lt;br /&gt;
This step can only be made with the OpenStack client.&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
	<entry>
		<id>https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=133</id>
		<title>Technical Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.c3g-app.sd4h.ca/index.php?title=Technical_Documentation&amp;diff=133"/>
		<updated>2025-02-24T17:00:38Z</updated>

		<summary type="html">&lt;p&gt;Poq: /* How to */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;Welcome to the technical documentation wiki of the Secure Data for Health (SD4H) project.&amp;lt;/strong&amp;gt;&lt;br /&gt;
This is the primary source for users with questions on equipment and services.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Computing&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Compute VM   ||  Up to 64 vcores and 480 GB of RAM||   5184 vcores&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 64 vcores and 240 GB of RAM || 6528 vcores  &lt;br /&gt;
|-&lt;br /&gt;
| High Availability VM ||  Up to 64 cores and 480 GB &amp;lt;br&amp;gt; Connected to UPS and Diesel Generators || 3072 vcores&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | GPU   ||  Up to 2 A100-40 per VM || 20 GPU&lt;br /&gt;
|-&lt;br /&gt;
    || Up to 2-A100-80 per VM || 8 GPU&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|+ Storage&lt;br /&gt;
|-&lt;br /&gt;
! Hardware   !! Description !!  Availability&lt;br /&gt;
|-&lt;br /&gt;
| Block Storage || All SSD   || 740 TB&lt;br /&gt;
|-&lt;br /&gt;
| Object Storage ||  S3 and Swift API || 59PB&lt;br /&gt;
|-&lt;br /&gt;
| Ceph FS || High performance multi read/write &amp;lt;br&amp;gt; All SSD || 1.2 PB &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==How to==&lt;br /&gt;
* [[Store and Share data]] on the platform&lt;br /&gt;
* [[Networking]] between two projects.&lt;br /&gt;
&lt;br /&gt;
==Services==&lt;br /&gt;
&lt;br /&gt;
* [[Globus]] Data transfer and Sharing&lt;br /&gt;
* [[Elastic HPC]]: High perforamce Computing in the Cloud&lt;br /&gt;
&lt;br /&gt;
==Object Store==&lt;br /&gt;
&lt;br /&gt;
* [[Object Store Quick Start]]&lt;br /&gt;
* [[Backing up Object Store]] buckets to tape&lt;br /&gt;
* Using [[rclone]] on our system&lt;br /&gt;
&lt;br /&gt;
==Openstack==&lt;/div&gt;</summary>
		<author><name>Poq</name></author>
	</entry>
</feed>