在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack

在本指南中,您将学习如何使用以下方法部署多合一OpenStack: Kolla-Ansible 在Ubuntu 18.04上。

Kolla提供Docker容器和Ansible剧本来满足Kolla的使命。 Kolla的使命是为生产OpenStack云提供可生产的容器和部署工具。它使经验最少的操作员可以快速部署OpenStack,并且随着经验的增长,可以修改OpenStack配置以适合操作员的确切要求。

在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack

系统要求

以下是使用Kolla-Ansible部署AIO OpenStack的建议最低要求:

  • 2个(或更多)网络接口。
  • 至少8GB主存
  • 至少40gb磁盘空间

以下是我们的部署系统详细信息;

介面2个网络接口:enp1s0:192.168.122.216/24enp6s0:未分配IP地址
内存8 GB
虚拟CPU2
存储/ dev / vda(根文件系统),/:50G / dev / vda5(卷组,openstack_cinder):50G
虚拟化平台虚拟机
操作系统Ubuntu 18.04 LTS
用户具有sudo权限的非root用户

您可以提供尽可能多的资源,因为拥有的资源越多,堆栈的性能就越好。

注意:我们以具有sudo特权的非root用户(在我们的情况下为koromicha)运行安装。

在Ubuntu 18.04上安装必需的软件包

在继续之前,需要安装许多必需的软件包。

更新和升级系统软件包

sudo apt update
sudo apt upgrade

安装所需的软件包;

sudo apt install python3-dev python3-venv libffi-dev gcc libssl-dev git

创建用于部署Kolla-ansible的虚拟环境。为了避免系统软件包和Kolla支持的软件包之间发生冲突,建议在虚拟环境中安装Kolla支持的软件包。

您可以通过执行以下命令来创建虚拟环境。确保替换虚拟环境的路径。

python3 -m venv $HOME/kolla-openstack

接下来,激活您的虚拟环境;

source $HOME/kolla-openstack/bin/activate

激活可启动Kolla的虚拟环境后,您的shell提示将更改。看到我的shell提示符;

(kolla-openstack) [email protected]:~$

升级点数

pip install -U pip

在Ubuntu 18.04上安装Ansible

从虚拟环境安装Ansible。如果您注销了虚拟环境,则始终可以找到激活它的路径;否则,请转至下一步。

source $HOME/kolla-openstack/bin/activate

接下来,安装Ansible。 Kolla至少需要Ansible 2.8 取决于 2.9

pip install 'ansible<2.10'

使用以下可调参数在主目录上创建一个ansible配置文件;

vim $HOME/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100

在Ubuntu 18.04上安装Kolla-ansible

使用上述虚拟环境中的pip在Ubuntu 18.04上安装Kolla-ansible;

source $HOME/kolla-openstack/bin/activate
pip install kolla-ansible

配置Kolla-ansible以进行多合一OpenStack部署

接下来,创建Kolla配置目录;

sudo mkdir /etc/kolla

将Kolla配置目录的所有权更新为与您一起激活了Koll-ansible部署虚拟环境的用户。

sudo chown $USER:$USER /etc/kolla

复制主要的Kolla配置文件, globals.yml 和OpenStack服务密码文件 passwords.yml 进入上方的Kolla配置目录 虚拟环境

cp $HOME/kolla-openstack/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/

将可用于Kolla的部署清单复制到当前工作目录。在本教程中,我们将使用Kolla-ansible部署一体化OpenStack。因此,复制多合一的库存清单文件。

cp $HOME/kolla-openstack/share/kolla-ansible/ansible/inventory/all-in-one .

定义Kolla-Ansible全球部署选项

打开 globals.yml 配置文件并定义AIO Kolla全局部署选项;

vim /etc/kolla/globals.yml

以下是我们为AIO OpenStack部署启用的基本选项。

grep -vE '^$|^#' /etc/kolla/globals.yml
---
config_strategy: "COPY_ALWAYS"
kolla_base_distro: "ubuntu"
kolla_install_type: "binary"
openstack_release: "ussuri"
kolla_internal_vip_address: "192.168.122.206"
kolla_internal_fqdn: "{{ kolla-openstack.kifarunix-demo.com }}"
kolla_external_vip_address: "{{ kolla_internal_vip_address }}"
kolla_external_fqdn: "{{ kolla_internal_fqdn }}"
network_interface: "enp1s0"
neutron_external_interface: "enp6s0"
neutron_plugin_agent: "openvswitch"
enable_haproxy: "yes"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
keystone_token_provider: 'fernet'
cinder_volume_group: "openstack_cinder"
nova_compute_virt_type: "qemu"

