暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openstack-command

原创 逆风飞翔 2022-04-05
1141

openstack server --help
openstack server create --help
openstack role create Role_cli

openstack user create --domain default --project admin --password-prompt User_cli_01 输入密码
openstack role add --project admin --user User_cli_01 Role_cli #为用户在项目admin中添加角色Role_cli

openstack user create --domain default --project admin --password-prompt User_cli_02
openstack role add --project admin --user User_cli_02 admin
openstack role assignment list --names | grep User_cli #查看角色分配情况
openstack group --help
openstack group create --help
openstack group create Group_cli
openstack group add user Group_cli User_cli_01 User_cli_02
openstack group remove user Group_cli User_cli_02

openstack group contains user Group_cli User_cli_02 #查看组Group_cli 是否包含用户 User_cli_02

openstack user set --disable User_cli_02
openstack user show User_cli_02 #查看用户
openstack user delete User_cli_02
openstack user list

#创建项目,修改项目配额
openstack project create --domain default Project_cli
openstack user create --domain default --password-prompt User_cli_01 ##创建用户
openstack role create admin
openstack role add --project Project_cli --user User_cli_01 admin #为用户User_cli_01在项目 Project_cli 中添加角色 admin



vi User_cli_01-openrc.sh
export OS_PROJECT_NAME=Project_cli
#导入环境变量
. User_cli_01-openrc.sh

openstack project list
openstack quota set --help
openstack quota show Project_cli
openstack quota set --instances 5 --volumes 5 --networks 10 Project_cli
openstack quota show Project_cli | grep -E "instances|volumes|networks"

#创建服务
. admin-openrc.sh
openstack service --help
openstack service create --name swift --description "openstack object storage" object-store
openstack service list

openstack endpoint create --help #端点命令
openstack endpoint set --service compute --interface admin --url http://controller:8080/v1/AUTH_%\(tenant_id)s
openstack endpoint create --region RegionOne object-store public http://controller:8080/v1/AUTH_%\(tenant_id)s
openstack endpoint create --region RegionOne object-store internal http://controller:8080/v1/AUTH_%\(tenant_id)s
openstack endpoint create --region RegionOne object-store admin http://controller:8080/v1
openstack endpoint list | grep swift
###创建虚拟机实例 server
openstack server create --flavor Flavor_web --image cirros cirror_instance #创建虚拟机实例规格是Flavor_web,镜像是 cirros 实例名:cirror_instance
openstack server list
openstack server show cirror_instance

admin-openrc.sh
demo-openrc.sh


./st.py -b cluster


create Role --> create user -->
create group-->add users
Identity >Role Identity > User User_web 选择角色admin
Identity > Groups -->Manage Members -->Modify Quotas
Identity > Projects Project Members(USERs) or Project Groups 选择组角色 创建Project

Project > Compute >Image >Create Image 选择镜像文件 Browse >open QCOW2 - QEMU Emulator Public Yes -->create Image

scp -P 2230 ./openstack/cirrors-0.4.0-x86_64-disk.img osbash@127.0.0.1:/home/osbash
qemu-img info cirros-0.4.0-x86_64-disk.img #查看镜像文件详细信息

openstack image create --disk-format qcow2 --container-format bare --min-disk 1 --min-ram 128 --private --protected --file ./cirrors-0.4.0-x86_64-disk.img Img_cli

openstack image list

openstack role remove --project Project_cli --user User_cli_02 admin
openstack role assignment list --names | grep Group_cli
openstack role remove --project Project_cli --group Group_cli admin
openstack role add --project Project_cli --user User_cli_02 Role_cli

o

####镜像控制

#周期性清理
glance-cache-pruner
###清理image cache 异常cache 文件
glance-cache-cleaner
###欲取镜像到信息的节点
glance-cache-manage --host=<HOST> queue-image<IMAGE_ID>
###手动删除image cache
glance-cache-manage --host=<HOST> delete-cache-image<IMAGE_ID>

###glance镜像制作
1. virt-manager 创建os 虚拟机并安装操作系统
2. 安装cloud-init sudo apt(yum)install cloud-init
3. 预清理虚拟机 sudo virt-sysprep -d VM_ID
4. 释放虚拟机定义 virsh undefine VM_ID
5. 制作镜像 qemu-img create
6. 上传镜像 openstack image create

