vikpaw Posted April 27, 2015 Posted April 27, 2015 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 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.
lmgtfy Posted April 27, 2015 Posted April 27, 2015 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 1
Boredguy Posted April 28, 2015 Posted April 28, 2015 I posted the code on another S3 thread a couple of months ago, but here is the link for it 2
tockwell Posted April 28, 2015 Author Posted April 28, 2015 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)%');
Quackers Posted April 28, 2015 Posted April 28, 2015 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.
tockwell Posted April 28, 2015 Author Posted April 28, 2015 (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 April 28, 2015 by tockwell 2
vikpaw Posted April 28, 2015 Posted April 28, 2015 And to think Capita had a budget to do this for us!
Boredguy Posted April 28, 2015 Posted April 28, 2015 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
tockwell Posted April 28, 2015 Author Posted April 28, 2015 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 Many thanks for that
tockwell Posted April 29, 2015 Author Posted April 29, 2015 After getting the agent working and communicating correctly, has anybody been able to force SIMS to be installed?
Boredguy Posted April 29, 2015 Posted April 29, 2015 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.
tockwell Posted April 29, 2015 Author Posted April 29, 2015 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?
Boredguy Posted April 29, 2015 Posted April 29, 2015 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
PhilNeal Posted April 30, 2015 Posted April 30, 2015 SOLUS 3.9 gets around the GUID issue - you can re-install.
matt40k Posted April 30, 2015 Posted April 30, 2015 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.
Boredguy Posted April 30, 2015 Posted April 30, 2015 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.
matt40k Posted May 1, 2015 Posted May 1, 2015 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!
PhilNeal Posted May 1, 2015 Posted May 1, 2015 @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.
matt40k Posted May 1, 2015 Posted May 1, 2015 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
Boredguy Posted May 1, 2015 Posted May 1, 2015 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).
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now