# Best practice for OOD configuration change out of production

**URL:** <https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123>\
**Category:** Get Help\
**Tags:** question\
**Created:** [November 28, 2023, 6:34pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123 "2023-11-28T18:34:15Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![jin456](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/jin456/32/3399_2.png) [@jin456](https://discourse.openondemand.org/u/jin456)\
**Post date:** [November 28, 2023, 6:34pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/1 "2023-11-28T18:34:15Z")

</div>

We are running OOD through all our major HPC clusters and we are thinking about adding more features as well some configuration changes for the OOD instances. I would like to learn if there are any best practices for this kind of configuration that would not impact current OOD in production?

Thank you.

---

<div class="post-metadata">

**Author:** ![travert](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/travert/32/3074_2.png) [@travert](https://discourse.openondemand.org/u/travert)\
**Post date:** [November 28, 2023, 8:14pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/2 "2023-11-28T20:14:08Z")

</div>

Hello and welcome!

Could you provide some more details of what you want to do? I’d say it’s unlikely to affect anything negatively if they are supported changes. But are you changing the UI or something more significant?

Have you already read through the customizations page:  
[https://osc.github.io/ood-documentation/latest/customizations.html](https://osc.github.io/ood-documentation/latest/customizations.html)

Do you have a test or dev setup to test on first?

I do want to double check here, are you asking about making changes on your production system and then restarting the OOD service and whether this will affect users? Because it certainly will if you do.

---

<div class="post-metadata">

**Author:** ![jin456](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/jin456/32/3399_2.png) [@jin456](https://discourse.openondemand.org/u/jin456)\
**Post date:** [November 28, 2023, 8:31pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/3 "2023-11-28T20:31:48Z")

</div>

Hi Travis. Thank you for the reply.

The customization page helps a lot for understanding the different configuration options. To be more specific, we are trying to creating more features into our current OOD (e.g. more informative dashboard). So hopefully we could find a way to test the changes before moving them into production. We do have developer mode but that is for specific applications rather than OOD itself.

So if I understand correctly, you are suggesting a dev mode for the OOD instance, right?

---

<div class="post-metadata">

**Author:** ![travert](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/travert/32/3074_2.png) [@travert](https://discourse.openondemand.org/u/travert)\
**Post date:** [November 28, 2023, 8:45pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/4 "2023-11-28T20:45:33Z")

</div>

What does you current system setup look like? As in, do you have a separate system running ood to do these types of changes on to see the effects _before_ pushing the changes to you production system?

If not, you could set one up on a VM and such.

Or there is another way you could do UI type dev work on OOD _within_ OOD. We do this at OSC when we develop ourselves.

The trick is to setup the Dashboard as an app in your development sandbox, and to then launch it from there. I then use VSCode on the cluster to load that code in, and actually make changes and see them in my dev dashboard rather than the sys dashboard.

Do you have the dev environment enabled already?  
[https://osc.github.io/ood-documentation/latest/how-tos/app-development/enabling-development-mode.html](https://osc.github.io/ood-documentation/latest/how-tos/app-development/enabling-development-mode.html)

The trick to then work on the dashboard app is to make a symlink in your `dev` and the ondemand dashboard in `misc` from your home directory. So these locations: `~/ondemand/misc/ondemand/apps/dashboard/` and `ondemand/dev/dashboard`. OOD will then recognize the dashboard as an app which then you can launch from the developer sandbox apps.

Also, if you do this make sure to go into that symlink directory to build things correctly if you do anything with assets or parts of rails that need reloaded. This can be done with the `bin/setup` binary in the dashboard app. I know this is a lot, but if you do the dev in ondemand setup and have questions feel free to post and I’ll try to clear up anything as best I can.

---

<div class="post-metadata">

**Author:** ![jin456](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/jin456/32/3399_2.png) [@jin456](https://discourse.openondemand.org/u/jin456)\
**Post date:** [November 29, 2023, 4:54pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/5 "2023-11-29T16:54:30Z")

</div>

We only have a OOD in production for each cluster so it’s might not be possible to have a separate system running a test OOD (but this should be a great thing to have).

Learning those tricks, especially using Dashboard as an sandbox app is fresh new to me and it might be useful for now. We have the dev environment enabled so that might be a good method to try first. Let me play with this dashboard app and get back to you if I have further questions. Really appreciate the suggestions!

---

<div class="post-metadata">

**Author:** ![travert](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/travert/32/3074_2.png) [@travert](https://discourse.openondemand.org/u/travert)\
**Post date:** [November 29, 2023, 4:59pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/6 "2023-11-29T16:59:30Z")

</div>

Sure! I know that post on setting up the dashboard to do dev work on may be a bit jarbled, so please ask if something isn’t making sense and I’m very happy to clear it up.

---

<div class="post-metadata">

**Author:** ![jin456](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/jin456/32/3399_2.png) [@jin456](https://discourse.openondemand.org/u/jin456)\
**Post date:** [November 30, 2023, 9:46pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/7 "2023-11-30T21:46:52Z")

</div>

Hi Travis. I have played with dashboard under developer mode and have a question about how to configure it.

Usually OOD configurations would be made in /etc/ood/config/ and its subfolders. But ~/ondemand/dev/dashboard/ has quite different structures and similar configurations did not work for ./dashboard/.

Could you show me how to do the configurations for this own dashboard app (e.g. Custom layouts in the dashboard as shown in [Customizations — Open OnDemand 3.0.3 documentation](https://osc.github.io/ood-documentation/latest/customizations.html#dashboard-custom-layout))? Thanks!

---

<div class="post-metadata">

**Author:** ![travert](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/travert/32/3074_2.png) [@travert](https://discourse.openondemand.org/u/travert)\
**Post date:** [November 30, 2023, 10:05pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/8 "2023-11-30T22:05:30Z")

</div>

Yep! Ok, so the trick here is to again fake out OOD.

We’ve got this `dashboard` app now in our sandbox, how do we get the configs to show up there though?

We can do this by going into the root of that app, so `cd ~/ondemand/dev/dashboard` and from that location create a `.env.local` file. Now we can start to set environment variables in our dev dashboard! And one clutch environment variable here is the `OOD_CONFIG_D_DIRECTORY`. This is the key to unlock the magic. Because now we can have our ood dev dashboard set it’s _own_ configuration options and see them take effect.

So, in my own dashboard where i do a majority of dev work on the cluster, mine looks like this:

```auto
# .env.local file
# Set a different color for dev dashboard to prevent confusion with sys dashboard
OOD_BRAND_BG_COLOR='grey'
# Set a different config directory for the dev dashboard to look for configs
OOD_CONFIG_D_DIRECTORY="/users/PZS0714/travert/ondemand/dev/dashboard/config/ondemand.d/"
# you could include any number of other ENV here, like if we wanted 
# to change where message of the days come from so our dev dashboard can display them
MOTD_PATH='/users/PZS0714/travert/ondemand/dev/dashboard/config/ondemand.d/motd'

```

I then can land all kinds of configs in that new directory for ondemand to pickup and use. Really, aside from interactions with OOD\_CORE you could do _all_ dev work in this setup. That’s the norm at OSC for how we do things (I think).

I’m starting to think this should have a page in our docs because…how would anyone piece this together now that I think on it and read this.

---

<div class="post-metadata">

**Author:** ![travert](https://sea1.discourse-cdn.com/flex015/user_avatar/discourse.openondemand.org/travert/32/3074_2.png) [@travert](https://discourse.openondemand.org/u/travert)\
**Post date:** [November 30, 2023, 10:44pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/9 "2023-11-30T22:44:06Z")

</div>

I’ve created an issue against our docs to add a section for this so centers and users can be aware how to do this.

> <https://github.com/OSC/ood-documentation/issues/896>
>
> A discourse came in from a user wanting to do development work on ood and the da…shboard at their center. We at OSC have a pretty standard workflow around this that is not documented and would therefore hinder dashboard development as the community is not aware of the setup possibly.
> 
> The discourse is here:
> https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/8
> 
> \## Proposal
> \- add a section under tutorials lableled "OOD Dashboard Development"
> \- in that section present the needed symlink setup and \`env\` variables as detailed in the discourse thread to allow the dev dashboard to take its own configs.
> \- include notes around what \_can\_ be worked on through this and make sure to catch obvious \_can't\_ cases.
> \- provide a small example to demonstrate some new routes, a new app, and customized look of the dev dashboard.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/osc/original/2X/b/bae70bd0ed39a3ae769c2108155f4cb3e9da8385.png) [@system](https://discourse.openondemand.org/u/system)\
**Post date:** [May 28, 2024, 10:44pm UTC](https://discourse.openondemand.org/t/best-practice-for-ood-configuration-change-out-of-production/3123/10 "2024-05-28T22:44:19Z")

</div>

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
