Statistics
| Branch: | Tag: | Revision:

root / docs / snf-deploy.rst @ f6d5af41

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