Statistics
| Branch: | Tag: | Revision:

root / docs / snf-deploy.rst @ c2d0e69e

History | View | Annotate | Download (9.4 kB)

1 77180645 Dimitris Aragiorgis
.. _snf-deploy:
2 77180645 Dimitris Aragiorgis
3 77180645 Dimitris Aragiorgis
snf-deploy tool
4 77180645 Dimitris Aragiorgis
^^^^^^^^^^^^^^^
5 77180645 Dimitris Aragiorgis
6 77180645 Dimitris Aragiorgis
7 77180645 Dimitris Aragiorgis
This tool allows you to deploy all Synnefo components from scratch
8 77180645 Dimitris Aragiorgis
or to an existing cluster.
9 77180645 Dimitris Aragiorgis
10 77180645 Dimitris Aragiorgis
This is useful mostly for testing/demo installation and is not suggested for
11 77180645 Dimitris Aragiorgis
production environments. At the end you will have an up-and-running Synnefo but
12 77180645 Dimitris Aragiorgis
the end-to-end functionallity will depend from your underlying infrastracture
13 77180645 Dimitris Aragiorgis
(e.g. is nested virtualization enabled in your PC, is the router properly
14 77180645 Dimitris Aragiorgis
configured, do node have fully qualified domain names, etc.). Nevertheless you
15 77180645 Dimitris Aragiorgis
will be able to experience the API/UI and base funtionality the Synnefo IaaS
16 77180645 Dimitris Aragiorgis
provides and you 'll get a proper configuration that will guide you through
17 77180645 Dimitris Aragiorgis
setting a production environment that will scale up and use all available
18 77180645 Dimitris Aragiorgis
features (e.g. rados, archipelagos, etc).
19 77180645 Dimitris Aragiorgis
20 77180645 Dimitris Aragiorgis
snf-deploy is a debian package that should be installed locally and allow you
21 77180645 Dimitris Aragiorgis
install Synnefo on remote nodes (either already existing or not). To this
22 77180645 Dimitris Aragiorgis
end this guide will break the whole procedure into three; the configuration,
23 77180645 Dimitris Aragiorgis
the virtual cluster creation (optional) and finally the Synnefo installation.
24 77180645 Dimitris Aragiorgis
25 77180645 Dimitris Aragiorgis
Before getting any further we should mention the roles that snf-deploy refers
26 77180645 Dimitris Aragiorgis
to. Note that more than one roles can co-exist in the same node (except for few)
27 77180645 Dimitris Aragiorgis
but it is highy recommended to dedicate one node (VM or physical) to each role:
28 77180645 Dimitris Aragiorgis
29 77180645 Dimitris Aragiorgis
 - existing nodes: All available nodes in the cluster
30 77180645 Dimitris Aragiorgis
31 77180645 Dimitris Aragiorgis
 - accounts: Identity Management
32 77180645 Dimitris Aragiorgis
 - pithos: Storage Service
33 77180645 Dimitris Aragiorgis
 - cms: Content Management System
34 77180645 Dimitris Aragiorgis
 - cyclades: Compute Service to manage Instances, Networks, etc.
35 77180645 Dimitris Aragiorgis
 - mq: Asynchronous Message Queue System for inter-service communication
36 77180645 Dimitris Aragiorgis
 - qh: Quota Holder to keep track of resources utilization
37 77180645 Dimitris Aragiorgis
38 77180645 Dimitris Aragiorgis
 - ns: Nameserver to resolve Synnefo FQDN
39 77180645 Dimitris Aragiorgis
 - router: The node to do any routing and NAT needed
40 77180645 Dimitris Aragiorgis
 - client: The node to setup a command line tool to manage a user account
41 77180645 Dimitris Aragiorgis
42 77180645 Dimitris Aragiorgis
All these define the synnefo components. In order to have instances up-and-running,
43 77180645 Dimitris Aragiorgis
at least a backend must be associated with Cyclades. Backends are
44 77180645 Dimitris Aragiorgis
Ganeti clusters each with multiple nodes. Please note that these nodes may be the
45 77180645 Dimitris Aragiorgis
same as the ones used before. To this end we refer to:
46 77180645 Dimitris Aragiorgis
47 77180645 Dimitris Aragiorgis
 - ganeti nodes: All available nodes for a specific backend
