06-15-2021 01:31 PM
I had a question on how people are installing applications and drivers using Systemlink.
A classic use case: Add new LV version.
So lets say we are running LV 2019 SP1 and want to transition to LV2020 SP1 and pushing this to 75 PCs. Not everyone will want to do this at the same time so we will have a crossover time with two tools installed. To prepare I download LV2020 SP1 and drivers to our SL Package repo. I eliminate the localities and bitness that I do not need then download from ni.com source. Now I have a SL feed for LV2020 SP1 and drivers that are needed too. So I have a single feed with everything.
I apply that feed to a client(s) that I want to push this too.
I see the LV2020 SP1 instance and the drivers in the available list and select LV2020 SP1 and all the drivers I want to load. Then I get to deploy and I get the install recommends option. But If I select install recommends I get a lot of items I do not need namely NXG will get installed since the drivers all have NXG as a dependency (I do not have NXG in my feed but if you select install recommends the local package manager I assume adds the feed from ni.com). Also a lot of other packages will be added and the package count can go from 200 to 700 if I select this option... So I do not click this and do not install recommends ('IR'). It seems that the install recommends is all or nothing and there is no context or implied options. Since the 'IR' is unchecked, a driver that I use HSDIO and all drivers in general do not include LV2020 SP1 support. So the driver gets installed but not available in LV. This is not the same as installing with the local PM. When I install something locally via package manager the PM will automatically determine what is installed and make sure support is added in the "Optional components" so the driver you are asking to be installed will work in all the local applications by default.
This feature is not automatic in the SL deploy. So IR flag says I either get LV with NXG and a bunch of other items I do not want or I get LV2020 SP1 but no driver support after the push.
You can break up your deployment into separate pushes sequentially allowing you to in effect have multiple 'IR' events which helps but you would need to automate the via python or something to automate to make sure that they deployment is the same. However NXG will always get installed and the piecemeal IR approach does not fix this.
You can use states which seem to make sense and I did start off with states in version 19.6 or so. I could create states ok but deploying was not always successful. It would just fail the application of state. I was having enough consistency issues that I tabled the states idea and just went with the package repo approach and a manual deploy which carried me to now since this seemed much more stable. So with this next usability problem looking to see how others are managing SL SCM to deploy SW.
deploy approaches:
Python scripts.
Creating packages of packages.
states
manual
manually assembling packages and deploying at a package level rather than via "features"
a mix?
Is there any best practices documents out there. I have not seen one for the SCM deploy specifically. So just curious in seeing how other users are using SL to deploy.