#glance 镜像制作工具
diskimage-builder disk-image-create ubuntu vm
Packer
virt-builber

vmbuilder kvm ubuntu --flavour=virtual --arch=amd64
---libvirt=qemu:///system--ip=10.112.18. -gw=10.112.18.177 --part= vmbuilder.partition
--templates=mytemplates --user=kvmuser --name=kvmuser --pass=123
addpkg=openssh-server addpkg=vim-nox addpkg=unattended-upgrades
addpkg=acpid --mem-4096 --hostname=vm1 --bridge=br0

##
qemu-img convert -f raw -O qcow2 image.img image.qcow2
VDI转换为RAW
VBoxManage clonehd image.vdi image.img --format raw


##########主机聚合,分区管理
openstack hypervisor list --long
openstack host list --help
openstack aggregate create --help
openstack aggregate create --zone nova HostAggr_cli #创建主机聚合 HostAggr_cli
openstack aggregate add host HostAggr_cli computer1 #主机聚合 HostAggr_cli 添加主机 computer1
#删除主机聚合里的主机computer1
openstack aggregate remove host HostAggr_cli computer1
openstack aggregate create --zone AZ_cli HostAggr_cli_test
openstack aggregate add host HostAggr_cli_test computer1

openstack aggregate set --zone nova HostAggr_cli_test
openstack aggregate show HostAggr_cli_test
openstack aggregate add host HostAggr_cli_test computer1
#删除主机聚合
openstack aggregate delete HostAggr_cli_test
openstack aggregate list

#####创建虚拟机实例 server 创建实例必须指定镜像和规格
openstack server create --flavor Flavor_web --image cirros cirror_instance #创建虚拟机实例规格是Flavor_web,镜像是 cirros 实例名:cirror_instance
openstack server create --availability-zone nova --flavor Flavor_web --image Img_cli --key-name KeyPair_cli--hint group=ServerGroup_id Instance_cli_01
###基于卷发送虚拟机实例
openstack server create --volume Volume_cli_02 --flavor Flavor_cli Instance_cli_02
##
###
openstack server list
openstack server delete --help
##关闭虚拟机
openstack server stop Instance_cli_01
openstack server show Instance_cli_01 | grep status
openstack server start Instance_cli_01
openstack server reboot Instance_cli_01
openstack server reboot --soft Instance_cli_01
openstack server reboot --hard Instance_cli_01
###锁定虚拟机
openstack server lock Instance_cli_01
###解锁虚拟机
openstack server unlock Instance_cli_01
##
openstack server pause Instance_cli_01
openstack server unpause Instance_cli_01
openstack server suspend Instance_cli_01
openstack server resume Instance_cli_01 ##恢复
openstack server shelve Instance_cli_01 ##搁置实例
openstack server unshelve Instance_cli_01
###创建虚拟机实例镜像、快照
openstack server image create --name Instance_Snap_cli Instance_cli_01
openstack server show Instance_cli_01 | grep flavor
###规格管理
openstack flavor create --help
openstack flavor create --vcpus 1 --ram 128 --disk 1 --private --project Project_cli Flavor_cli
openstack flavor create --vcpus 1 --ram 156 --disk 1 Flavor_cli
##调整虚拟机实例规格大小
openstack server resize --flavor Flavor_cli_new Instance_cli_01
openstack server resize --confirm Instance_cli_01
###恢复虚拟机实例快照
openstack server rebuild --image Instance_Snap_01 Instance_cli_01
###删除虚拟机实例
openstack server delete Instance_cli_01

####
openstack flavor unset --project Project_cli Flavor_cli #使规格对项目不可见
openstack flavor show Flavor_cli
openstack flavor delete Flavor_cli
openstack flavor create --vcpus 1 --ram 128 --disk 1 Flavor_cli
####密钥对
openstack keypair create --help
openstack keypair create keyPair_cli
openstack server group --help ###虚拟机组
#创建虚拟机组
openstack server group create --policy affinity ServerGroup1




###创建镜像
openstack image create --disk-format qcow2 --container-format bare --min-disk 1 --min-ram 128 --public --unprotected --file ./cirrors-0.4.0-amd64.qcow2 Ubuntu_cli
penstack image set --public --unprotected Img_cli
openstack image show Img_cli
#共享镜像
openstack image set --shared Img_cli
openstack project list
openstack image list


