blob: 9519ed92415978cc42630ff2ce7373fd085d910e [file] [log] [blame]
Mohammed Nasera5467342024-04-30 00:34:16 -04001###########
2Quick Start
3###########
4
5There are several ways that you can quickly get started with Atmosphere to explore
6it's capabilities.
7
8**********
9Deployment
10**********
11
12This section covers all of the different ways you can deploy a quick start
13environment for Atmosphere.
14
15.. admonition:: Testing & Development Only
16 :class: info
17
18 The quick start installation is not for production use, it's perfect
19 for testing and development.
20
21All-in-one
22==========
23
24The easiest way to get started with Atmosphere is to deploy the all-in-one
25installation. This will install an entire stack of Atmosphere, with Ceph
26and all the OpenStack services inside a single machine.
27
28.. admonition:: Non-reversible Changes
29 :class: warning
30
31 The all-in-one will fully take-over the machine by making system-level
32 changes. It's recommended to run it inside a virtual machine or a
33 physical machine that can be dedicated to this purpose.
34
35In order to get started, you'll need a **Ubuntu 22.04** system with the
36following minimum system requirements:
37
38- Cores: 8 threads (or vCPUs)
39- Memory: 32GB
40
41If you're looking to run Kubernetes clusters, you'll need more memory
42for the workloads, it following minimum is recommended (but more memory
43is always better!):
44
45- Cores: 16 threads (or vCPUs)
46- Memory: 64GB
47
48.. admonition:: Nested Virtualization
49 :class: warning
50
51 If you're running this inside a virtual machine, it is **extremely**
52 important that the virtual machines supported nested virtualization,
53 otherwise the performance of the VMs will be un-usable.
54
55You'll need to start all of the necessary dependencies first:
56
57.. code-block:: bash
58
59 $ sudo apt-get update
Mohammed Naserf3152222024-07-19 00:40:24 -040060 $ sudo apt-get install git tox
Mohammed Nasera5467342024-04-30 00:34:16 -040061
62Once done, you can clone the repository locally and switch to the
63``atmosphere`` directory:
64
65.. code-block:: bash
66
67 $ git clone https://github.com/vexxhost/atmosphere.git
68 $ cd atmosphere
69
70Once you're in the directory, you can deploy the all-in-one environment
71by running the following command:
72
73.. code-block:: bash
74
75 $ cd atmosphere
Mohammed Naserf3152222024-07-19 00:40:24 -040076 $ sudo tox -e molecule-aio-ovn
77
78If you want to use the ML2/Open vSwitch plugin, you can run the following
79command:
80
81.. code-block:: bash
82
83 $ sudo tox -e molecule-aio-openvswitch
Mohammed Nasera5467342024-04-30 00:34:16 -040084
85Once the deployment is done, it will have a full deployment of all services
86inside the same host, so you can use the cloud from the same machine by
87referencing the usage section.
88
89Multi-node
90==========
91
92The multi-node intends to provide the most near-production experience possible,
93as it is architected purely towards production-only environments. In order to
94get a quick production-ready experience of Atmosphere, this will deploy a full
95stack of Atmosphere, with Ceph and all the OpenStack services across multiple
96machines in a lab environment.
97
98OpenStack
99---------
100
101You can deploy Atmosphere on top of an existing OpenStack environment where many
102virtual machines will be deployed in the same way that you'd have multiple
103physical machines in a datacenter for a production environment.
104
105The quick start is powered by Molecule and it is used in continuous integration
106running against the VEXXHOST public cloud so that would be an easy target to
107use to try it out.
108
109ou will need the following quotas set up in your cloud account:
110
111* 8 instances
112* 32 cores
113* 128GB RAM
114* 360GB storage
115
116These resources will be used to create a total of 8 instances broken up as
117follows:
118
119* 3 Controller nodes
120* 3 Ceph OSD nodes
121* 2 Compute nodes
122
123First of all, you'll have to make sure you clone the repository locally to your
124system with `git` by running the following command:
125
126.. code-block:: console
127
128 $ git clone https://github.com/vexxhost/atmosphere
129
Mohammed Naserf3152222024-07-19 00:40:24 -0400130You will need ``tox`` installed on your operating system. You will need to make
Mohammed Nasera5467342024-04-30 00:34:16 -0400131sure that you have the appropriate OpenStack environment variables set (such
132as ``OS_CLOUD`` or ``OS_AUTH_URL``, etc.). You can also use the following
133environment variables to tweak the behaviour of the Heat stack that is created:
134
135* ``ATMOSPHERE_STACK_NAME``: The name of the Heat stack to be created (defaults to
136 `atmosphere`).
137* ``ATMOSPHERE_PUBLIC_NETWORK``: The name of the public network to attach floating
138 IPs from (defaults to ``public``).
139* ``ATMOSPHERE_IMAGE``: The name or UUID of the image to be used for deploying the
140 instances (defaults to ``Ubuntu 20.04.3 LTS (x86_64) [2021-10-04]``).
141* ``ATMOSPHERE_INSTANCE_TYPE``(Deprecated): The instance type used to deploy all of the
142 different instances.(It doesn't have its own default value.)
143 This has been deprecated from v1.4.0. You can configure the instance type per a
144 machine role using ``ATMOSPHERE_CONTROLLER_INSTANCE_TYPE``,
145 ``ATMOSPHERE_COMPUTE_INSTANCE_TYPE``, and ``ATMOSPHERE_STORAGE_INSTANCE_TYPE``
146 variables. For backwards compatibility, if variables specific to the machine roles
147 are not set and ``ATMOSPHERE_INSTANCE_TYPE`` is set, ``ATMOSPHERE_INSTANCE_TYPE`` value
148 is used.
149* ``ATMOSPHERE_CONTROLLER_INSTANCE_TYPE``: The instance type used to deploy controller
150 instances (defaults to ``v3-standard-16``).
151* ``ATMOSPHERE_COMPUTE_INSTANCE_TYPE``: The instance type used to deploy compute
152 instances (defaults to ``v3-standard-4``).
153* ``ATMOSPHERE_STORAGE_INSTANCE_TYPE``: The instance type used to deploy storage
154 instances (defaults to ``v3-standard-4``).
155* ``ATMOSPHERE_NAMESERVERS``: A comma-separated list of nameservers to be used for
156 the instances (defaults to ``1.1.1.1``).
157* ``ATMOSPHERE_USERNAME``: The username what is used to login into the instances (
158 defaults to ``ubuntu``).
159* ``ATMOSPHERE_DNS_SUFFIX_NAME``: The DNS domainname that is used for the API and
160 Horizon. (defaults to ``nip.io``).
161* ``ATMOSPHERE_ACME_SERVER``: The ACME server, currenly this is from LetsEncrypt,
162 with StepCA from SmallStep it is possible to run a internal ACME server.
163 The CA of that ACME server should be present in the instance image.
164* ``ATMOSPHERE_ANSIBLE_VARS_PATH``: The path for ansible group_vars and host_vars.
165 This to build a multinode development cluster with own configs, that are not
166 generated by molecule. This way you can test your configs before you bring
167 them to production.
168
Mohammed Naserf3152222024-07-19 00:40:24 -0400169Once you're ready to get started, you can run the following command to build
170the Heat stack:
Mohammed Nasera5467342024-04-30 00:34:16 -0400171
172.. code-block:: console
173
Mohammed Naserf3152222024-07-19 00:40:24 -0400174 $ tox -e molecule-venv -- converge
Mohammed Nasera5467342024-04-30 00:34:16 -0400175
176This will create a Heat stack with the name `atmosphere` and start deploying
177the cloud. Once it's complete, you can login to any of the systems by using
178the `login` sub-command. For exampel, to login to the first controller node,
179you can run the following:
180
181.. code-block:: console
182
Mohammed Naserf3152222024-07-19 00:40:24 -0400183 $ tox -e molecule-venv -- login -h ctl1
Mohammed Nasera5467342024-04-30 00:34:16 -0400184
185At this point, you can proceed to the usage section to see how to interact
186with the cloud.
187
188Once you're done with your environment and you need to tear it down, you can
189use the `destroy` sub-command:
190
191.. code-block:: console
192
Mohammed Naserf3152222024-07-19 00:40:24 -0400193 $ tox -e molecule-venv -- destroy
Mohammed Nasera5467342024-04-30 00:34:16 -0400194
195For more information about the different commands used by Molecule, you can
196refer to the Molecule documentation.
197
198*****
199Usage
200*****
201
202Once the deployment is done, you can either use the CLI to interact with
203the OpenStack environment, or you can access the Horizon dashboard.
204
205For the CLI, you can ``source /root/openrc`` and then use the ``openstack``
206CLI. For example, if you want to list the networks, you can run the
207following command:
208
209.. code-block:: console
210
211 $ source /root/openrc
212 $ openstack network list
213
214For the Horizon dashboard, you can find the URL to access it by running
215the following command:
216
217.. code-block:: console
218
219 $ kubectl -n openstack get ingress/dashboard -ojsonpath='{.spec.rules[0].host}'
220
221You can find the credentials to login to the dashboard reading the
222`/root/openrc` file. You can use the following variables to match
223the credentials:
224
225- Username: ``OS_USERNAME``
226- Password: ``OS_PASSWORD``
227- Domain: ``OS_USER_DOMAIN_NAME``