Jump to content

Has anybody else had the misfortune of using SOLUS3 to deploy SIMS to clients?


Recommended Posts

Posted
Contradicting yourself a bit there mate ;) - like I said, if you don't want to use S3 to deploy to the clients and you've got something like SCCM, heck, use it, use s3 to just download and keep the db updated etc, if you don't, then use SOLUS3 to do it all. As for MSI, there is a reason why Microsoft created the windows installer cleanup utility. You can't fool me with your green grass ;)

 

PS: I do giggle when I see your sig about your two MIS, greedy person :p

No contradiction. I was just referring to the prior discussion about lock-in. Unless you can do a Solus2.5, whereby you upgrade the server with S3, and then clients autocheck and update themselves S2 style, is that possible?

We don't have SCCM. I mean true manual, which is a pain, but for the few machines that will need it by then, easier than messing about with S3. To be honest, if it worked out of the box, and didn't need a whole config / learning process and i wasn't faced with the thought of the sorts of issues described here, i might try it, but for now, my grass is greener and i'm staying put.

Posted
Yes this is the biggest bugbear of S3, which is why I have a custom VBS script to reuse the GUID so it removes that hassle of removing/re-adding the station in Solus Admin each time.

 

As @matt40k said, it would have been better if the agent used the station name instead of the unique GUID, but we're stuck with that method until S4 is developed at a guess.

 

Back on topic would you mind sharing this VBS script @Boredguy it sounds like it could help a lot of people out.

 

Cheers

  • Thanks 1
Posted

This appears to be the best way to get the current GUID from the database if you have lots of clients that have been removed and re-added.

 

select s.agent_guid, s.machine_name, a.name, a.last_update 
from solus3.agent_system s, solus3.agent a 
where s.agent_guid = a.agent_guid and a.name not like ('(Removed)%');

Posted
We have Solus 3 installed on the server and ready to go now, just got to install the client on the workstations before i can do the Spring update. Half tempted to just do it the via Solus 2, Solus 3 seems such a pain, yet another agent to install.
Posted (edited)

I've extended the concept of the VB script a bit more such that I have written a few functions in VB.NET that will obtain the GUID from the database and then install the agent using that GUID.

 

The code is quite dirty as it is there just to demonstrate the concept. You may wish to run as an administrator user, manage the installation using the uninstall record, or run the setup remotely.

 

I'm going to add this code into an application that my build process runs automatically once the computer is built.

 

Code to call:

 

InstallSIMSAgent(True, GetGUIDFromDatabase("COMPUTERNAME"))

 

code to run the setup:

 



Function RunShell(ByVal AppPath, ByVal AppParm, ByVal AppWait)
       Try
           Dim proc = Process.Start(AppPath, AppParm)
           If AppWait = True Then proc.WaitForExit()
           Return (proc)
       Catch ex As Exception
           Return 0
       End Try
   End Function
   Private Function InstallSIMSAgent(x64, GUID)
       Dim msi
       If x64 = True Then
           MSI = "\SOLUS3AgentInstaller_x64.msi"
       Else
           MSI = "\SOLUS3AgentInstaller_x86.msi"
       End If
       Dim SimsServer = "SIMSSERVERNAME"
       Dim SetupSourcePath = "[url="file://\\PATHTO\DeploymentService"]\\PATHTO\DeploymentService[/url]"
       Dim KeyPath = "[url="file://\\PATHTO\AgentService"]\\PATHTO\AgentService[/url]"
       Dim CommandLine = "msiexec.exe"
       Dim CommandArg = "/i " & Chr(34) & SetupSourcePath & msi & Chr(34) & " AGENTSERVICEADDRESS=" & Chr(34) & "net.tcp://localhost:52966" & Chr(34) & " AGENTID=" & Chr(34) & "{" & GUID & "}" & Chr(34) & " DEPLOYMENTSERVERADDRESS=" & Chr(34) & "net.tcp://" & SimsServer & ":52965" & Chr(34) & " RSAKEYPATH=" & Chr(34) & SetupSourcePath & Chr(34) & " /qn"
       Dim proc = RunShell(CommandLine, CommandArg, True)
       Return proc
   End Function

 

Code to connect to and get the GUID from the database

 


   Private Function GetGUIDFromDatabase(ComputerName)
       Try
           Dim co, cs, rs, SQL
           Dim sMachineName
           Dim sGUID
           Const SIMSDBInstance = "DBSERVER\INSTANCE"
           Const SIMSDBUser = "DBUSERNAME"
           Const SIMSDBPasssword = "DBPASSWORD"
           'define the connection string, specify database driver
           cs = "DRIVER={SQL Server};SERVER=" & SIMSDBInstance & ";UID=" & SIMSDBUser & ";PWD=" & SIMSDBPasssword & ";Initial Catalog=solus3_deployment_server;DATABASE=solus3_deployment_server"
           'declare the SQL statement that will query the database
           SQL = "select s.agent_guid, s.machine_name, a.name, a.last_update from solus3.agent_system s, solus3.agent a where s.agent_guid = a.agent_guid and a.name not like ('(Removed)%') and s.machine_name = '" & ComputerName & "'"
           'create an instance of the ADO connection and recordset objects
           co = CreateObject("ADODB.Connection")
           rs = CreateObject("ADODB.Recordset")
           'Open the connection to the database
           co.Open(cs)
           'Open the recordset object executing the SQL statement and return records 
           rs.Open(SQL, co)
           Dim da As New System.Data.OleDb.OleDbDataAdapter()
           Dim ds As New DataSet()
           da.Fill(ds, rs, "Names")
           sMachineName = ds.Tables(0).Rows(0).Item(1)
           sGUID = ds.Tables(0).Rows(0).Item(0).ToString
           co.Close()
           co = Nothing
           Return sGUID
       Catch
           Return 0
       End Try
   End Function

Edited by tockwell
  • Thanks 2
Posted
see I was purposely not communicating with the database with my script as I also write the new station GUID's back into the CSV, but if your happy with reading the info from the DB each time fare play and glad I managed to give you a starting point :D
Posted
see I was purposely not communicating with the database with my script as I also write the new station GUID's back into the CSV, but if your happy with reading the info from the DB each time fare play and glad I managed to give you a starting point :D

 

Many thanks for that :D

Posted
If for some reason SIMS/FMS/Discover has not been installed within 15 minutes of the Agent being installed, the user can click on the Agent icon in the task bar (once they are logged in), then the Application Tab and click the Check for Updates button.
Posted
If for some reason SIMS/FMS/Discover has not been installed within 15 minutes of the Agent being installed, the user can click on the Agent icon in the task bar (once they are logged in), then the Application Tab and click the Check for Updates button.

 

The problem is that it reports that "there are no Capita SIMS Software Updates to be installed".

 

I don't know how well you know the database schema, but is it possible that SOLUS3 thinks that the version of SIMS is still that of the version it had installed before it was rebuilt?

Posted

The Agent does normally pickup that it has version 0.00.0 instead of 7.xx installed and pull down the correct version. It's not exactly speedy, but sometimes a reboot after the agent is installed and done the initial reporting is sufficient. Our Solus3 installation normally goes on before some other applications that force the station to reboot so it's not much of an issue here.

 

However you can always force a redeployment via the Solus 3 Admin console (Upgrades -> Deployment History -> ReDeploy -> Pick Station -> Deploy Now) if the client side option does not report anything

Posted
SOLUS 3.9 gets around the GUID issue - you can re-install.

 

You might want to get someone to expand on that Phil - if your saying the s3 server now issues the guid to the agent, or its no longer used in 3.9, then your basically saying all the above discussion is useless as you can just install the agent. Which is pretty significant and a real plus.

Posted
Well looking at the _Agent Installer folder on our installation (and we're running Solus 3.9), the JS file still generates a GUID randomly every time it's run so just reinstalling the agent via that method won't do anything, unless the MSI itself does not have to need the GUID, but even then we still have to provide the agent address, rsa key and server address.
Posted
Man in the know says the UI has a reinstall option, this will push down the GUID. So still not fixed @PhilNeal, sounds like your guys have a few good ideas how to get over the GUID problem, just need to get on and do it now, perhaps offer them a bit of overtime - it is dragging on a bit now!
Posted

@matt40k here's something from my expert!

 

The SOLUS3 school server uses GUIDs to identify the agent\workstation (GUIDs chosen to make it more difficult to impersonate a PC). In the latest release 3.9, if the machine has been reimaged or agent installed manually, the user can use the Reinstall Agent to sync the Guid with the Deployment Server. This is a new more robust feature in version 3.9, and the agent should quickly come online.

 

If this doesn't fix the issue please raise a case.

Posted
Still think that is a cope out. Means if some poor IT Tech has to rebuilt a workstation they have to go to the SIMS guru to get them to hit the button to reinstall rather then just boshing the agent on with null guid and S3 will do it magic and assign the old GUID and redeploy any Capita software it previously had. Still, could just be me being spoilt with all this automated-ness
Posted

Most of us have zero touch system deployment which this previously unannounced feature of 3.9 doesn't actually help resolve, so looks like my script is still worth keeping.

 

Last thing I want to do have to launch the Solus 3 admin console after a station has rebuilt and redeploy the agent as that adds an additional task at variable time (since not all workstations install Windows at the same speed via MDT).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...