initial commit
diff --git a/system/keystone/server/cluster.yml b/system/keystone/server/cluster.yml
new file mode 100644
index 0000000..f21d31d
--- /dev/null
+++ b/system/keystone/server/cluster.yml
@@ -0,0 +1,42 @@
+classes:
+- service.keystone.server.cluster
+- service.keepalived.cluster.single
+- system.keystone.server.storage.glusterfs
+- system.haproxy.proxy.listen.openstack.keystone
+parameters:
+  keystone:
+    server:
+      enabled: true
+      version: ${_param:keystone_version}
+      service_token: ${_param:keystone_service_token}
+      service_tenant: service
+      admin_tenant: admin
+      admin_name: admin
+      admin_password: ${_param:keystone_admin_password}
+      admin_email: ${_param:admin_email}
+      bind:
+        address: ${_param:cluster_local_address}
+        private_address: ${_param:cluster_vip_address}
+        private_port: 35357
+        public_address: ${_param:cluster_vip_address}
+        public_port: 5000
+      region: ${_param:openstack_region}
+      database:
+        engine: mysql
+        host: ${_param:openstack_database_address}
+        name: keystone
+        password: ${_param:mysql_keystone_password}
+        user: keystone
+      tokens:
+        engine: fernet
+        expiration: 3600
+        max_active_keys: 3
+        location: /var/lib/keystone/fernet-keys
+      message_queue:
+        engine: rabbitmq
+        host: ${_param:openstack_message_queue_address}
+        port: 5672
+        user: openstack
+        password: ${_param:rabbitmq_openstack_password}
+        virtual_host: '/openstack'
+        ha_queues: true
\ No newline at end of file
diff --git a/system/keystone/server/single.yml b/system/keystone/server/single.yml
new file mode 100644
index 0000000..38be60f
--- /dev/null
+++ b/system/keystone/server/single.yml
@@ -0,0 +1,17 @@
+classes:
+- service.keystone.server.single
+parameters:
+  _param:
+    keystone_service_token: token
+    keystone_admin_password: password
+    mysql_admin_user: root
+    mysql_admin_password: password
+    mysql_keystone_password: password
+  keystone:
+    server:
+      roles:
+        - admin
+        - Member
+        - image_manager
+    database:
+      host: 127.0.0.1
diff --git a/system/keystone/server/storage/glusterfs.yml b/system/keystone/server/storage/glusterfs.yml
new file mode 100644
index 0000000..54a4197
--- /dev/null
+++ b/system/keystone/server/storage/glusterfs.yml
@@ -0,0 +1,35 @@
+classes:
+- service.glusterfs.server
+- service.glusterfs.client
+parameters:
+  glusterfs:
+    server:
+      peers:
+      - ${_param:cluster_node01_address}
+      - ${_param:cluster_node02_address}
+      - ${_param:cluster_node03_address}
+      volumes:
+        keystone-keys:
+          storage: /srv/glusterfs/keystone-keys
+          replica: 3
+          bricks:
+            - ${_param:cluster_node01_address}:/srv/glusterfs/keystone-keys
+            - ${_param:cluster_node02_address}:/srv/glusterfs/keystone-keys
+            - ${_param:cluster_node03_address}:/srv/glusterfs/keystone-keys
+          options:
+            cluster.readdir-optimize: On
+            nfs.disable: On
+            network.remote-dio: On
+            diagnostics.client-log-level: WARNING
+            diagnostics.brick-log-level: WARNING
+    client:
+      volumes:
+        keystone-keys:
+          path: /var/lib/keystone/fernet-keys
+          server: ${_param:glusterfs_service_host}
+          user: keystone
+          group: keystone
+  keystone:
+    server:
+      tokens:
+        location: /var/lib/keystone/fernet-keys