openstack image add project IMAGE_ID PROJECT_ID #状态是PENding
openstack image set --accept IMAGE_ID#更改状态为accept,用户才能看到共享镜像

QCOW2镜像压缩
#格式转换
qemu-img info bionic-server-cloudimg-amd64.vmdk
qemu-img info bionic-server-cloudimg-amd64.qcow2
#镜像文件转换 -f 输入磁盘镜像文件 -O 指定输出格式 -c 目标只能被压缩成QCOW2 -p 显示转换进度
qemu-img convert -f vmdk -O qcow2 -c -p bionic-server-cloudimg-amd64.vmdk bionic-server-cloudimg-amd64.qcow2

openstack image create --disk-format qcow2 --container-format bare --min-disk 1 --min-ram 128 --public --unprotected --file ./cirrors-0.4.0-amd64.qcow2 Ubuntu_cli

#保存镜像Ubuntu_cli到本地
openstack image save --file Ununtu.qcow2 Ubuntu_cli
#删除镜像
openstack image delete Ubuntu_cli

####卷管理
openstack volumn type --help
openstack volumn type create --help
#创建卷
openstack volumn type create --public VolumeType_cli
openstack volumn type list
openstack volumn qos create --help
#创建卷,对象back-end
openstack volumn qos create --consume back-end Qos_cli
openstack volumn qos list
openstack volumn qos associate Qos_cli VolumeTaypr_cli #指定卷的卷类型
openstack volumn qos show Qos_cli
####创建卷

openstack volume create --image Img_cli --type VolumeType_cli --size 1 --availability-zone nova --bootable
#挂载卷
openstack server add volume Instance_cli_01 Volume_cli_01
##删除实例中的卷
openstack server remove volume Instance_cli_01 Volume_cli_01

###上传卷到镜像
openstack image create --volume volume_cli_01 --disk-format qcow2 Volume_Img_cli
##创建卷快照
openstack volume snapshot create --volume Volume_cli_01 Volume_Snap_cli
openstack volume snapshot list
##卷扩容
openstack volume set --size 2 Volume_cli_01
openstack volume show Volume_cli_01
###基于卷快照创建卷
openstack volume create --snapshot Volume_Snap_cli Volume_cli_02
openstack volume list
###基于卷发送虚拟机实例
openstack server create --volume Volume_cli_02 --flavor Flavor_cli Instance_cli_02
##设置非启动卷
openstack volume set --non-bootable Volume_cli_02
###更新卷状态
openstack volume set --state error Volume_cli_01
##删除卷
openstack volume delete Volume_cli_01
##删除卷快照
openstack volume snapshot delete Volume_Snap_01
###从实例中卸载卷
openstack server remove volume Instance_cli_02 Volume_cli_02
##删除虚拟及实例
openstack server delete Instance_cli_02

###创建网络
openstack network create --share Network_cli_01
openstack network list
##创建子网
openstack subnet create --network Network_cli_01 --subnet-range 192.168.21.0/24 --allocation-pool start=192.168.21.100,end=192.168.21.200 --gateway 192.168.21.1 Subnet_cli_01
openstack subnet list
####接口
openstack port list --network Network_cli_01 --long
###创建网络,子网
openstack network create --share Network_cli_01
openstack subnet create --network Network_cli_01 --subnet-range 192.168.22.0/24 --allocation-pool start=192.168.22.100,end=192.168.22.200 --gateway 192.168.21.1 Subnet_cli_02
openstack server delete Instance_cli_01

##发放虚拟机
openstack server create --image Img_cli --flavor Flavor_cli --network Network_cli_01 --min 2 --max 2 Instance_cli_01
openstack server create --image Img_cli --flavor Flavor_cli --network Network_cli_02 Instance_cli_02

#####创建虚拟机实例 server 创建实例必须指定镜像和规格
openstack server create --flavor Flavor_web --image cirros cirror_instance #创建虚拟机实例规格是Flavor_web,镜像是 cirros 实例名:cirror_instance
openstack server create --availability-zone nova --flavor Flavor_web --image Img_cli --key-name KeyPair_cli--hint group=ServerGroup_id Instance_cli_01
###基于卷发送虚拟机实例
openstack server create --volume Volume_cli_02 --flavor Flavor_cli Instance_cli_02

