While executing a pipeline you might have run into this issue when not using an ELB where the pipeline gets stuck on "Wait for Up Instances"
Why does this happen?
Spinnaker uses external services such as ELB, Eureka or Consul to determine wether the instance is "up". Once Spinnaker observes that the instance is "up" it will then "enable" the instance by placing it behind the ELB or enabling it within Eureka/Consul. If you're not using an ELB or an external service, Spinnaker has no way to determine wether the instance is "up" by default.
How to change this behavior
You can however change this behavior by changing an application's attributes and making sure that the "Consider Only Cloud Provider Health When Executing Tasks" is checked. This will instead just consider the instance "up" when the cloud provider does its checks and not consider service/application level readiness for health.
For additional information here is what is specified with the helper note from the UI:
When this option is enabled, instance status as reported by the cloud provider will be considered sufficient to determine task completion. When this option is disabled, tasks will normally need health status reported by some other health provider (e.g. a load balancer or discovery service) to determine task completion.
You can find this configuration option within the config section of your app and then by clicking "Edit Application Attributes"