openstack定制云主机
控制节点nova的配置文件中neutron的配置
vi /etc/nova/nova.conf
......
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = True
#配置了如下
metadata_proxy_shared_secret = METADATA_SECRET
neutron-metadata和dhcp-agent要配置内容
vi /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_metadata_ip = controller
service_metadata_proxy = True
#配置了如下
metadata_proxy_shared_secret = METADATA_SECRET
vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInte
rfaceDriver
service_metadata_proxy = True
#配置了如下
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
[root@controller ~]# ssh cirros@10.0.0.111
$ cat .ssh/authorized_keys
$ curl http://169.254.169.254/latest/meta-data/
$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key/
$ ls .ssh/authorized_keys
.ssh/authorized_keys
$ ping 169.254.169.254
$ route -n
#新启动的虚机上会有 #网络命名空间容器
[root@controller ~]# ip netns
qdhcp-df321bea-c8fd-4920-9a65-5f89bc036357 (id: 1)
qdhcp-dd7500f9-1cb1-42df-8025-a232ef90d54c (id: 0)
通过以下方式进入容器:
[root@controller ~]# ip netns exec qdhcp-df321bea-c8fd-4920-9a65-5f89bc036357 /bin/bash
#容器里跑的进程 metadata-proxy 的端口为1950
ps -ef|grep 1950
(三)定制云主机流程
实例的信息都存在nova数据库中
新启动的实例无法直接访问数据库,但是可以访问其实例上的dhcp agent容器
思考:为什么基于同一个镜像模板启动的云主机,云主机的主机名和实例名称一样?
思考:为什么在控制节点上可以免密码登陆我们的云主机?
管理员用户的密钥对会在创建虚拟机,开始后放到虚拟机里