请注意,我们为openstack启用了煤渣块存储,并定义了现有卷组的名称。

sudo vgs
  VG               #PV #LV #SN Attr   VSize   VFree  
  openstack_cinder   1   0   0 wz--n- <53.06g <53.06g

参考 Kolla支持的文档指南 了解有关上面使用的全局选项的更多信息。该配置也受到高度评价。仔细阅读每个选项的注释,以了解特定选项的含义。

生成Kolla密码

考拉 passwords.yml 配置文件存储各种OpenStack服务密码。您可以使用Kolla-ansible自动生成密码 kolla-genpwd 在您的虚拟环境中。

确保您的虚拟环境已激活

source $HOME/kolla-openstack/bin/activate

接下来,生成密码;

kolla-genpwd

所有生成的密码将填充到 /etc/kolla/passwords.yml 文件。

配置多合一OpenStack部署清单

现在,您已经有了我们的部署清单。由于我们正在运行多合一部署,因此我们将保留在 all-in-one 库存文件。

在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack

由于一切都已设置好,因此您现在可以开始使用可用于Kolla的剧本来部署OpenStack。

同样,请确保您的虚拟环境已激活。

source $HOME/kolla-openstack/bin/activate

在使用以下方法部署容器之前,请引导您的localhost配置 bootstrap-servers 子命令。

kolla-ansible -i all-in-one bootstrap-servers

以下只是bootstrapping命令的一小段;

...
TASK [baremetal : Restart docker] ******************************************************************************************************************************************
changed: [localhost]

TASK [baremetal : Enable docker] *******************************************************************************************************************************************
ok: [localhost]

TASK [baremetal : Stop time service] ***************************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : Stop time service] ***************************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : Synchronizing time one-time] *****************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : Start time sync service] *********************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : Start time sync service] *********************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : Change state of selinux] *********************************************************************************************************************************
skipping: [localhost]

TASK [baremetal : include_tasks] *******************************************************************************************************************************************
skipping: [localhost]

PLAY RECAP *****************************************************************************************************************************************************************
localhost                  : ok=39   changed=16   unreachable=0    failed=0    skipped=32   rescued=0    ignored=0  

这是bootstrap命令的工作;

  • 定制 /etc/hosts
  • 创建用户和组
  • Kolla配置目录
  • 软件包安装和移除
  • Docker引擎的安装和配置
  • 禁用防火墙
  • 创建Python虚拟环境
  • Apparmor的配置
  • SELinux的配置
  • NTP守护程序的配置

运行部署前检查;

kolla-ansible -i all-in-one prechecks

如果一切正常,请继续在Ubuntu 18.04上使用Kolla-ansible部署多合一OpenStack。

kolla-ansible -i all-in-one deploy

该过程可能需要一段时间,因为它涉及为不同的OpenStack服务构建容器。

如果一切顺利,您应该获得0个失败的任务;

...
PLAY RECAP *****************************************************************************************************************************************************************
localhost                  : ok=366  changed=72   unreachable=0    failed=0    skipped=245  rescued=0    ignored=0

列出正在运行的OpenStack Docker容器

部署完成后,您可以列出正在运行的OpenStack Docker容器。