48 77180645 Dimitris Aragiorgis
 - master: The master node in each ganeti backend
49 77180645 Dimitris Aragiorgis
50 77180645 Dimitris Aragiorgis
Configuration
51 77180645 Dimitris Aragiorgis
=============
52 77180645 Dimitris Aragiorgis
53 77180645 Dimitris Aragiorgis
The configuration files to edit are under /etc/snf-deploy:
54 77180645 Dimitris Aragiorgis
55 77180645 Dimitris Aragiorgis
nodes.conf
56 77180645 Dimitris Aragiorgis
----------
57 77180645 Dimitris Aragiorgis
Defines all existing hostnames and their ips. Currently snf-deploy expects all
58 77180645 Dimitris Aragiorgis
nodes to reside in the same network subnet and domain, will share the same
59 77180645 Dimitris Aragiorgis
gateway and nameserver. Synnefo needs fqdn for its services. Therefore a
60 77180645 Dimitris Aragiorgis
nameserver is setup in the cluster by snf-deploy so the nameserver IP should be
61 77180645 Dimitris Aragiorgis
among the existing ones. From now on we refer to the nodes based on their
62 77180645 Dimitris Aragiorgis
hostnames. This implies their fqdn and their IP.
63 77180645 Dimitris Aragiorgis
64 77180645 Dimitris Aragiorgis
Additionally here we define the available ganeti clusters as far as the
65 77180645 Dimitris Aragiorgis
nodes is concerned. Additionaly info is provided in backends.conf
66 77180645 Dimitris Aragiorgis
67 77180645 Dimitris Aragiorgis
setup.conf
68 77180645 Dimitris Aragiorgis
----------
69 77180645 Dimitris Aragiorgis
The important section here is the roles. Based on the aforementioned, we
70 77180645 Dimitris Aragiorgis
assing each role to a certain role. Note that we refer to nodes with their
71 77180645 Dimitris Aragiorgis
short hostnames and they should be previously defined in nodes.conf
72 77180645 Dimitris Aragiorgis
73 77180645 Dimitris Aragiorgis
Here we define also the authentication details for the nodes (user, password),
74 77180645 Dimitris Aragiorgis
various credentials for the synnefo installation, whether nodes have an extra
75 77180645 Dimitris Aragiorgis
disk (used for lvm/drbd storage in Ganeti backends) or not. The VMCs should
76 77180645 Dimitris Aragiorgis
have three separate network interfaces (either physical or not -vlans) each
77 77180645 Dimitris Aragiorgis
in the same collition domain; one for the node's public network, one
78 77180645 Dimitris Aragiorgis
for VM's public network and one for VM's private network. In order to
79 77180645 Dimitris Aragiorgis
support the most common case, a router is setup on the VMs' public interface
80 77180645 Dimitris Aragiorgis
and does NAT (hoping the node has itself internet access).
81 77180645 Dimitris Aragiorgis
82 77180645 Dimitris Aragiorgis
backends.conf
83 77180645 Dimitris Aragiorgis
-------------
84 77180645 Dimitris Aragiorgis
Here we include all info regarding Ganeti backends. That is the master node,
85 77180645 Dimitris Aragiorgis
its floating IP, the volume group name (in case of lvm support) and the VM's
86 77180645 Dimitris Aragiorgis
public network associated to it. Please note that currently Synnefo expects
87 77180645 Dimitris Aragiorgis
different public networks per backend but still can support multiple public
88 77180645 Dimitris Aragiorgis
networks per backend.
89 77180645 Dimitris Aragiorgis
90 77180645 Dimitris Aragiorgis
91 77180645 Dimitris Aragiorgis
deploy.conf
92 77180645 Dimitris Aragiorgis
-----------
93 77180645 Dimitris Aragiorgis
Here we define all necessary info for customizing snf-deploy; whether to use
94 77180645 Dimitris Aragiorgis
local packages or not (this is used primarily by developers), which bridge
95 77180645 Dimitris Aragiorgis
to use (if you create a virtual cluster from scratch), and where are the
96 77180645 Dimitris Aragiorgis
necessary local directories (packages, templates, images, etc..)
97 77180645 Dimitris Aragiorgis
98 77180645 Dimitris Aragiorgis
99 77180645 Dimitris Aragiorgis
Virtual Cluster Creation
100 77180645 Dimitris Aragiorgis
========================
101 77180645 Dimitris Aragiorgis
102 77180645 Dimitris Aragiorgis
Supposing you want to install Synnefo from scratch the best way is to launch
103 77180645 Dimitris Aragiorgis
a couple of VM's locally. To this end you need a debian base image. An 8GB one
104 77180645 Dimitris Aragiorgis
with preinstalled keys and network-manager hostname hooks exists in pithos.okeanos.grnet.gr
105 77180645 Dimitris Aragiorgis
and can be fetched with:
106 77180645 Dimitris Aragiorgis
107 77180645 Dimitris Aragiorgis
.. code-block:: console
108 77180645 Dimitris Aragiorgis
109 77180645 Dimitris Aragiorgis
   snf-deploy image
