openstack在centos上安装---单机模式安装的--packstack 1.准备实验环境
#使⽤vagrant创建虚拟机,并修改sshd配置
# -*- mode: ruby -*-
# vi: set ft=ruby :
boxes = [
{
:name => "stack",
:eth1 => "192.168.1.220",
:mem => "16384",
:cpu => "8"
}
]
一路向西李丹妮图片config.vm.box = "centos7"
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = opts[:mem]
v.vmx["numvcpus"] = opts[:cpu]
end
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vmwork :public_network, ip: opts[:eth1]
end
end
end
#修改ssh配置
[root@stack ~]# grep Password  /etc/ssh/sshd_config
PasswordAuthentication yes
[root@stack ~]# grep PermitRoot /etc/ssh/sshd_config
PermitRootLogin yes
[root@stack ~]#
#关闭selinux,NetwokMnager,firewalld
sed -i 's/enforcing/disabled/g' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
#设置hosts
[root@stack ~]# cat /etc/hosts
127.0.0.1 stack stack
127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4
::1        localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.220 stack
波间带
#配置yum源
[root@pos.d]# po
[Aliyun-openstack]
name=Aliyun-openstack
baseurl=mirrors.aliyun/centos/$releasever/cloud/$basearch/openstack-rocky/
gpgcheck=0
enabled=1
cost=88
[Aliyun-qemu-ev]
name=Aliyun-qemu-ev
baseurl=mirrors.aliyun/centos/$releasever/virt/$basearch/kvm-common/
mirrors.aliyun/centos
gpgcheck=0
enabled=1
-----------------------------------------------------------------------------------------
[root@pos.d]# po
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=mirrors.aliyun/epel/7/$basearch
#mirrorlist=/metalink?repo=epel-7&arch=$basearch failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=mirrors.aliyun/epel/7/$basearch/debug
#mirrorlist=/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=mirrors.aliyun/epel/7/SRPMS
#mirrorlist=/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0
-----------------------------------------------------------------------------------------
[root@pos.d]#  po
# po
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base - mirrors.aliyun
failovermethod=priority
baseurl=mirrors.aliyun/centos/$releasever/os/$basearch/
#mirrorlist=/?release=$releasever&arch=$basearch&repo=os gpgcheck=1
gpgkey=mirrors.aliyun/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun
failovermethod=priority
baseurl=mirrors.aliyun/centos/$releasever/updates/$basearch/
#mirrorlist=/?release=$releasever&arch=$basearch&repo=updates gpgcheck=1
gpgkey=mirrors.aliyun/centos/RPM-GPG-KEY-CentOS-7
刀锋偏冷#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun
failovermethod=priority
baseurl=mirrors.aliyun/centos/$releasever/extras/$basearch/
#mirrorlist=/?release=$releasever&arch=$basearch&repo=extras gpgcheck=1
gpgkey=mirrors.aliyun/centos/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun
failovermethod=priority
我不怪你也不会恨你baseurl=mirrors.aliyun/centos/$releasever/centosplus/$basearch/
#mirrorlist=/?release=$releasever&arch=$basearch&repo=centosplus gpgcheck=1
enabled=0
gpgkey=mirrors.aliyun/centos/RPM-GPG-KEY-CentOS-7
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun
failovermethod=priority
baseurl=mirrors.aliyun/centos/$releasever/contrib/$basearch/
#mirrorlist=/?release=$releasever&arch=$basearch&repo=contrib gpgcheck=1
enabled=0
gpgkey=mirrors.aliyun/centos/RPM-GPG-KEY-CentOS-7
2.安装packstack相关软件
#重装leatherman
yum -y remove leatherman\*
yum -y install leatherman-1.3.0\*
#安装packstack
yum -y install openstack-utils
yum -y install openstack-packstack
3.⽣成并修改packstack应答⽂件
#⽣成应答⽂件
packstack --
#修改应答⽂件(若没有ifconfig命令,安装net-tools)
[root@stack ~]# cat preinstall.sh
#!/bin/bash
#packstack --
IP=$(ifconfig eth1 | awk '/inet /{print $2}')
sed -i '/^CONFIG_COMPUTE_HOSTS=/cCONFIG_COMPUTE_HOSTS='$IP'' aa.txt
sed -i '/^CONFIG_PROVISION_DEMO=/cCONFIG_PROVISION_DEMO=n' aa.txt
sed -i '/^CONFIG_NEUTRON_ML2_TYPE_DRIVERS=/cCONFIG_NEUTRON_ML2_TYPE_DRIVER
S=flat,vxlan' aa.txt
sed -i '/^CONFIG_NEUTRON_ML2_FLAT_NETWORKS=/cCONFIG_NEUTRON_ML2_FLAT_NETWORKS=datacentre' aa.txt
sed -i '/^CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=/cCONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=datacentre:br-ex' aa.txt #sed -i '/^CONFIG_HEAT_INSTALL=/cCONFIG_HEAT_INSTALL=y' aa.txt
sed -i.bak -r 's/(.+_PW)=[0-9a-z]+/\1=redhat/g' aa.txt
cat <<EOF
请把下⾯两句话添加控制节点和计算节点的/etc/hosts
$IP $(hostname) $(hostname -s)
运⾏下⾯的命令安装opensteack
packstack --
EOF
#ps:若ping不通百度,查看默认路由是否准确
4.安装openstack
packstack --
5.创建桥接⽹络
[root@stack ~]# cat postinstall.sh
#!/bin/bash
IP=$(ifconfig eth1 | awk '/inet /{print $2}')
GW=$(echo $IP | awk -F. '{print $1"."$2"."$3"."2}')
dir="/etc/sysconfig/network-scripts/"
cat > $dir/ifcfg-br-ex <<EOF
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
IPADDR=$IP
NETMASK=255.255.255.0
GATEWAY=$GW
DNS1=$GW
ONBOOT=yes
EOF
cat > $dir/ifcfg-eth1 <<EOF
DEVICE=eth1
DEVICETYPE=ovs
TYPE=OVSPort
ONBOOT=yes
BOOTPROTO=none
OVS_BRIDGE=br-ex
EOF
echo "请执⾏ systemctl restart network重启⽹络,且保证⽹络正常启动"
6.创建实例验证openstack可⽤性
#创建⽤户
[root@stack ~(keystone_admin)]# openstack user create --password redhat test
+---------------------+----------------------------------+
| Field              | Value                            |
+---------------------+----------------------------------+
| domain_id          | default                          |
| enabled            | True                            |
| id                  | 1d1941d6b4f94ec8a1219c88ae15ee35 |
| name                | test                            |
| options            | {}                              |
| password_expires_at | None                            |
+---------------------+----------------------------------+
#创建项⽬
[root@stack ~(keystone_admin)]# openstack project create test
+-------------+----------------------------------+
| Field      | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id  | default                          |
| enabled    | True                            |
| id          | 605b0cf0f33a46f08a27ae953b19ba94 |
| is_domain  | False                            |
| name        | test                            |
| parent_id  | default                          |
| tags        | []                              |
+-------------+----------------------------------+
#⽤户关联项⽬(role)
[root@stack ~(keystone_admin)]# openstack role add --user test --project test admin
[root@stack ~(keystone_admin)]# openstack role assignment list --name
+---------------+--------------------+-------+------------------+--------+--------+-----------+
| Role          | User              | Group | Project          | Domain | System | Inherited |
+---------------+--------------------+-------+------------------+--------+--------+-----------+
| admin        | test@Default      |      | test@Default    |        |        | False    |
| admin        | cinder@Default    |      | services@Default |        |        | False    |
| admin        | swift@Default      |      | services@Default |        |        | False    |
| ResellerAdmin | ceilometer@Default |      | services@Default |        |        | False    |
| admin        | ceilometer@Default |      | services@Default |        |        | False    |
| admin        | gnocchi@Default    |      | services@Default |        |        | False    |
| admin        | neutron@Default    |      | services@Default |        |        | False    |
| admin        | aodh@Default      |      | services@Default |        |        | False    |
| admin        | admin@Default      |      | admin@Default    |        |        | False    |
| admin        | placement@Default  |      | services@Default |        |        | False    |
| admin        | glance@Default    |      | services@Default |        |        | False    |
| admin        | nova@Default      |      | services@Default |        |        | False    |
| admin        | admin@Default      |      |                  |        | all    | False    |
+---------------+--------------------+-------+------------------+--------+--------+-----------+
创建桥接⽹络
#确认桥接⽹络是否创建,查看⽹卡配置⽂件
[root@stack network-scripts(keystone_admin)]# cat ifcfg-eth0
DEVICE=eth0
DEVICETYPE=ovs
TYPE=OVSPort
ONBOOT=yes
BOOTPROTO=none
OVS_BRIDGE=br-ex
[root@stack network-scripts(keystone_admin)]# cat ifcfg-br-ex
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=none
IPADDR=192.168.1.220
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=192.168.1.2
ONBOOT=yes
#查看桥接⽹络
[root@stack network-scripts(keystone_admin)]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000    link/ether 52:54:00:ca:e4:8b brd ff:ff:ff:ff:ff:ff
inet6 fe80::5054:ff:feca:e48b/64 scope link
valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 96:ea:82:07:36:81 brd ff:ff:ff:ff:ff:ff
4: br-int: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
北京北京歌词link/ether 66:0e:e2:4f:c3:4b brd ff:ff:ff:ff:ff:ff
5: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000
link/ether a6:02:6d:5a:e4:43 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.220/24 brd 192.168.1.255 scope global br-ex
valid_lft forever preferred_lft forever
inet6 2408:8256:3885:303a:a402:6dff:fe5a:e443/64 scope global mngtmpaddr dynamic
valid_lft 259190sec preferred_lft 172790sec
inet6 fe80::a402:6dff:fe5a:e443/64 scope link
valid_lft forever preferred_lft forever
6: br-tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 86:45:49:02:72:40 brd ff:ff:ff:ff:ff:ff
管理员创建外部⽹络
登录⽤户test
创建内部⽹络后查看拓扑
#上传镜像
openstack image create "demo" --file cirros-0.3.4-x86_64-disk.img  --disk-format qcow2  --container-format bare  --public openstack image list
#创建实例规格
openstack flavor create --disk 1 --vcpus 1 --ram 64 --public --project-domain test s1.tiny
#查看实例前置资源
#查看image
[root@stack ~(keystone_admin)]# openstack image list
+--------------------------------------+--------+--------+
| ID                                  | Name  | Status |
+--------------------------------------+--------+--------+
| cd82f5b8-f531-4a6d-bdec-52bca312b7ff | cirros | active |
| 8c881671-689b-4800-b75c-bedac09ff255 | demo  | active |
+--------------------------------------+--------+--------+
#查看flavor
openstack flavor list
[root@stack ~(keystone_admin)]# openstack flavor list
+--------------------------------------+-----------+-------+------+-----------+-------+-----------+
| ID                                  | Name      |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+-----------+-------+------+-----------+-------+-----------+
| 1                                    | m1.tiny  |  512 |    1 |        0 |    1 | True      |
| 2                                    | m1.small  |  2048 |  20 |        0 |    1 | True      |
| 3                                    | m1.medium |  4096 |  40 |        0 |    2 | True      |
| 4                                    | m1.large  |  8192 |  80 |        0 |    4 | True      |
| 5                                    | m1.xlarge | 16384 |  160 |        0 |    8 | True      |
最好的音乐网站
| 945270de-a01a-48ae-bb5e-c43d2cd1d493 | s.tiny    |    64 |    1 |        0 |    1 | True      |
| e60139de-3a24-4bd5-b52c-09eab4a3c457 | s1.small  |  128 |    1 |        0 |    1 | True      |
+--------------------------------------+-----------+-------+------+-----------+-------+-----------+
#可创建
openstack flavor create --disk 1 --vcpus 1 --ram 64 --public --project-domain test s.tiny
#查看安全组
[root@stack ~(keystone_admin)]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                  | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| 1cb85427-4e56-49e1-bb83-85585bfb6140 | demo-sg |                        | 605b0cf0f33a46f08a27ae953b19ba94 | []  |
| 3d1f1c15-972c-40b7-9d9b-b997cf60c76e | default | Default security group | 605b0cf0f33a46f08a27ae953b19ba94 | []  | | 8874f333-f086-43ef-8c7e-d50da432c4bf | default | Default security group | df5999672201403aa31fb955f10adde6 | []  | | 8cc809bb-ce0e-401e-8692-0b831d08b614 | default | Default security group | 7dadee390b244dbbbca03a58a59cfc6c | []  | | bfbdae01-f499-41c7-a754-34a47a38aad6 | default | Default security group |                                  | []  |
+--------------------------------------+---------+------------------------+----------------------------------+------+
#查看⽹络
[root@stack ~(keystone_admin)]# openstack network list
+--------------------------------------+---------+--------------------------------------+
| ID                                  | Name    | Subnets                              |
+--------------------------------------+---------+--------------------------------------+
| 331d986e-7b0a-4d2c-acd0-cffe4c64beeb | net-ex  | 69712017-1037-442d-a2c1-d02cdc5b5970 |
| dc7da17a-83ce-4f66-91d9-ec299a6538cc | pub-int | 67f4e13c-14bf-46b8-a82d-5f34580b4de4 |
+--------------------------------------+---------+--------------------------------------+
#创建实例
openstack server create --image demo --flavor s.tiny  --security-group demo-sg --network pub-int  vm01
#分配浮动ip
openstack network list
openstack floating ip create net-ex
openstack floating ip list
#绑定浮动ip
openstack server add floating ip vm01 192.168.1.27
#浮动ip在路由接⼝上
[root@stack ~(test_admin)]# ip netns exec qrouter-06593c2e-fa20-44dd-ba37-030b9fa57837 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever