Historically we have installed the OpenSource tools easily into each products own ZFS dataset mounted on the maintenance path. Propagation to all the other systems occurred via DFDSS backup of said ZFS dataset to be restored and renamed as required on each target system.
In simple terms can anyone document how this install/maintain/propagate process could be performed using MiniConda in Z/OS.
I have started reading the User Manuals @ https://docs.conda.io and my initial impression is that it is similar in concept to APT in DEBIAN LINUX.
Additionally what firewall rules would I need to get this working?
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
Historically we have installed the OpenSource tools easily into each products own ZFS dataset mounted on the maintenance path. Propagation to all the other systems occurred via DFDSS backup of said ZFS dataset to be restored and renamed as required on each target system.
In simple terms can anyone document how this install/maintain/propagate process could be performed using MiniConda in Z/OS.
I have started reading the User Manuals @ https://docs.conda.io and my initial impression is that it is similar in concept to APT in DEBIAN LINUX.
Additionally what firewall rules would I need to get this working?
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
Not sure if all this qualifies for 'simple terms'...
As long as installation paths (i.e. mount points) on different systems are the same, you can use your old approach with Miniconda. You can install Miniconda into a separate zFS, then copy that zFS to other LPARs, and mount the copies there. Whenever you need to update the tools, you would do 'conda update' on the master system and then re-deploy the zFS data set to other LPARs again. Simple as that.
However, certain things need to be thought over before implementing it. In particular, you need to decide whether zFS copies are read-only or if they allow write access. This affects the location of environments created by conda users on your systems - if anyone would want to use conda itself and not just the tools shipped with it.
1. If write access is allowed, a new environment is by default placed into the 'envs' sub-directory within Miniconda installation, becomes 'globally visible', and can be used or modified by other users.
The zFS data set must allow extra space for new environments. Also, new environments will be destroyed (and users upset) each time you update zFS data sets.
2. If Miniconda's directory is read-only, an attempt to create a new environment will place it into the user's home directory under '$HOME/.conda/envs'. Any user can still have personal environments tuned to their wishes; this also allows you to pre-define some 'canned' environments within Miniconda (on the master system) and be sure they remain unmodified on the target LPARs.
The downside is that configuration (e.g. tailoring files in the 'etc' directory) can only be done on the master system.
There are other options, e.g. you can tell conda where to create environments by setting the 'envs_dirs' parameter in the .condarc file.
Another important thing to keep in mind is that tools shipped with Miniconda require an environment to be activated for them to work properly. The 'conda activate' command sets up the shell variables these tools need - mostly PATH and LIBPATH, but many tools have extra requirements. This means, users on all LPARs will need a 'conda activate' command in their profile. This command replaces a bunch of 'export' statements that you needed earlier when you were installing the tools separately.
Regarding firewall setup, I would imagine you need to allow HTTP/HTTPS access to the conda server if you plan to install packages from the server, and that's it. Conda also supports so-called 'file channels' where you place packages into the local filesystem and therefore can disable internet access at all.
Unfortunately I'm not familiar with Debian's 'apt' and can't comment on this one, except that package managers in general look somewhat similar.
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
Not sure if all this qualifies for 'simple terms'...
As long as installation paths (i.e. mount points) on different systems are the same, you can use your old approach with Miniconda. You can install Miniconda into a separate zFS, then copy that zFS to other LPARs, and mount the copies there. Whenever you need to update the tools, you would do 'conda update' on the master system and then re-deploy the zFS data set to other LPARs again. Simple as that.
However, certain things need to be thought over before implementing it. In particular, you need to decide whether zFS copies are read-only or if they allow write access. This affects the location of environments created by conda users on your systems - if anyone would want to use conda itself and not just the tools shipped with it.
1. If write access is allowed, a new environment is by default placed into the 'envs' sub-directory within Miniconda installation, becomes 'globally visible', and can be used or modified by other users.
The zFS data set must allow extra space for new environments. Also, new environments will be destroyed (and users upset) each time you update zFS data sets.
2. If Miniconda's directory is read-only, an attempt to create a new environment will place it into the user's home directory under '$HOME/.conda/envs'. Any user can still have personal environments tuned to their wishes; this also allows you to pre-define some 'canned' environments within Miniconda (on the master system) and be sure they remain unmodified on the target LPARs.
The downside is that configuration (e.g. tailoring files in the 'etc' directory) can only be done on the master system.
There are other options, e.g. you can tell conda where to create environments by setting the 'envs_dirs' parameter in the .condarc file.
Another important thing to keep in mind is that tools shipped with Miniconda require an environment to be activated for them to work properly. The 'conda activate' command sets up the shell variables these tools need - mostly PATH and LIBPATH, but many tools have extra requirements. This means, users on all LPARs will need a 'conda activate' command in their profile. This command replaces a bunch of 'export' statements that you needed earlier when you were installing the tools separately.
Regarding firewall setup, I would imagine you need to allow HTTP/HTTPS access to the conda server if you plan to install packages from the server, and that's it. Conda also supports so-called 'file channels' where you place packages into the local filesystem and therefore can disable internet access at all.
Unfortunately I'm not familiar with Debian's 'apt' and can't comment on this one, except that package managers in general look somewhat similar.
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
still trying to gain an understanding on this whole concept.
I got into this when I cam to download the latest Python 3.7
Last time it was simple, download the file, install to a specified directory, on which was mounted a ZFS dataset named as Python.V370, update our global /etc/profile, and then we could ship those ZFS datasets out to other Z/OS systems, and IPL. Then everything was completed. For 100+ systems.
As Rocket now requires us to use MiniConda to do this process, I am required to massage our existing process, with the complexities built into Miniconda, that hide what I used to do myself, and somehow end up with a simple, foolproof, set of guidelines for the installation and maintenance of the Open Source Tools and Languages supplied by Rocket.
Nothing I have read so far make it easy for me to make that conversion.
Sorry about that.
Hoping the experts at Rocket can assist.
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
still trying to gain an understanding on this whole concept.
I got into this when I cam to download the latest Python 3.7
Last time it was simple, download the file, install to a specified directory, on which was mounted a ZFS dataset named as Python.V370, update our global /etc/profile, and then we could ship those ZFS datasets out to other Z/OS systems, and IPL. Then everything was completed. For 100+ systems.
As Rocket now requires us to use MiniConda to do this process, I am required to massage our existing process, with the complexities built into Miniconda, that hide what I used to do myself, and somehow end up with a simple, foolproof, set of guidelines for the installation and maintenance of the Open Source Tools and Languages supplied by Rocket.
Nothing I have read so far make it easy for me to make that conversion.
Sorry about that.
Hoping the experts at Rocket can assist.
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
------------------------------
Peter Fandel
Rocket Software
------------------------------
------------------------------
Peter Fandel
Rocket Software
------------------------------
Next step is to make holes in our firewalls. That is in progress. But how can I check if my company has a Support Contract so that I can get an ID to access the Rocket Secured Server?
Once I get to actually install one of the Open Source Languages or Tools via MiniConda, I should be able to look much more closely at what is required for product propagation to all our sites.
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
Next step is to make holes in our firewalls. That is in progress. But how can I check if my company has a Support Contract so that I can get an ID to access the Rocket Secured Server?
Once I get to actually install one of the Open Source Languages or Tools via MiniConda, I should be able to look much more closely at what is required for product propagation to all our sites.
Regards
Bruce
------------------------------
Bruce Hewson
Citibank
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
'conda create -p /path/to/env' is probably what you're looking for. With this command, you can create an environment in whatever location you need, e.g. on a separate filesystem. Please note, however, that deploying it separately from conda means one would need to manually set up environment variables the same way conda does.
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
The old download and install system involved about 40 steps to install Git. Once you have z/OS Miniconda set up on at least one system, these 40 or so steps are replaced with a single command. The full advantages of using conda are explained and demonstrated in this video.
Rocket has moved to conda both for ease of use as per above and also for security reasons explained in the above-referenced video.
Many of our customers will separate admin from developer role with respect to download and install whereby admin will install z/OS Miniconda and use it to set up environments which can then be deployed to developer systems obviating the need for developers to learn any conda commands. Others may install z/OS Miniconda and then allow and/or expect in-house developers to issue conda commands to download what they need. Still others may expect each developer to set up their own z/OS Miniconda as well as use it for obtaining and deploying open source ports. Any way you slice it however, conda will be required at some point in the process.
Another video demonstrates how to install and set up z/OS Miniconda here.
Regards,
-Peter
------------------------------
Peter Fandel
Rocket Software
------------------------------
'conda create -p /path/to/env' is probably what you're looking for. With this command, you can create an environment in whatever location you need, e.g. on a separate filesystem. Please note, however, that deploying it separately from conda means one would need to manually set up environment variables the same way conda does.
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
After installing to a specific path where/how do i find the environment setup? I trust it is in a file somewhere?
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Gary Freestone
IBM Australia
------------------------------
After installing to a specific path where/how do i find the environment setup? I trust it is in a file somewhere?
------------------------------
Lionel Dyck
lbdyck
------------------------------
Could you post here exact commands and outputs? It would help us to assist you.
------------------------------
Tatiana Balaburkina
Rocket Software
------------------------------
Could you post here exact commands and outputs? It would help us to assist you.
------------------------------
Tatiana Balaburkina
Rocket Software
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Gary Freestone
IBM Australia
------------------------------
Now - where do I find the information on how to setup my environment to use it? Does miniconda create a file somewhere that I can then copy all/part to place into my target systems /etc/profile ?
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Gary Freestone
IBM Australia
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
Rocket ported tools (incl. conda) are open sourced. Although you can always learn the code, you are absolutely don't need to! If you want to see, which environment variables were modified, you can run the following commands and compare outputs:
> env | sort #prints out current environment settings
> conda activate <env_name> #activates an environment and adjusts environment settings
> env | sort #prints out new environment settings
You are even not obliged to modify general config files (like /etc/profile). You can run "./<installation_path>/etc/profile.d/conda.sh" command manually, when you want to work with conda in your current session.
In terms of history, I find conda even much more convenient that the old way. Just one command "conda list" shows you all the installed packages with their versions and build numbers. So you don't need to guess where you should gather information which builds you are using.
------------------------------
Peter Fandel
Rocket Software
------------------------------
Rocket ported tools (incl. conda) are open sourced. Although you can always learn the code, you are absolutely don't need to! If you want to see, which environment variables were modified, you can run the following commands and compare outputs:
> env | sort #prints out current environment settings
> conda activate <env_name> #activates an environment and adjusts environment settings
> env | sort #prints out new environment settings
You are even not obliged to modify general config files (like /etc/profile). You can run "./<installation_path>/etc/profile.d/conda.sh" command manually, when you want to work with conda in your current session.
In terms of history, I find conda even much more convenient that the old way. Just one command "conda list" shows you all the installed packages with their versions and build numbers. So you don't need to guess where you should gather information which builds you are using.
------------------------------
Peter Fandel
Rocket Software
------------------------------
On the environment I did find them but in the path/conda/activate.d/xxx.sh where there is one for git and one for perl and one for .....
Using miniconda makes it difficult if I just want to roll out bash or perl compared to the previous installation process. And when installing to a specific path (create -p xxx) there is more than just the requested package - there is conda related directories which I presume can be ignored when deploying beyond the conda environment).
Miniconda does look to be very nice but it isn't z/OS and makes working with existing change management and audit controls challenging as well as the stated challenges of trying to deploy only a specific package.
Thank you for your help - at this point I think I've got what I need to proceed and I'm sure as I learn more about miniconda it will become more intuitive and the doc I will have to write up for others, including auditors, will make things less ivory towerish.
------------------------------
Lionel Dyck
lbdyck
------------------------------
On the environment I did find them but in the path/conda/activate.d/xxx.sh where there is one for git and one for perl and one for .....
Using miniconda makes it difficult if I just want to roll out bash or perl compared to the previous installation process. And when installing to a specific path (create -p xxx) there is more than just the requested package - there is conda related directories which I presume can be ignored when deploying beyond the conda environment).
Miniconda does look to be very nice but it isn't z/OS and makes working with existing change management and audit controls challenging as well as the stated challenges of trying to deploy only a specific package.
Thank you for your help - at this point I think I've got what I need to proceed and I'm sure as I learn more about miniconda it will become more intuitive and the doc I will have to write up for others, including auditors, will make things less ivory towerish.
------------------------------
Lionel Dyck
lbdyck
------------------------------
We at Rocket are of the opinion that open source will rapidly gain adoption on z/OS and rather than Bash here and Perl there, mainframe users will be deploying much larger numbers of open source tools and making them a critical part of their tool chains and application development infrastructure.
We will continue to do our best to support you through this transition.
Best Regards,
-Peter
------------------------------
Peter Fandel
Rocket Software
------------------------------
We at Rocket are of the opinion that open source will rapidly gain adoption on z/OS and rather than Bash here and Perl there, mainframe users will be deploying much larger numbers of open source tools and making them a critical part of their tool chains and application development infrastructure.
We will continue to do our best to support you through this transition.
Best Regards,
-Peter
------------------------------
Peter Fandel
Rocket Software
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
Lionel Dyck
lbdyck
------------------------------
Let's try to get it working for you. You've probably progressed a bit during this conversation, so I'm not sure how's everything going at the moment. Could you please tell us in more detail (if possible) what you're trying to achieve and what are the issues you're currently experiencing?
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
Let's try to get it working for you. You've probably progressed a bit during this conversation, so I'm not sure how's everything going at the moment. Could you please tell us in more detail (if possible) what you're trying to achieve and what are the issues you're currently experiencing?
Regards,
Vladimir
------------------------------
Vladimir Ein
Rocket Software
------------------------------
I have the target directory (filesystem) with git and all it's components. I found the xxx.sh to configure the profile and now need to find the time to collect each of those files into a consolidated file and then add it to my /etc/profile (initially for testing to my ~/.profile. I hope to get to that this weekend.
Thank you for all your help.
Btw. The xxxx.sh files use a variable for the conda directory and it would be easier in this case if the variable were resolved when creating the xxxx.sh files.
I'll update this weekend or early next week on my progress.
Lionel B. Dyck <sdg><
Website: https://www.lbdsoftware.com
"Worry more about your character than your reputation. Character is what you are, reputation merely what others think you are." - John Wooden
I have the target directory (filesystem) with git and all it's components. I found the xxx.sh to configure the profile and now need to find the time to collect each of those files into a consolidated file and then add it to my /etc/profile (initially for testing to my ~/.profile. I hope to get to that this weekend.
Thank you for all your help.
Btw. The xxxx.sh files use a variable for the conda directory and it would be easier in this case if the variable were resolved when creating the xxxx.sh files.
I'll update this weekend or early next week on my progress.
Lionel B. Dyck <sdg><
Website: https://www.lbdsoftware.com
"Worry more about your character than your reputation. Character is what you are, reputation merely what others think you are." - John Wooden
Do I understand correctly that the reason for this is that for audit / change management, you can only report /etc/profile and not some scripts 'external' to it?
Won't it work if you just 'source' them from your /etc/profile like this below? Also please keep in mind that PATH, LIBPATH and MANPATH are modified by conda itself and not by those activation scripts.
export CONDA_PREFIX=/path/to/your/env
export PATH=$CONDA_PREFIX/bin:$PATH
export LIBPATH=$CONDA_PREFIX/lib:$LIBPATH
export MANPATH=$CONDA_PREFIX/share/man:$CONDA_PREFIX/man:$MANPATH
for i in $CONDA_PREFIX/etc/conda/activate.d/*.sh; do . $i; done
------------------------------
Vladimir Ein
Rocket Software
------------------------------
Do I understand correctly that the reason for this is that for audit / change management, you can only report /etc/profile and not some scripts 'external' to it?
Won't it work if you just 'source' them from your /etc/profile like this below? Also please keep in mind that PATH, LIBPATH and MANPATH are modified by conda itself and not by those activation scripts.
export CONDA_PREFIX=/path/to/your/env
export PATH=$CONDA_PREFIX/bin:$PATH
export LIBPATH=$CONDA_PREFIX/lib:$LIBPATH
export MANPATH=$CONDA_PREFIX/share/man:$CONDA_PREFIX/man:$MANPATH
for i in $CONDA_PREFIX/etc/conda/activate.d/*.sh; do . $i; done
------------------------------
Vladimir Ein
Rocket Software
------------------------------
------------------------------
David Crayford
Senior Software Engineer
Rocket Software
------------------------------
------------------------------
David Crayford
Senior Software Engineer
Rocket Software
------------------------------
From my reading it appears you can only have one environment active at a time, which means each environment must have all of the tools within it.
The ideal is to be able to deploy release x of tool a and release y of tool b, each in their own filesystems so that either can be replaced by a newer release without impacting the other.
------------------------------
Lionel Dyck
lbdyck
------------------------------
From my reading it appears you can only have one environment active at a time, which means each environment must have all of the tools within it.
The ideal is to be able to deploy release x of tool a and release y of tool b, each in their own filesystems so that either can be replaced by a newer release without impacting the other.
------------------------------
Lionel Dyck
lbdyck
------------------------------
------------------------------
David Crayford
Senior Software Engineer
Rocket Software
------------------------------
------------------------------
David Crayford
Senior Software Engineer
Rocket Software
------------------------------
Also, many customers have their own procedures that have evolved over decades for migrating software between systems. Often when a vendor had a custom installation system it was necessary to install, analyze what it actually did, tear apart the result and fit the pieces into the existing process. A 40 step process to install git doesn't sound that bad because I understand exactly what changes have been made. My initial impression of the Conda installation is it would actually be more difficult because you can't see exactly what it is doing.
(Having viewed the videos on the installation maybe it isn't so bad - it looks like changes may be local to a directory, with some script changes to point to the updated location. So change documentation would need to list old and new directories, and the script changes.)
------------------------------
Andrew Rowley
Black Hill Software
------------------------------
Also, many customers have their own procedures that have evolved over decades for migrating software between systems. Often when a vendor had a custom installation system it was necessary to install, analyze what it actually did, tear apart the result and fit the pieces into the existing process. A 40 step process to install git doesn't sound that bad because I understand exactly what changes have been made. My initial impression of the Conda installation is it would actually be more difficult because you can't see exactly what it is doing.
(Having viewed the videos on the installation maybe it isn't so bad - it looks like changes may be local to a directory, with some script changes to point to the updated location. So change documentation would need to list old and new directories, and the script changes.)
------------------------------
Andrew Rowley
Black Hill Software
------------------------------
The idea behind virtual environments like Conda and Poetry (Python, pyenv) is that you can create a virtual environment for your project with different versions of software, both libraries and the Python intepreter. It's actually much better for application stability but a PITA for global installations. Trade offs - but you can do both. Create a sandbox and roll out an installation wide environment. You have multiple sandboxes with different environments with easily downloadable updates.
Suck it and see. If you don't like it post constructive criticism on here and I'm sure the guys will do their best to help.
------------------------------
David Crayford
Senior Software Engineer
Rocket Software
------------------------------
Sign up
Already have an account? Login
Welcome to the Rocket Forum!
Please log in or register:
Employee Login | Registration Member Login | RegistrationEnter your E-mail address. We'll send you an e-mail with instructions to reset your password.