110 77180645 Dimitris Aragiorgis
111 77180645 Dimitris Aragiorgis
This will save locally the image under /var/lib/snf-deploy/images. TODO: mention
112 77180645 Dimitris Aragiorgis
related options: --img-dir, --extra-disk, --lvg, --os
113 77180645 Dimitris Aragiorgis
114 77180645 Dimitris Aragiorgis
To have a functional networking setup for the instances please run:
115 77180645 Dimitris Aragiorgis
116 77180645 Dimitris Aragiorgis
.. code-block:: console
117 77180645 Dimitris Aragiorgis
118 77180645 Dimitris Aragiorgis
   snf-deploy prepare
119 77180645 Dimitris Aragiorgis
120 77180645 Dimitris Aragiorgis
This will add a bridge, iptables to allow traffic from/to it, enable forwarding and
121 77180645 Dimitris Aragiorgis
NAT for the given network subnet.
122 77180645 Dimitris Aragiorgis
123 77180645 Dimitris Aragiorgis
To provide the configured hostnames and IPs to the cluster please run:
124 77180645 Dimitris Aragiorgis
125 77180645 Dimitris Aragiorgis
.. code-block:: console
126 77180645 Dimitris Aragiorgis
127 77180645 Dimitris Aragiorgis
   snf-deploy dhcp
128 77180645 Dimitris Aragiorgis
129 77180645 Dimitris Aragiorgis
This will launch a dnsmasq instance acting only as dhcp server and listening only on
130 77180645 Dimitris Aragiorgis
the cluster's bridge. In case you have changes the nodes.conf you should re-create
131 77180645 Dimitris Aragiorgis
the dnsmasq related files (in /etc/snf-deploy) only by extra passing --save-config.
132 77180645 Dimitris Aragiorgis
133 77180645 Dimitris Aragiorgis
134 77180645 Dimitris Aragiorgis
At this point you can create the virtual cluster defined in nodes.conf with:
135 77180645 Dimitris Aragiorgis
136 77180645 Dimitris Aragiorgis
.. code-block:: console
137 77180645 Dimitris Aragiorgis
138 77180645 Dimitris Aragiorgis
   snf-deploy cluster
139 77180645 Dimitris Aragiorgis
140 77180645 Dimitris Aragiorgis
This will launch KVM Virtual Machines snapshoting the base image you fetched
141 77180645 Dimitris Aragiorgis
before. Their taps will be connected with the already created bridge and their
142 77180645 Dimitris Aragiorgis
primary interface should get the given address.
143 77180645 Dimitris Aragiorgis
144 77180645 Dimitris Aragiorgis
145 77180645 Dimitris Aragiorgis
Setting up the Synnefo DNS
146 77180645 Dimitris Aragiorgis
==========================
147 77180645 Dimitris Aragiorgis
148 77180645 Dimitris Aragiorgis
At this point you should have an up-and-running cluster (either virtual or not)
149 77180645 Dimitris Aragiorgis
with valid hostnames and IPs. Synnefo expects fqdn and therefore a nameserver
150 77180645 Dimitris Aragiorgis
(bind) should be setup in a node inside the cluster. All nodes along with your
151 77180645 Dimitris Aragiorgis
PC should uses this nameserver and search in the corresponding network domain.
152 77180645 Dimitris Aragiorgis
To this end add to your local resolv.conf (please change the default values with
153 77180645 Dimitris Aragiorgis
the ones of your custom configuration):
154 77180645 Dimitris Aragiorgis
155 77180645 Dimitris Aragiorgis
| search <your_domain> synnefo.deploy.local
156 77180645 Dimitris Aragiorgis
| nameserver 192.168.0.1
157 77180645 Dimitris Aragiorgis
158 77180645 Dimitris Aragiorgis
To setup the nameserver in the node specified in setup.conf please run:
159 77180645 Dimitris Aragiorgis
160 77180645 Dimitris Aragiorgis
.. code-block:: console
161 77180645 Dimitris Aragiorgis
162 77180645 Dimitris Aragiorgis
   snf-deploy dns
