Thanks for getting in touch! I'm sorry you're hitting this behavior and for the delay in getting back to you. This should be theoretically possible, however I'm not positive I fully understand your scenario. If step 2 should only run on some machines, would it be a viable solution for you to scope this step to a role that's assigned only to the machines you want it to be run on?
Could you provide screenshots of your steps (specifically where you're setting the variable, and step 2's run condition)? I'll be happy to re-assess with some more info. :)
Please find attached a test project that reconstruct the scenario.
As you can See STEP01 set the local Variable "SchemeDeploy".
STEP02 reference it in the "Run condition"
STEP03 Output the STEP01 local Variable "SchemeDeploy"
The result I have is that STEP02 will not run because the last server STEP01 ran set the local Variable "SchemeDeploy".to False.
STEP03 shows that STEP01 local Variable "SchemeDeploy" is different on each server.
btw, The machine deployment is dependent on validation rules (e.g. file that exist or don't exist on server). This is why Role scoping will not work. What I have done is have a step that check the server status and another step to take action based on previous check result.
I really need an answer soon. I'm suppose to be at the end of project development and if the "Run Condition" in a step does not scope by machine then I will have to go about changing all my Script Templates to Script Modules and placing the validation into the script module.