installer-env: wait for services to be reachable
diff --git a/core/installer/tasks/init.go b/core/installer/tasks/init.go
index 2457c4d..f3818e3 100644
--- a/core/installer/tasks/init.go
+++ b/core/installer/tasks/init.go
@@ -9,6 +9,15 @@
 	"github.com/giolekva/pcloud/core/installer/soft"
 )
 
+func SetupConfigRepoTask(env Env, st *state) Task {
+	return newSequentialParentTask(
+		"Configuration repository",
+		NewCreateConfigRepoTask(env, st),
+		CreateGitClientTask(env, st),
+		NewInitConfigRepoTask(env, st),
+	)
+}
+
 func NewCreateConfigRepoTask(env Env, st *state) Task {
 	t := newLeafTask("Install Git server", func() error {
 		appsRepo := installer.NewInMemoryAppRepository(installer.CreateAllApps())
@@ -20,6 +29,7 @@
 		if err != nil {
 			return err
 		}
+		st.ssAdminKeys = ssAdminKeys
 		ssKeys, err := installer.NewSSHKeyPair(fmt.Sprintf("%s-config-repo-keys", env.Name))
 		if err != nil {
 			return err
@@ -50,9 +60,16 @@
 		if err := st.repo.InstallApp(*ssApp, filepath.Join("/environments", env.Name, "config-repo"), ssValues, derived); err != nil {
 			return err
 		}
+		return nil
+	})
+	return &t
+}
+
+func CreateGitClientTask(env Env, st *state) Task {
+	t := newLeafTask("Wait git server to come up", func() error {
 		ssClient, err := soft.WaitForClient(
 			fmt.Sprintf("soft-serve.%s.svc.cluster.local:%d", env.Name, 22),
-			ssAdminKeys.RawPrivateKey(),
+			st.ssAdminKeys.RawPrivateKey(),
 			log.Default())
 		if err != nil {
 			return err