163 77180645 Dimitris Aragiorgis
164 77180645 Dimitris Aragiorgis
165 77180645 Dimitris Aragiorgis
166 77180645 Dimitris Aragiorgis
Synnefo Installation
167 77180645 Dimitris Aragiorgis
====================
168 77180645 Dimitris Aragiorgis
169 77180645 Dimitris Aragiorgis
At this point you should have a cluster with fqdns and reverse DNS lookups ready
170 77180645 Dimitris Aragiorgis
for synnefo deployment. To sum up we mention all the node requirements for a
171 77180645 Dimitris Aragiorgis
successful synnefo installation:
172 77180645 Dimitris Aragiorgis
173 77180645 Dimitris Aragiorgis
174 77180645 Dimitris Aragiorgis
Node Requirements
175 77180645 Dimitris Aragiorgis
-----------------
176 77180645 Dimitris Aragiorgis
177 77180645 Dimitris Aragiorgis
 - OS: Debian Squeeze
178 77180645 Dimitris Aragiorgis
 - authentication: `root` with known password
179 77180645 Dimitris Aragiorgis
 - primary network interface: `eth0`
180 77180645 Dimitris Aragiorgis
 - primary IP in the same IPv4 subnet and network domain
181 77180645 Dimitris Aragiorgis
 - spare network interfaces: `eth1`, `eth2` (or vlans on `eth0`)
182 77180645 Dimitris Aragiorgis
 - password-less intra-node communication: same `id_rsa/dsa` keys and `authorized_keys`
183 77180645 Dimitris Aragiorgis
184 77180645 Dimitris Aragiorgis
Those are met already in the case of virtual cluster.
185 77180645 Dimitris Aragiorgis
186 77180645 Dimitris Aragiorgis
To check the network configuration (fqdns, connectivity):
187 77180645 Dimitris Aragiorgis
188 77180645 Dimitris Aragiorgis
.. code-block:: console
189 77180645 Dimitris Aragiorgis
190 77180645 Dimitris Aragiorgis
   snf-deploy check
191 77180645 Dimitris Aragiorgis
192 77180645 Dimitris Aragiorgis
WARNING: In case ping fails check ``/etc/nsswitch.conf`` hosts entry and put dns after files!!!
193 77180645 Dimitris Aragiorgis
194 77180645 Dimitris Aragiorgis
To setup the NFS needed among the cluster:
195 77180645 Dimitris Aragiorgis
196 77180645 Dimitris Aragiorgis
.. code-block:: console
197 77180645 Dimitris Aragiorgis
198 77180645 Dimitris Aragiorgis
   snf-deploy nfs
199 77180645 Dimitris Aragiorgis
200 77180645 Dimitris Aragiorgis
To install the Synnefo stack on the existing cluster please run:
201 77180645 Dimitris Aragiorgis
202 77180645 Dimitris Aragiorgis
.. code-block:: console
203 77180645 Dimitris Aragiorgis
204 77180645 Dimitris Aragiorgis
   snf-deploy synnefo -vvv