docker ps
CONTAINER ID        IMAGE                                                  COMMAND                  CREATED             STATUS              PORTS               NAMES
c6b248403560        kolla/ubuntu-binary-horizon:ussuri                     "dumb-init --single-…"   8 minutes ago       Up 8 minutes                            horizon
2beb267813bf        kolla/ubuntu-binary-heat-engine:ussuri                 "dumb-init --single-…"   10 minutes ago      Up 10 minutes                           heat_engine
5870b0231ebd        kolla/ubuntu-binary-heat-api-cfn:ussuri                "dumb-init --single-…"   10 minutes ago      Up 10 minutes                           heat_api_cfn
66f4ed832ddd        kolla/ubuntu-binary-heat-api:ussuri                    "dumb-init --single-…"   11 minutes ago      Up 11 minutes                           heat_api
f2bb8fada9a7        kolla/ubuntu-binary-neutron-metadata-agent:ussuri      "dumb-init --single-…"   14 minutes ago      Up 14 minutes                           neutron_metadata_agent
f9d5336ac7c6        kolla/ubuntu-binary-neutron-l3-agent:ussuri            "dumb-init --single-…"   14 minutes ago      Up 14 minutes                           neutron_l3_agent
9d03c6194140        kolla/ubuntu-binary-neutron-dhcp-agent:ussuri          "dumb-init --single-…"   14 minutes ago      Up 14 minutes                           neutron_dhcp_agent
a19896229e01        kolla/ubuntu-binary-neutron-openvswitch-agent:ussuri   "dumb-init --single-…"   15 minutes ago      Up 15 minutes                           neutron_openvswitch_agent
4fb2a327014a        kolla/ubuntu-binary-neutron-server:ussuri              "dumb-init --single-…"   15 minutes ago      Up 15 minutes                           neutron_server
c5afee94823a        kolla/ubuntu-binary-openvswitch-vswitchd:ussuri        "dumb-init --single-…"   25 minutes ago      Up 25 minutes                           openvswitch_vswitchd
84c10bfce945        kolla/ubuntu-binary-openvswitch-db-server:ussuri       "dumb-init --single-…"   25 minutes ago      Up 25 minutes                           openvswitch_db
1b4b0189c044        kolla/ubuntu-binary-nova-compute:ussuri                "dumb-init --single-…"   49 minutes ago      Up 33 minutes                           nova_compute
410bc4a9ac94        kolla/ubuntu-binary-nova-libvirt:ussuri                "dumb-init --single-…"   51 minutes ago      Up 33 minutes                           nova_libvirt
286aabab9557        kolla/ubuntu-binary-nova-ssh:ussuri                    "dumb-init --single-…"   53 minutes ago      Up 33 minutes                           nova_ssh
f7ade004aba0        kolla/ubuntu-binary-nova-novncproxy:ussuri             "dumb-init --single-…"   54 minutes ago      Up 34 minutes                           nova_novncproxy
ce053ee3936c        kolla/ubuntu-binary-nova-conductor:ussuri              "dumb-init --single-…"   54 minutes ago      Up 33 minutes                           nova_conductor
9ace1abb6b13        kolla/ubuntu-binary-nova-api:ussuri                    "dumb-init --single-…"   54 minutes ago      Up 33 minutes                           nova_api
93ec899f31e3        kolla/ubuntu-binary-nova-scheduler:ussuri              "dumb-init --single-…"   54 minutes ago      Up 32 minutes                           nova_scheduler
71675d26922b        kolla/ubuntu-binary-placement-api:ussuri               "dumb-init --single-…"   About an hour ago   Up 33 minutes                           placement_api
022bc9dd585c        kolla/ubuntu-binary-cinder-backup:ussuri               "dumb-init --single-…"   About an hour ago   Up 32 minutes                           cinder_backup
10f728092b34        kolla/ubuntu-binary-cinder-volume:ussuri               "dumb-init --single-…"   About an hour ago   Up 33 minutes                           cinder_volume
e34abeac698c        kolla/ubuntu-binary-cinder-scheduler:ussuri            "dumb-init --single-…"   About an hour ago   Up 33 minutes                           cinder_scheduler
d82dbb5a8b94        kolla/ubuntu-binary-cinder-api:ussuri                  "dumb-init --single-…"   About an hour ago   Up 32 minutes                           cinder_api
c214451bc731        kolla/ubuntu-binary-glance-api:ussuri                  "dumb-init --single-…"   About an hour ago   Up 34 minutes                           glance_api
d895ebbc56b9        kolla/ubuntu-binary-keystone-fernet:ussuri             "dumb-init --single-…"   About an hour ago   Up 33 minutes                           keystone_fernet
8e59bb92ad72        kolla/ubuntu-binary-keystone-ssh:ussuri                "dumb-init --single-…"   About an hour ago   Up 34 minutes                           keystone_ssh
4e3f928dc21d        kolla/ubuntu-binary-keystone:ussuri                    "dumb-init --single-…"   About an hour ago   Up 34 minutes                           keystone
e53e6f4982af        kolla/ubuntu-binary-rabbitmq:ussuri                    "dumb-init --single-…"   About an hour ago   Up 33 minutes                           rabbitmq
bc7eeed07ef7        kolla/ubuntu-binary-tgtd:ussuri                        "dumb-init --single-…"   About an hour ago   Up 32 minutes                           tgtd
50fb03637da8        kolla/ubuntu-binary-iscsid:ussuri                      "dumb-init --single-…"   About an hour ago   Up 32 minutes                           iscsid
87d533ef99ee        kolla/ubuntu-binary-memcached:ussuri                   "dumb-init --single-…"   About an hour ago   Up 34 minutes                           memcached
8504b79a0988        kolla/ubuntu-binary-keepalived:ussuri                  "dumb-init --single-…"   2 hours ago         Up 34 minutes                           keepalived
73cbbebc44c2        kolla/ubuntu-binary-haproxy:ussuri                     "dumb-init --single-…"   2 hours ago         Up 34 minutes                           haproxy
c44ebacd4a1b        kolla/ubuntu-binary-mariadb-clustercheck:ussuri        "dumb-init --single-…"   2 hours ago         Up 33 minutes                           mariadb_clustercheck
f307c05bc38a        kolla/ubuntu-binary-mariadb:ussuri                     "dumb-init -- kolla_…"   2 hours ago         Up 34 minutes                           mariadb
5693020d43a2        kolla/ubuntu-binary-chrony:ussuri                      "dumb-init --single-…"   2 hours ago         Up 34 minutes                           chrony
9cb7d0776984        kolla/ubuntu-binary-cron:ussuri                        "dumb-init --single-…"   2 hours ago         Up 34 minutes                           cron
acf3ce5c1813        kolla/ubuntu-binary-kolla-toolbox:ussuri               "dumb-init --single-…"   2 hours ago         Up 33 minutes                           kolla_toolbox
54b6b06d7e03        kolla/ubuntu-binary-fluentd:ussuri                     "dumb-init --single-…"   2 hours ago         Up 34 minutes                           fluentd