###创建路由器
openstack router create --availability-zone-hint nova Route_cli
###配置路由器的外部网络provider
openstack router set --external-gateway provider Route_cli

##在路由器接口添加子网
openstack router add subnet Route_cli Subnet_cli_01
openstack router add subnet Route_cli Subnet_cli_02
##
openstack router show Route_cli | grep interface_info

###浮动ip
openstack floating ip create --port PORT_ID provider
openstack floating ip create provider
openstack port list --server Instance_cli_test_02
openstack floating ip list --long
###为虚拟机实例Instance_cli_test-1 分配浮动IIP
openstack server add floating ip Instance_cli_test-1 FLOATING_IP
###解分配浮动IP
openstack server remove floating ip Instance_cli_test-1 FLOATING_IP
##释放全部分配的浮动IP
openstack floating ip delete FLOATING_IP

#####创建安全组
openstack security group create SG_CLI
openstack security group rule create --protocol icmp --ingress --remote-ip 0.0.0.0/0 SG_CLI
openstack security group rule create --protocol tcp --ingress --remote-ip 0.0.0.0/0 SG_CLI
openstack server remove security group SG_CLI default
openstack security group list --project PROJECT_ID
openstack security group rule list | grep SECURITY_GROUP_ID
openstack security group rule show SECURITY_GROUP_ID
openstack server show Instance_cli_test-1 |grep security_groups
###为虚拟机实例添加安全组
openstack server add security group Instance_cli_test-1 SG_CLI


###编排
1. 导入admin的环境变量 . admin-openrc.sh
2. openstack server list
3. sudo apt install python-heatclient
su yum install python-heatclient
4. openstack image list
openstack flavor list
openstack keypair list

5. HOT yaml 文件

####opoenstack 堆栈命令
openstack stack list
###创建堆栈:资源集合
export NET_ID=NETWORK_ID
openstack stack create -t demo.yaml --parameter "image=centon" stack_demo

openstack stack create -t demo.yaml --parameter "NETID=$NET_ID" stack_demo
openstack stack create -t demo1.yaml --paramete image=Img_cli --parameter flavor=Flavor_cli --parameter key_name=KeyPari_cli --parameter NatID=Network_cli_01
--parameter admin_pass=Huawei@123 Stack_hello_cli

##嵌套yaml
vi main.yaml
haat_template_version: 2016-03-23

resources:
my_server:
type: my_nova.yaml
properties:
key_name: KeyPari_cli
NetID: Network_cli_01

openstack stack create -t main.yaml Stack_nest
#查看堆栈创建过程
openstack stack event list Stack_demo
openstack stack show Stack_demo
###查看堆栈创建完成后输出的虚拟机实例名称和IP地址
openstack stack output show --all Stack_demo
openstack server list ##查看实例状态
###删除堆栈
openstack stack delete --yes Stack_nest


##################################
resource ID:资源ID,在模板的resources部分中必须是唯一的
type:资源类型:例如OS::Nova::Server或OS::Neutron::Port,必选属性
properties:特定资源的属性列表,可选属性
metadata:特定资源的元数据,可选
depends_on:资源依赖模板中的一个或者多个资源上,可选属性
update_policy:删除资源的策略,可选
deletion_policy:删除资源的策略。允许的删除策略是delete,retain和snapshot,可选,默认策略是从stack中删除资源时删除物理资源
external_id:允许为现有外部(到堆栈)资源指定resource_id,可选属性
condition:资源的条件,决定是否创建资源


vi demo-tempalte.yaml
按照如下编写,注意每个":"后都要有空格,即时没有字符也要有空格
可以用notpad++将文件写完后,上传,避免写错
heat_template_version: 2015-10-15

parameters:

NetID:

type: string
description: Network ID to use for the instance.

resources:

server:

type: OS::Nova::Server
properties:

image: Img_cli
flavor: Flavor_cli
key_name: KeyPairCli
networks:

- network: { get_param: NetID }


outputs:

instance_name:

description: Name of the instance.

value: { get_attr: [server,name] }

instance_ip:

description: IP address of the instance.

value: { get_attr: [server,first_address] }