205 77180645 Dimitris Aragiorgis
206 77180645 Dimitris Aragiorgis
and wait a few seconds.
207 77180645 Dimitris Aragiorgis
208 77180645 Dimitris Aragiorgis
To check for successful installation you can visit from your local PC:
209 77180645 Dimitris Aragiorgis
210 77180645 Dimitris Aragiorgis
| https://accounts.synnefo.deploy.local/im/
211 77180645 Dimitris Aragiorgis
212 77180645 Dimitris Aragiorgis
and login with:
213 77180645 Dimitris Aragiorgis
214 77180645 Dimitris Aragiorgis
| username: dimara@grnet.gr password: lala
215 77180645 Dimitris Aragiorgis
216 77180645 Dimitris Aragiorgis
or whatever you gave in setup.conf and get a small taste of your private cloud setup.
217 77180645 Dimitris Aragiorgis
218 77180645 Dimitris Aragiorgis
Adding a Ganeti Backend
219 77180645 Dimitris Aragiorgis
=======================
220 77180645 Dimitris Aragiorgis
221 77180645 Dimitris Aragiorgis
Assuming that all have worked out fine as expected, you must have astakos,
222 77180645 Dimitris Aragiorgis
pithos, cms, db and mq up and running. Cyclades work too but partially. No
223 77180645 Dimitris Aragiorgis
backend is registered yet. Let's setup one. Currently synnefo supports only
224 77180645 Dimitris Aragiorgis
Ganeti clusters for backends. They have to be created offline and once they
225 77180645 Dimitris Aragiorgis
are up and running must be registered to Cyclades. After 0.12, synnefo supports
226 77180645 Dimitris Aragiorgis
multiple backends. snf-deploy defines backend nodes in nodes.conf and backend
227 77180645 Dimitris Aragiorgis
info in backends.conf.
228 77180645 Dimitris Aragiorgis
229 77180645 Dimitris Aragiorgis
To deploy a backend please use:
230 77180645 Dimitris Aragiorgis
231 77180645 Dimitris Aragiorgis
.. code-block:: console
232 77180645 Dimitris Aragiorgis
233 77180645 Dimitris Aragiorgis
   snf-deploy backend --backend-name ganeti1 -vvv
234 77180645 Dimitris Aragiorgis
235 77180645 Dimitris Aragiorgis
where ganeti1 or whatever refers to the corresponding entry in conf files.
236 77180645 Dimitris Aragiorgis
237 77180645 Dimitris Aragiorgis
To setup backend storage (lvm, drbd or file) and network (bridges, iptables,
238 77180645 Dimitris Aragiorgis
router):
239 77180645 Dimitris Aragiorgis
240 77180645 Dimitris Aragiorgis
.. code-block:: console
241 77180645 Dimitris Aragiorgis
242 77180645 Dimitris Aragiorgis
   snf-deploy backend-storage --backend-name ganeti1
243 77180645 Dimitris Aragiorgis
   snf-deploy backend-network --backend-name ganeti1
244 77180645 Dimitris Aragiorgis
245 77180645 Dimitris Aragiorgis
To test deployment state please visit:
246 77180645 Dimitris Aragiorgis
247 77180645 Dimitris Aragiorgis
.. code-block:: console
248 77180645 Dimitris Aragiorgis
249 77180645 Dimitris Aragiorgis
    https://cyclades.synnefo.deploy.local/ui/
250 77180645 Dimitris Aragiorgis
251 77180645 Dimitris Aragiorgis
and try to create a VM.
252 77180645 Dimitris Aragiorgis
253 77180645 Dimitris Aragiorgis
254 77180645 Dimitris Aragiorgis
snf-deploy as DevTool
255 77180645 Dimitris Aragiorgis
=====================
256 77180645 Dimitris Aragiorgis
257 77180645 Dimitris Aragiorgis
For developers who want to contribute a single node setup is highly recommended.
258 77180645 Dimitris Aragiorgis
snf-deploy tools also supports updating packages that are localy generated. This
259 77180645 Dimitris Aragiorgis
to work please add all \*.deb files in packages directory (see deploy.conf) and
260 77180645 Dimitris Aragiorgis
run:
261 77180645 Dimitris Aragiorgis
262 77180645 Dimitris Aragiorgis
.. code-block:: console
263 77180645 Dimitris Aragiorgis
264 77180645 Dimitris Aragiorgis
   snf-deploy synnefo --update --use-local-packages
265 77180645 Dimitris Aragiorgis
   snf-deploy backend --backend-name ganeti2 --update --use-local-packages
266 77180645 Dimitris Aragiorgis
267 77180645 Dimitris Aragiorgis
268 77180645 Dimitris Aragiorgis
For advanced users there is a possibility to individually run one or more of the
269 77180645 Dimitris Aragiorgis
supported actions. To find out which are those run:
270 77180645 Dimitris Aragiorgis
271 77180645 Dimitris Aragiorgis
.. code-block:: console
272 77180645 Dimitris Aragiorgis
273 77180645 Dimitris Aragiorgis
    snf-deploy run --help