多合一OpenStack现在已启动并正在运行。

多合一OpenStack后期部署任务

安装OpenStack命令行管理工具。您可以在虚拟环境中执行此操作。

source $HOME/kolla-openstack/bin/activate
pip install python-openstackclient python-neutronclient python-glanceclient

您现在可以从cli管理OpenStack。例如,列出当前可用的服务;

openstack service list
+----------------------------------+-------------+----------------+
| ID                               | Name        | Type           |
+----------------------------------+-------------+----------------+
| 06864fe8aae14ca9ad3a021af20b6159 | nova_legacy | compute_legacy |
| 3f3b8fdfc1b04d789cbafc820ba6971d | cinderv3    | volumev3       |
| 5cb91155a74d4fe0bed0081f60376b0f | heat        | orchestration  |
| 789c635f1dc947018aaa962537547985 | glance      | image          |
| abe33e17f53d4656b71251cbf57cf24c | nova        | compute        |
| df623a12fe25412b9bd29483560eb4e5 | neutron     | network        |
| e2318f5d7a424dac9416910e6b1094f6 | placement   | placement      |
| e6c08f0c6a84421e85c8bff4c73a1b83 | heat-cfn    | cloudformation |
| ec383b1d33aa4d64ab55829a44b3c687 | keystone    | identity       |
| f0d09637e4b84db1a02ce26b005407ca | cinderv2    | volumev2       |
+----------------------------------+-------------+----------------+

生成OpenStack管理员用户凭证文件(openrc)。

kolla-ansible post-deploy

此命令生成管理员凭证文件, /etc/kolla/admin-openrc.sh

source /etc/kolla/admin-openrc.sh

使用以下命令创建OpenStack网络,图像,新星密钥 init-runonce 脚本。该脚本会下载一个卷影图像并进行注册。然后,它配置网络和nova配额,以允许创建40个m1.small实例。

关于联网,请编辑 init-runonce 脚本并配置要通过其连接到Internet的公共网络。

vim kolla-openstack/share/kolla-ansible/init-runonce
...
ENABLE_EXT_NET=${ENABLE_EXT_NET:-1}
EXT_NET_CIDR=${EXT_NET_CIDR:-'192.168.122.0/24'}
EXT_NET_RANGE=${EXT_NET_RANGE:-'start=192.168.122.15,end=192.168.122.45'}
EXT_NET_GATEWAY=${EXT_NET_GATEWAY:-'192.168.122.1'}

