有一段时间没有弄openstack了,算来算去弄openstack也差不多三年了,但是直接跳过去再弄个别的说不过去啊,看到openstack有了coa认证,就报了个名,培训嘛,对于咱们趟着坑走的人来说就算了,得硬气点儿不是,哈哈!不过毕竟是考试,还是得好好准备一下的。这里面我本地用devstack搭的N版环境,做一些基本的练习哈!

考试技能要求


Keystone

手写RC

使用命令行的话少不了用RC文件啊,登陆dashboard就能下载,但是如果dashboard有坑或者没有dashboard的时候手写一个rc也不错:

1
2
3
4
5
6
7
8
unset OS_SERVICE_TOKEN
unset OS_PROJECT_NAME
unset OS_PROJECT_ID
export OS_TENANT_NAME="admin"
export OS_USERNAME="admin"
export OS_PASSWORD="password"
export OS_AUTH_URL="<keystone_endpoint>"
export OS_IDENTITY_API_VERSION=<version>

创建service

创建endpoint

domain操作


Nova

创建主机

使用命令行创建虚拟机,其实一个虚拟机和我们常用的电脑差不多,基本的cpu、网络、镜像、规格要明确,访问的话用的key以及限制是什么样的,这样想就好记多了,基本的参数有以下几个:

  • 名称
  • 网络
  • key
  • flavor
  • image
  • 安全组
1
2
3
4
5
6
7
nova boot \
<name> \
--flavor <flavor_name> \
--image <image_id> \
--nic net-name=<net_id> \
--key-name <keypair-name> \
--security-groups <security-group-id>

创建flavor

1
2
3
4
5
6
7
nova flavor-create\
<name> \
<auto> \ # auto generate an UUID fo ID
<ram> \
<disk> \
<cpu> \
--is-public <true/false>

flavor添加租户权限

1
2
3
nova flavor-access-add \
<flavor-id> \
<tenant-id>

default安全组中添加规则允许外部访问虚拟机ssh、http以及icmp

1
2
3
openstack security group rule create --proto icmp --src-ip 0.0.0.0/0 <security_group_id>
openstack security group rule create --proto tcp --src-ip 0.0.0.0/0 --dst-port 22 <security_group_id>
openstack security group rule create --proto tcp --src-ip 0.0.0.0/0 --dst-port 80 <security_group_id>

创建floating-ip

1
nova floating-ip-create

分配floating-ip到虚拟机

1
2
3
nova floating-ip-associate \
<server> \
<ext-ip-addr>

创建快照

1
2
3
nova image-create \
<server-name> \
<snapshot-name>

Neutron

创建私有net

1
2
3
4
neutron net-create \
<name> \
--provider:network-type <type>
...

创建subnet

1
2
3
4
5
6
neutron subnet-create \
<network-name> \
<CIDR> \
--name <subnet-name> \
--enable-dhcp \
...

router添加接口

1
2
3
neutron router-interface-add \
<router> \
<subnet>

Quota设置

设置gigabytes、networks、subnets

1
2
3
openstack quota set --gigabytes <size>
openstack quota set --networks <size>
openstack quota set --subnets <size>

设置backups配额

1
cinder quota-update --backups <size> <project>

更新所有项目默认配额

1
2
3
4
5
nova quota-class-update \
--instacnes <size> \
--cores <size> \
...
default # 默认quota-class

更新指定用户配额

1
2
nova quota-update --user <user_id> \
...


Cinder

创建volume

1
2
3
4
cinder create \
<size> \
--name <name>
--volume-type <type-id>

查看挂载信息

1
nova volume-attachments <server>

attach volume

1
2
3
nova volume-attach \
<server> \
<volume-id>

detach volume

1
2
3
nova volume-detach \
<server> \
<volume-id>

创建卷快照

1
2
3
cinder snapshot-create \
--name <snap-name> \
<volume-id>

查看快照

1
cinder snapshot-list

从快照创建卷

1
2
3
cinder create \
--snapshot-id <snapshot-id> \
--name <snapshot-name>

创建backups

1
2
3
cinder backup-create \
<volume-id> \
--name <name> \

backup resotre

1
2


cinder块加密type创建

1
2
3
4
5
6
7
openstack volume type create LUKS

cinder encryption-type-create \
--cipher aes-xts-plain64 --key_size 512 \
--control_location front-end \
LUKS \ # volume-type
nova.volume.encryptors.luks.LuksEncryptor # provider

创建加密卷

使用加密卷类型创建即可,其他与正常创建卷一样

1
2
3
4
cinder create \
<size> \
--volume-type LUKS \ # 使用加密类型
--name <name>

验证加密卷的有效性

卷加密后如果没有


swift

上传文件到container,删除文件

1
2
swift upload <container_name> file
swift delete <container_name> file