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 |