{"id":539,"date":"2018-10-11T13:18:14","date_gmt":"2018-10-11T11:18:14","guid":{"rendered":"https:\/\/www.raulet.net\/WP\/?p=539"},"modified":"2018-10-11T13:31:08","modified_gmt":"2018-10-11T11:31:08","slug":"openstack-all-in-one-aio","status":"publish","type":"post","link":"https:\/\/www.raulet.net\/WP\/openstack-all-in-one-aio\/","title":{"rendered":"Openstack All In One (AIO)"},"content":{"rendered":"<div class=\"row\">\n<div class=\"col-lg-8\">\n<h2>Quickstart: AIO<\/h2>\n<\/div>\n<div class=\"docs-actions\"><i class=\"fa fa-angle-double-left\" title=\"\" data-toggle=\"tooltip\" data-placement=\"top\" data-original-title=\"Previous: User Guide\"><\/i>\u00a0<i class=\"fa fa-angle-double-right\" title=\"\" data-toggle=\"tooltip\" data-placement=\"top\" data-original-title=\"Next: Test environment example\"><\/i>\u00a0Source =\u00a0<a href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html\">https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html<\/a><\/div>\n<div><\/div>\n<\/div>\n<div class=\"row\">\n<div class=\"col-lg-12\">\n<div class=\"docs-body\">\n<div id=\"quickstart-aio\" class=\"section\">\n<p><span id=\"id1\"><\/span>All-in-one (AIO) builds are a great way to perform an OpenStack-Ansible build for:<\/p>\n<ul class=\"simple\" style=\"list-style-type: circle;\">\n<li>a development environment<\/li>\n<li>an overview of how all of the OpenStack services fit together<\/li>\n<li>a simple lab deployment<\/li>\n<\/ul>\n<p>Although AIO builds aren\u2019t recommended for large production deployments, they\u2019re great for smaller proof-of-concept deployments.<\/p>\n<p>Absolute minimum server resources (currently used for gate checks):<\/p>\n<ul class=\"simple\">\n<li>8 vCPU\u2019s<\/li>\n<li>50GB free disk space on the root partition<\/li>\n<li>8GB RAM<\/li>\n<\/ul>\n<p>Recommended server resources:<\/p>\n<ul class=\"simple\">\n<li>CPU\/motherboard that supports\u00a0<a class=\"reference external\" href=\"https:\/\/en.wikipedia.org\/wiki\/Hardware-assisted_virtualization\">hardware-assisted virtualization<\/a><\/li>\n<li>8 CPU Cores<\/li>\n<li>80GB free disk space on the root partition, or 60GB+ on a blank secondary disk. Using a secondary disk requires the use of the<code class=\"docutils literal notranslate\"><span class=\"pre\">bootstrap_host_data_disk_device<\/span><\/code>\u00a0parameter. Please see\u00a0<a class=\"reference internal\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html#building-an-aio\">Building an AIO<\/a>\u00a0for more details.<\/li>\n<li>16GB RAM<\/li>\n<\/ul>\n<p>It\u2019s\u00a0<cite>possible<\/cite>\u00a0to perform AIO builds within a virtual machine for demonstration and evaluation, but your virtual machines will perform poorly. For production workloads, multiple nodes for specific roles are recommended.<\/p>\n<div id=\"building-an-aio\" class=\"section\">\n<h2>Building an AIO<a class=\"headerlink\" title=\"Permalink to this headline\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html#building-an-aio\">\u00b6<\/a><\/h2>\n<p>There are three steps to running an AIO build, with an optional first step should you need to customize your build:<\/p>\n<ul class=\"simple\">\n<li>Configuration\u00a0<em>(this step is optional)<\/em><\/li>\n<li>Install and bootstrap Ansible<\/li>\n<li>Initial host bootstrap<\/li>\n<li>Run playbooks<\/li>\n<\/ul>\n<p>When building an AIO on a new server, it is recommended that all system packages are upgraded and then reboot into the new kernel:<\/p>\n<div class=\"admonition note\">\n<p>Note<\/p>\n<p class=\"last\">Execute the following commands and scripts as the root user.<\/p>\n<p>Note Arnaud pour Ubuntu dans ProxMox :<\/p>\n<pre class=\"\"># sudo add-apt-repository universe\r\n#\u00a0sudo apt install qemu-guest-agent<\/pre>\n<\/div>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre class=\"\"># Ubuntu\r\n# apt-get dist-upgrade\r\n# reboot<\/pre>\n<\/div>\n<\/div>\n<div class=\"admonition note\">\n<div class=\"fa fa-fw fa-check-circle\"><span style=\"font-size: 13px;\">Note :\u00a0<\/span>If you are installing with limited connectivity, please review the\u00a0<em>Installing with limited connectivity<\/em>\u00a0appendix in the\u00a0<a class=\"reference external\" href=\"http:\/\/docs.openstack.org\/project-deploy-guide\/openstack-ansible\/latest\/index.html\">Deployment Guide<\/a>\u00a0before proceeding.<\/div>\n<\/div>\n<p>Start by cloning the OpenStack-Ansible repository and changing into the repository root directory:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre class=\"\"><span class=\"gp\">#<\/span> git clone https:\/\/git.openstack.org\/openstack\/openstack-ansible <span class=\"se\">\\<\/span>\r\n    \/opt\/openstack-ansible\r\n<span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Next switch the applicable branch\/tag to be deployed from. Note that deploying from the head of a branch may result in an unstable build due to changes in flight and upstream OpenStack changes. For a test (for example, not a development) build it is usually best to checkout the latest tagged version.<\/p>\n<pre class=\"literal-block\"># # List all existing tags.\r\n# git tag -l\r\n\r\n# # Checkout the stable branch and find just the latest tag\r\n# git checkout master\r\n# git describe --abbrev=0 --tags\r\n\r\n# # Checkout the latest tag from either method of retrieving the tag.\r\n# git checkout master\r\n<\/pre>\n<div class=\"admonition note\">\n<div class=\"fa fa-fw fa-check-circle\"><\/div>\n<p>Note<\/p>\n<p class=\"last\">The Stein release is only compatible with Ubuntu 16.04 (Xenial Xerus), Ubuntu 18.04 (Bionic Beaver) Centos 7 and openSUSE Leap 42.X.<\/p>\n<\/div>\n<p>By default the scripts deploy all OpenStack services with sensible defaults for the purpose of a gate check, development or testing system.<\/p>\n<p>Review the\u00a0<a class=\"reference external\" href=\"https:\/\/git.openstack.org\/cgit\/openstack\/openstack-ansible\/tree\/tests\/roles\/bootstrap-host\/defaults\/main.yml\">bootstrap-host role defaults<\/a>\u00a0file to see various configuration options. Deployers have the option to change how the host is bootstrapped. This is useful when you wish the AIO to make use of a secondary data disk, or when using this role to bootstrap a multi-node development environment.<\/p>\n<p>The bootstrap script is pre-set to pass the environment variable\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">BOOTSTRAP_OPTS<\/span><\/code>\u00a0as an additional option to the bootstrap process. For example, if you wish to set the bootstrap to re-partition a specific secondary storage device (<code class=\"docutils literal notranslate\"><span class=\"pre\">\/dev\/sdb<\/span><\/code>), which will erase all of the data on the device, then execute:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">BOOTSTRAP_OPTS<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"bootstrap_host_data_disk_device=sdb\"<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>By default the filesystem type will be set to ext4, if you want another type of filesystem to be used, just use something similar to the following:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">BOOTSTRAP_OPTS<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"bootstrap_host_data_disk_device=sdb bootstrap_host_data_disk_fs_type=xfs\"<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Additional options may be implemented by simply concatenating them with a space between each set of options, for example:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">BOOTSTRAP_OPTS<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"bootstrap_host_data_disk_device=sdb\"<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">BOOTSTRAP_OPTS<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"<\/span><span class=\"si\">${<\/span><span class=\"nv\">BOOTSTRAP_OPTS<\/span><span class=\"si\">}<\/span><span class=\"s2\"> bootstrap_host_ubuntu_repo=http:\/\/mymirror.example.com\/ubuntu\"<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>You may wish to change the role fetch mode. Options are\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">galaxy<\/span><\/code>\u00a0and\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">git-clone<\/span><\/code>. The default for this option is\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">galaxy<\/span><\/code>.<\/p>\n<dl class=\"docutils\">\n<dt>options:<\/dt>\n<dd>\n<table class=\"first last docutils field-list\" frame=\"void\" rules=\"none\">\n<colgroup>\n<col class=\"field-name\" \/>\n<col class=\"field-body\" \/><\/colgroup>\n<tbody valign=\"top\">\n<tr class=\"field-odd field\">\n<th class=\"field-name\">galaxy:<\/th>\n<td class=\"field-body\">Resolve all role dependencies using the\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">ansible-galaxy<\/span><\/code>\u00a0resolver<\/td>\n<\/tr>\n<tr class=\"field-even field\">\n<th class=\"field-name\">git-clone:<\/th>\n<td class=\"field-body\">Clone all of the role dependencies using native git<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/dd>\n<dt>Notes:<\/dt>\n<dd>When doing role development it may be useful to set\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">ANSIBLE_ROLE_FETCH_MODE<\/span><\/code>\u00a0to\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">git-clone<\/span><\/code>. This will provide you the ability to develop roles within the environment by modifying, patching, or committing changes using an intact git tree while the\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">galaxy<\/span><\/code>option scrubs the\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">.git<\/span><\/code>\u00a0directory when it resolves a dependency.<\/dd>\n<\/dl>\n<div class=\"highlight-bash notranslate\">\n<div class=\"highlight\">\n<pre>$ <span class=\"nb\">export<\/span> <span class=\"nv\">ANSIBLE_ROLE_FETCH_MODE<\/span><span class=\"o\">=<\/span>git-clone\r\n<\/pre>\n<\/div>\n<\/div>\n<p>The next step is to bootstrap Ansible and the Ansible roles for the development environment. Deployers can customize roles by adding variables to override the defaults in each role (see\u00a0<a class=\"reference internal\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/reference\/configuration\/using-overrides.html#user-overrides\"><span class=\"std std-ref\">Overriding default configuration<\/span><\/a>). Run the following to bootstrap Ansible:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> scripts\/bootstrap-ansible.sh\r\n<\/pre>\n<\/div>\n<\/div>\n<dl class=\"docutils\">\n<dt>Notes:<\/dt>\n<dd>\n<p class=\"first\">You might encounter an error while running the Ansible bootstrap script when building some of the Python extensions (like pycrypto) which says:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"go\">configure: error: cannot run C compiled programs.<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>The reason of this failure might be resulting from a noexec mount flag used for the filesystem associated with \/tmp which you can check by running the following command:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> mount <span class=\"p\">|<\/span> grep <span class=\"k\">$(<\/span>df \/tmp <span class=\"p\">|<\/span> tail -n +2 <span class=\"p\">|<\/span> awk <span class=\"s1\">'{print $1}'<\/span><span class=\"k\">)<\/span> <span class=\"p\">|<\/span> grep noexec\r\n<\/pre>\n<\/div>\n<\/div>\n<p>If this is the case you can specify an alternate path which does not have this mount option set:<\/p>\n<div class=\"last highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nv\">TMPDIR<\/span><span class=\"o\">=<\/span>\/var\/tmp scripts\/bootstrap-ansible.sh\r\n<\/pre>\n<\/div>\n<\/div>\n<\/dd>\n<\/dl>\n<p>In order for all the services to run, the host must be prepared with the appropriate disks partitioning, packages, network configuration and configurations for the OpenStack Deployment.<\/p>\n<p>For the default AIO scenario, this preparation is completed by executing:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> scripts\/bootstrap-aio.sh\r\n<\/pre>\n<\/div>\n<\/div>\n<p>If you wish to use a different scenario, for example, the Ceph scenario, execute the following:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">export<\/span> <span class=\"nv\">SCENARIO<\/span><span class=\"o\">=<\/span><span class=\"s1\">'ceph'<\/span>\r\n<span class=\"gp\">#<\/span> scripts\/bootstrap-aio.sh\r\n<\/pre>\n<\/div>\n<\/div>\n<p><strong>Tested Scenarios<\/strong><\/p>\n<p>To add OpenStack Services over and above the\u00a0<a class=\"reference external\" href=\"https:\/\/git.openstack.org\/cgit\/openstack\/openstack-ansible\/tree\/tests\/bootstrap-aio.yml\">bootstrap-aio default services<\/a>\u00a0for the applicable scenario, copy the\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">conf.d<\/span><\/code>\u00a0files with the\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">.aio<\/span><\/code>\u00a0file extension into\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">\/etc\/openstack_deploy<\/span><\/code>\u00a0and rename then to\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">.yml<\/span><\/code>\u00a0files. For example, in order to enable the OpenStack Telemetry services, execute the following:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\/\r\n<span class=\"gp\">#<\/span> cp etc\/openstack_deploy\/conf.d\/<span class=\"o\">{<\/span>aodh,gnocchi,ceilometer<span class=\"o\">}<\/span>.yml.aio \/etc\/openstack_deploy\/conf.d\/\r\n<span class=\"gp\">#<\/span> <span class=\"k\">for<\/span> f in <span class=\"k\">$(<\/span>ls -1 \/etc\/openstack_deploy\/conf.d\/*.aio<span class=\"k\">)<\/span><span class=\"p\">;<\/span> <span class=\"k\">do<\/span> mv -v <span class=\"si\">${<\/span><span class=\"nv\">f<\/span><span class=\"si\">}<\/span> <span class=\"si\">${<\/span><span class=\"nv\">f<\/span><span class=\"p\">%.*<\/span><span class=\"si\">}<\/span><span class=\"p\">;<\/span> <span class=\"k\">done<\/span>\r\n<\/pre>\n<\/div>\n<\/div>\n<p>To add any global overrides, over and above the defaults for the applicable scenario, edit<code class=\"docutils literal notranslate\"><span class=\"pre\">\/etc\/openstack_deploy\/user_variables.yml<\/span><\/code>. See the\u00a0<a class=\"reference external\" href=\"http:\/\/docs.openstack.org\/project-deploy-guide\/openstack-ansible\/latest\/index.html\">Deployment Guide<\/a>\u00a0for more details.<\/p>\n<p>Finally, run the playbooks by executing:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\/playbooks\r\n<span class=\"gp\">#<\/span> openstack-ansible setup-hosts.yml\r\n<span class=\"gp\">#<\/span> openstack-ansible setup-infrastructure.yml\r\n<span class=\"gp\">#<\/span> openstack-ansible setup-openstack.yml\r\n<\/pre>\n<\/div>\n<\/div>\n<p>The installation process will take a while to complete, but here are some general estimates:<\/p>\n<ul class=\"simple\">\n<li>Bare metal systems with SSD storage: ~ 30-50 minutes<\/li>\n<li>Virtual machines with SSD storage: ~ 45-60 minutes<\/li>\n<li>Systems with traditional hard disks: ~ 90-120 minutes<\/li>\n<\/ul>\n<p>Once the playbooks have fully executed, it is possible to experiment with various settings changes in\u00a0<code class=\"docutils literal notranslate\"><span class=\"pre\">\/etc\/openstack_deploy\/user_variables.yml<\/span><\/code>\u00a0and only run individual playbooks. For example, to run the playbook for the Keystone service, execute:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\/playbooks\r\n<span class=\"gp\">#<\/span> openstack-ansible os-keystone-install.yml\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"rebooting-an-aio\" class=\"section\">\n<h2>Rebooting an AIO<a class=\"headerlink\" title=\"Permalink to this headline\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html#rebooting-an-aio\">\u00b6<\/a><\/h2>\n<p>As the AIO includes all three cluster members of MariaDB\/Galera, the cluster has to be re-initialized after the host is rebooted.<\/p>\n<p>This is done by executing the following:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\/playbooks\r\n<span class=\"gp\">#<\/span> openstack-ansible -e <span class=\"nv\">galera_ignore_cluster_state<\/span><span class=\"o\">=<\/span><span class=\"nb\">true<\/span> galera-install.yml\r\n<\/pre>\n<\/div>\n<\/div>\n<p>If this fails to get the database cluster back into a running state, then please make use of the\u00a0<a class=\"reference external\" href=\"http:\/\/docs.openstack.org\/openstack-ansible\/latest\/admin\/maintenance-tasks\/galera.html\">Galera Cluster Recovery<\/a>\u00a0section in the operations guide.<\/p>\n<\/div>\n<div id=\"rebuilding-an-aio\" class=\"section\">\n<h2>Rebuilding an AIO<a class=\"headerlink\" title=\"Permalink to this headline\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html#rebuilding-an-aio\">\u00b6<\/a><\/h2>\n<p>Sometimes it may be useful to destroy all the containers and rebuild the AIO. While it is preferred that the AIO is entirely destroyed and rebuilt, this isn\u2019t always practical. As such the following may be executed instead:<\/p>\n<div class=\"highlight-shell-session notranslate\">\n<div class=\"highlight\">\n<pre><span class=\"gp\">#<\/span> <span class=\"c1\"># Move to the playbooks directory.<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"nb\">cd<\/span> \/opt\/openstack-ansible\/playbooks\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># Destroy all of the running containers.<\/span>\r\n<span class=\"gp\">#<\/span> openstack-ansible lxc-containers-destroy.yml\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># On the host stop all of the services that run locally and not<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"c1\">#  within a container.<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"k\">for<\/span> i in <span class=\"se\">\\<\/span>\r\n       <span class=\"k\">$(<\/span>ls \/etc\/init <span class=\"se\">\\<\/span>\r\n         <span class=\"p\">|<\/span> grep -e <span class=\"s2\">\"nova\\|swift\\|neutron\\|cinder\"<\/span> <span class=\"se\">\\<\/span>\r\n         <span class=\"p\">|<\/span> awk -F<span class=\"s1\">'.'<\/span> <span class=\"s1\">'{print $1}'<\/span><span class=\"k\">)<\/span><span class=\"p\">;<\/span> <span class=\"k\">do<\/span> <span class=\"se\">\\<\/span>\r\n    service <span class=\"nv\">$i<\/span> stop<span class=\"p\">;<\/span> <span class=\"se\">\\<\/span>\r\n  <span class=\"k\">done<\/span>\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># Uninstall the core services that were installed.<\/span>\r\n<span class=\"gp\">#<\/span> <span class=\"k\">for<\/span> i in <span class=\"k\">$(<\/span>pip freeze <span class=\"p\">|<\/span> grep -e <span class=\"s2\">\"nova\\|neutron\\|keystone\\|swift\\|cinder\"<\/span><span class=\"k\">)<\/span><span class=\"p\">;<\/span> <span class=\"k\">do<\/span> <span class=\"se\">\\<\/span>\r\n    pip uninstall -y <span class=\"nv\">$i<\/span><span class=\"p\">;<\/span> <span class=\"k\">done<\/span>\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># Remove crusty directories.<\/span>\r\n<span class=\"gp\">#<\/span> rm -rf \/openstack \/etc\/<span class=\"o\">{<\/span>neutron,nova,swift,cinder<span class=\"o\">}<\/span> <span class=\"se\">\\<\/span>\r\n         \/var\/log\/<span class=\"o\">{<\/span>neutron,nova,swift,cinder<span class=\"o\">}<\/span>\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># Remove the pip configuration files on the host<\/span>\r\n<span class=\"gp\">#<\/span> rm -rf \/root\/.pip\r\n\r\n<span class=\"gp\">#<\/span> <span class=\"c1\"># Remove the apt package manager proxy<\/span>\r\n<span class=\"gp\">#<\/span> rm \/etc\/apt\/apt.conf.d\/00apt-cacher-proxy\r\n<\/pre>\n<\/div>\n<\/div>\n<p>Should an existing AIO environment need to be reinstalled, the most efficient method is to destroy the host operating system and start over. For this reason, AIOs are best run inside of some form of virtual machine or cloud guest.<\/p>\n<\/div>\n<div id=\"reference-diagram-for-an-aio-build\" class=\"section\">\n<h2>Reference Diagram for an AIO Build<a class=\"headerlink\" title=\"Permalink to this headline\" href=\"https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html#reference-diagram-for-an-aio-build\">\u00b6<\/a><\/h2>\n<p>Here is a basic diagram that attempts to illustrate what the resulting AIO deployment looks like.<\/p>\n<p>This diagram is not to scale and is not even 100% accurate, this diagram was built for informational purposes only and should\u00a0<strong>ONLY<\/strong>\u00a0be used as such.<\/p>\n<div class=\"highlight-text notranslate\">\n<div class=\"highlight\">\n<pre class=\"\">          -------&gt;[ ETH0 == Public Network ]\r\n          |\r\n          V                        [  *   ] Socket Connections\r\n[ HOST MACHINE ]                   [ &lt;&gt;v^ ] Network Connections\r\n  *       ^  *\r\n  |       |  |-------------------------------------------------------\r\n  |       |                                                         |\r\n  |       |----------------&gt;[ HAProxy ]                             |\r\n  |                                 ^                               |\r\n  |                                 |                               |\r\n  |                                 V                               |\r\n  |                          (BR-Interfaces)&lt;------                 |\r\n  |                                  ^     *      |                 |\r\n  *-[ LXC ]*--*----------------------|-----|------|----|            |\r\n  |           |                      |     |      |  | |            |\r\n  |           |                      |     |      |  | |            |\r\n  |           |                      |     |      |  | |            |\r\n  |           |                      |     |      V  * |            |\r\n  |           *                      |     |   [ Galera x3 ]        |\r\n  |        [ Memcached ]&lt;------------|     |           |            |\r\n  *-------*[ Rsyslog ]&lt;--------------|--|  |           *            |\r\n  |        [ Repos Server x3 ]&lt;------|  ---|--&gt;[ RabbitMQ x3 ]      |\r\n  |        [ Horizon x2 ]&lt;-----------|  |  |                        |\r\n  |        [ Nova api ec2 ]&lt;---------|--|  |                        |\r\n  |        [ Nova api os ]&lt;----------|-&gt;|  |                        |\r\n  |        [ Nova console ]&lt;---------|  |  |                        |\r\n  |        [ Nova Cert ]&lt;------------|-&gt;|  |                        |\r\n  |        [ Cinder api ]&lt;-----------|-&gt;|  |                        |\r\n  |        [ Glance api ]&lt;-----------|-&gt;|  |                        |\r\n  |        [ Heat apis ]&lt;------------|-&gt;|  | [ Loop back devices ]*-*\r\n  |        [ Heat engine ]&lt;----------|-&gt;|  |    \\        \\          |\r\n  | ------&gt;[ Nova api metadata ]     |  |  |    { LVM }  { XFS x3 } |\r\n  | |      [ Nova conductor ]&lt;-------|  |  |       *         *      |\r\n  | |-----&gt;[ Nova scheduler ]--------|-&gt;|  |       |         |      |\r\n  | |      [ Keystone x3 ]&lt;----------|-&gt;|  |       |         |      |\r\n  | | |---&gt;[ Neutron agents ]*-------|--|---------------------------*\r\n  | | |    [ Neutron server ]&lt;-------|-&gt;|          |         |      |\r\n  | | | |-&gt;[ Swift proxy ]&lt;-----------  |          |         |      |\r\n  *-|-|-|-*[ Cinder volume ]*----------------------*         |      |\r\n  | | | |                               |                    |      |\r\n  | | | -----------------------------------------            |      |\r\n  | | ----------------------------------------- |            |      |\r\n  | |          -------------------------|     | |            |      |\r\n  | |          |                              | |            |      |\r\n  | |          V                              | |            *      |\r\n  ----&gt;[ Compute ]*[ Neutron linuxbridge ]&lt;---| |-&gt;[ Swift storage ]-<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Quickstart: AIO \u00a0\u00a0Source =\u00a0https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html All-in-one (AIO) builds are a great way to perform an OpenStack-Ansible build for: a development environment [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[9],"tags":[],"class_list":["post-539","post","type-post","status-publish","format-standard","hentry","category-openstack"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"arnaud","author_link":"https:\/\/www.raulet.net\/WP\/author\/arnaud\/"},"uagb_comment_info":0,"uagb_excerpt":"Quickstart: AIO \u00a0\u00a0Source =\u00a0https:\/\/docs.openstack.org\/openstack-ansible\/latest\/user\/aio\/quickstart.html All-in-one (AIO) builds are a great way to perform an OpenStack-Ansible build for: a development environment [&hellip;]","_links":{"self":[{"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/posts\/539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/comments?post=539"}],"version-history":[{"count":8,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/posts\/539\/revisions"}],"predecessor-version":[{"id":543,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/posts\/539\/revisions\/543"}],"wp:attachment":[{"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/media?parent=539"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/categories?post=539"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.raulet.net\/WP\/wp-json\/wp\/v2\/tags?post=539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}