OpenEuler操作系统安装openstack单节点
前置要求
1.准备环境:
OpenEule 最小化安装
最少 8 GB 内存(推荐 16 GB)
最少 40 GB 磁盘空间
禁用 SELinux 和防火墙(仅用于测试目的)
2.更新系统:
sudo dnf update -y
sudo dnf install -y git python3 python3-pip
3.安装开发工具和依赖项:
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y \
libffi-devel \
openssl-devel \
python3-devel \
libxml2-devel \
libxslt-devel \
wget \
httpd \
httpd-devel \
nvme-cli \
openvswitch \
etcd
4.启动服务和配置etcd服务:
sudo systemctl enable openvswitch --now
sudo systemctl enable httpd --now
1.创建服务单元文件
etcd 的服务单元文件通常位于 /etc/systemd/system/devstack@etcd.service。如果该文件不存在,你可以创建一个新的服务单元文件。以下是一个基本的示例:
sudo vim /etc/systemd/system/devstack@etcd.service
[Unit]
Description=etcd Service for DevStack
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/etcd
Restart=always
[Install]
WantedBy=multi-user.target
2.重新加载 systemd 并启动 etcd 服务:
sudo systemctl daemon-reload
sudo systemctl start devstack@etcd.service
sudo systemctl enable devstack@etcd.service
安装 DevStack:
DevStack 是一个用于快速部署 OpenStack 的开发环境工具,适用于单节点安装。
1.克隆 DevStack 仓库:
git clone https://opendev.org/openstack/devstack.git
cd devstack
2.创建配置文件:
创建一个 local.conf 文件来配置 DevStack:
cat <<EOF > local.conf
[[local|localrc]]
[[local|localrc]]
# Basic DevStack settings
# Set the password for the root user in the database
DATABASE_PASSWORD=password
# Set the password for the admin user
ADMIN_PASSWORD=password
# Set the password for the service user
SERVICE_PASSWORD=password
# Set the password for the demo user
DEMO_PASSWORD=password
# Set the password for the RabbitMQ user
RABBIT_PASSWORD=password
# Host IP and interface configuration
# Adjust this to your host's IP address
HOST_IP=your.host.ip.address
## Authentication token
SERVICE_TOKEN=secrettoken
SERVICE_PASSWORD=redflag@123
# Example Keystone configuration
KEYSTONE_AUTH_URI=http://172.16.103.188:5000/v3
KEYSTONE_ADMIN_AUTH_URL=http://172.16.103.188:35357/v3
# Compute service
ENABLE_SERVER_GROUP_API=True
ENABLE_NETWORK_API=True
# Use an alternative package repository (if needed)
[[package|pip]]
index-url = https://pypi.tuna.tsinghua.edu.cn/simpl
# Enable etcd
ENABLED_SERVICES += etcd
# Enable Keystone (Identity service)
enable_service key
# Enable Glance (Image service)
enable_service g-api
enable_service g-reg
# Enable Nova (Compute service)
enable_service n-api
enable_service n-crt
enable_service n-obj
enable_service n-cpu
enable_service n-cond
enable_service n-sch
enable_service n-novnc
enable_service n-cauth
# Enable Neutron (Networking service)
enable_service neutron
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service q-qos
enable_service q-lbaasv2
enable_service q-fwaas
enable_service q-vpn
# Enable Horizon (Dashboard)
enable_service horizon
# Enable Cinder (Block Storage service)
enable_service cinder
enable_service c-api
enable_service c-vol
enable_service c-sch
# Enable Heat (Orchestration service)
enable_service heat
enable_service h-api
enable_service h-api-cfn
enable_service h-api-cw
enable_service h-eng
# Enable Swift (Object Storage service)
enable_service s-proxy
enable_service s-object
enable_service s-container
enable_service s-account
# Miscellaneous settings
# Enable logging
LOGFILE=/opt/stack/logs/stack.sh.log
LOGDAYS=2
# Swift settings
SWIFT_HASH=swift_hash
SWIFT_REPLICAS=1
SWIFT_DATA_DIR=$DEST/data
# Enable TLS
ENABLE_TLS=True
EOF
将 yourpassword 替换为你的密码,将 your_server_ip 替换为你的服务器 IP 地址。
3.创建 stack 用户:
运行 DevStack 提供的脚本来创建并配置 stack 用户:
/root/devstack/tools/create-stack-user.sh
该脚本将执行以下操作:
创建一个名为 stack 的用户。
将 stack 用户添加到 sudo 组。
配置 stack 用户以便能够使用 sudo 命令而不需要输入密码。
4.切换到 stack 用户:
完成用户创建和配置后,切换到 stack 用户:
su - stack
5.复制 DevStack到/opt/stack:
切换到 root用户
su -root
cp -r devstack/ /opt/stack
6.设置 FORCE=yes 变量:
你可以通过以下命令来设置 FORCE=yes 变量并重新运行 stack.sh 脚本:
su - stack
cd devstack
FORCE=yes ./stack.sh
7.确保stack用户有合适的权限:
确保stack用户对/opt/stack目录有合适的权限。以下是命令:
sudo chown -R stack:stack /opt/stack
8.重新运行脚本:
FORCE=yes ./stack.sh
这个过程可能需要一些时间,因为它会下载和安装所有必要的组件。
如果报错显示uninstall-no-record-file
Installing collected packages: wheel, pip
Attempting uninstall: pip
Found existing installation: pip 23.3.1
error: uninstall-no-record-file
手动卸载现有的 pip 版本,重新执行脚本:
which pip
sudo rm -rf /usr/local/bin/pip /usr/local/lib/pythonX.Y/site-packages/pip*
9.在虚拟环境中安装 python-openstackclient:
然后,确保虚拟环境处于激活状态,并在虚拟环境中安装 python-openstackclient:
确保 OpenStack CLI 工具已经安装。你可以使用以下命令安装它们:
source /opt/stack/data/venv/bin/activate
sudo pip install python-openstackclient
10… 确认环境变量设置
加载 openrc 文件时,应该会设置一些环境变量,以确保命令可以找到 OpenStack CLI 工具。你可以手动检查这些变量是否正确设置:
source /opt/stack/devstack/openrc admin admin
然后检查环境变量:
echo $PATH
确认其中包含 OpenStack CLI 工具的路径,例如 /usr/local/bin 或 /opt/stack/bin。
11.重新加载 shell
有时新安装的工具需要重新加载 shell 才能生效。你可以尝试以下命令:
exec bash
然后再次加载 openrc 文件并尝试运行 OpenStack 命令:
source /opt/stack/devstack/openrc admin admin
openstack service list
12. 确认 OpenStack 安装目录
确保 OpenStack CLI 工具实际安装在预期目录中。例如,可以检查 /opt/stack 或 /usr/local/bin 目录:
ls /opt/stack
ls /usr/local/bin/openstack
13. 验证 DevStack 安装日志
如果以上步骤都无法解决问题,请查看 DevStack 的安装日志,以获取更多关于安装过程中可能出现问题的线索。日志文件通常位于 /opt/stack/logs/ 目录中。
ls /opt/stack/logs/