###故障排除: 查看密码是否一致
vi admin-openrc.sh
export OS_PASSWORD=HuaWei@123
. admin-openrc.sh ##admin环境变量

openstack image list
openstack flavor list
openstack image show Image_cli
openstack flavor show Flavor_cli ##查看ram,vcpu,disk 是否合理
###创建虚拟机实例
openstack server create --image Image_cli --flavor Flavor_cli --network NetWork_cli_01 Instance_cli_01
openstack flavor show Flavor_cli ##查看ram,vcpu,disk 是否合理
##查看image 与ram大小,修改ram , 规格
openstack server create --image Image_cli --flavor Flavor_cli_new --network NetWork_cli_01 Instance_cli_01
##
openstack server list | grep Instance_cli_01 # 查看虚拟机实例状态,记录虚拟机实例ID
openstack host list ## 查看nova-schedular 和 nova-conductor 服务所在主机
cat /var/log/nova/nova-conductor.log | grep INSTANCE_ID ##记录请求ID及错误信息
cat /var/log/nova/nova-scheduler.log | grep REQUEST_ID ## 根据request_id 查找具体错误信息

##查看 nova-compute 服务状态
openstack compute service list
###修改nova-compute 服务状态为 enable
openstack compute service set --enable compute1 nova-compute
openstack compute service list | grep nova-compute

###删除状态为Error的虚拟机实例
openstack server delete Instance_cli_01

###创建实例是否删除成功
openstack server list
### 查看网络
openstack network list
###查看浮动IP
openstack floating ip list

###
openstack server create --image Img_cli --flavor Flavor_cli_new --network NetWork_cli_01 Instance_cli_02
###为虚拟机实例 Instance_cli_02 分配浮动IP,并查看外网和子网是否可达
openstack server add floating ip Instance_cli_02 203.0.113.164 (FLOATING_IP)

openstack subnet list --network_cli_test ##创建网路network_cli_test子网
openstack router list | grep Router_cli_test ##查看路由器状态是否是Active
openstack port list --router Router_cli_test ##查看网口IP
##添加子网到路由器
openstack router add subnet Router_cli_test Subnet_cli_test
###查看浮动IP地址
openstack server show Instance_cli_02 | grep address


###
troubleshooting_01.sh
#!/bin/sh
openstack image set --min-ram 156 Img_cli;
openstack compute service set --disable compute1 nova-compute;

troubleshooting_02.sh
openstack network create --share Network_cli_test > /dev/null
openstack subnet create --network Network_cli_test --subnet-range 192.168.30.0/24 --allocation-pool start=192.168.30.100 ,
end=192.168.30.200 --gateway 192.168.30.1 Subnet_cli_test > /dev/null
openstack router create Router_cli_test > /dev/null
openstack router set --external-gateway provider Router_cli_test
##provider=openstack 管理员提供的网络,对应与物理网络的一个网段


1. 创建1个规格
2. 创建3个网络及子网
3. 创建2个路由器,连接2个网络
4. 创建安全组及规格
5. 创建3个虚拟机实例
6. 创建并挂载3个持久卷
7. 分配外部网络
8. 创建卷快照,并基于快照创建卷
9. 卷扩容

echo 'mount /dev/cdrom /mnt' >>/etc/rc.local
chmod +x /etc/rc.d/rc.local




vi /etc/keystone/keystone.conf
[DEFAULT]
admin_token = 325dgfrgr32 # openssl rand -hex 10 ###随机码
verbose = true
[database]
connection = mysql://keystone:keystone@192.168.56.11/keystone
用户名 密码 主机 数据库名

[memcache]
servers = 192.168.56.11:11211
[token]
provider = uuid
driver = memcache ##token 写入memcache
[revoke] #sql回滚
driver = sql
###启动keystone
systemctl start memcached.service
vi /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000 #用户端口
Listen 35357 ###管理端口


##同步keystone数据库,切换为keystone 用户
su -s /bin/sh -c "keystone-manage db_sync" keystone
## /var/log/keystone/keystone.log
mysql -h -u -p
grep '^[a-z]' /etc//keystone/keystone.conf
grep '^$\#' /etc//keystone/keystone.conf

###keystone 环境变量
export OS_TOKEN= fewfe221 # 等于 /etc//keystone/keystone.conf 里的 admin_token
export OS_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论