接下来,从虚拟环境中运行脚本。

kolla-openstack/share/kolla-ansible/init-runonce
...
+----------------------------+-----------+
| Field                      | Value     |
+----------------------------+-----------+
| OS-FLV-DISABLED:disabled   | False     |
| OS-FLV-EXT-DATA:ephemeral  | 0         |
| disk                       | 160       |
| id                         | 5         |
| name                       | m1.xlarge |
| os-flavor-access:is_public | True      |
| properties                 |           |
| ram                        | 16384     |
| rxtx_factor                | 1.0       |
| swap                       |           |
| vcpus                      | 8         |
+----------------------------+-----------+

Done.

To deploy a demo instance, run:

openstack server create 
    --image cirros 
    --flavor m1.tiny 
    --key-name mykey 
    --network demo-net 
    demo1

重新配置堆栈

如果要通过添加或删除服务来重新配置堆栈,请编辑globals.yml配置文件,然后从虚拟环境中重新更改更改。

例如,在globals配置文件上进行更改后,重新配置堆栈;

source /path/to/virtual-environment/bin/activate

重新部署更改;

kolla-ansible -i all-in-one  reconfigure

访问OpenStack Web界面(Horizo​​​​n)

到目前为止,一切都很好! OpenStack已启动并正在运行。现在是时候登录Web界面了。

首先,检查OpenStack IP地址(Kolla VIP地址)。

ip add show enp1s0
2: enp1s0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:3e:8c:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.216/24 brd 192.168.122.255 scope global dynamic enp1s0
       valid_lft 2697sec preferred_lft 2697sec
    inet 192.168.122.206/32 scope global enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe3e:8caf/64 scope link 
       valid_lft forever preferred_lft forever

所以, 192.168.122.206是从外部浏览器访问OpenStack的IP地址。

因此,要从浏览器访问OpenStack Horizo​​​​n,请使用该地址, http://192.168.122.206

这应该带您到OpenStack Web界面登录页面;

使用登录 admin 作为用户名。

您可以从Kolla密码文件中获取管理员凭据, /etc/kolla/passwords.yml。对于Horizo​​​​n身份验证,您需要Keystone管理员密码。

grep keystone_admin_password /etc/kolla/passwords.yml
keystone_admin_password: vyntMgfyaZnHUcVGqQJ5OqVxbe4ppUJ2exAiB7po

成功登录后,您将进入OpenStack地平线仪表板。

在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack

在OpenStack AIO上启动实例

我们已经注册了卷影影像(Admin > Compute > Images)。

OpenStack映像

示例网络(Admin > Network > Networks)创建。

OpenStack网络

我们还创建了不同风格的卷云图像。

OpenStack卷云口味

要创建并启动实例,请导航至 项目>计算>实例。请点击 启动实例

设置实例的详细信息,设置源图像,风味,网络和其他设置。

启动OpenStack实例

请点击 启动实例 完成时。

该实例需要花费几分钟的时间来创建。完成后,它应如下所示;

在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack

单击实例名称以查看更多详细信息,包括日志,对控制台的访问…

您还可以使用OpenStack CLI客户端来部署实例。

openstack server create 
    --image cirros 
    --flavor m1.tiny 
    --key-name mykey 
    --network demo-net 
    inst002

检查OpenStack实例的状态;

openstack server list
+--------------------------------------+---------+--------+------------------------+--------+---------+
| ID                                   | Name    | Status | Networks               | Image  | Flavor  |
+--------------------------------------+---------+--------+------------------------+--------+---------+
| c429be25-b8d0-482c-a68a-e11836ab9dc9 | inst002 | ACTIVE | demo-net=10.0.0.240    | cirros | m1.tiny |
| b5467ca7-0224-42e0-b3ed-ffe7cf6a6885 | inst001 | ACTIVE | public1=192.168.122.28 |        | m1.tiny |
+--------------------------------------+---------+--------+------------------------+--------+---------+

有关更多OpenStack客户端示例,请参考;

OpenStack命令行界面备忘单

这标志着我们指南的结尾,说明了如何在Ubuntu 18.04上使用Kolla-Ansible部署多合一OpenStack。继续进一步探索OpenStack。

进一步阅读

Ansible入门

OpenStack管理指南

Docker入门

参考

OpenStack Kolla-Ansible快速入门指南

Sidebar