10.SaltCloud创建OpenStack实例
徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。
笔者Q:552408925、572891887
架构师群:471443208
Salt Cloud提供了一个强大的接口来与云主机交互。此接口与Salt紧密集成,新的虚拟机在创建后自动连接到您的Salt主机。
由于Salt Cloud被设计为自动化系统,大多数配置使用以下YAML配置文件完成:
/etc/salt/cloud
:主配置文件,包含适用于所有云主机的全局设置。请参阅Salt Cloud配置。
/etc/salt/cloud.providers.d/*.conf
:包含配置特定云主机的设置,如凭据,区域设置等。由于每个云主机之间的配置差异很大,因此应为每个云主机创建一个单独的文件。在Salt Cloud中,提供者是云主机(Amazon EC2,Google Compute Engine,Rackspace等)的同义词。请参阅提供程序特定。
/etc/salt/cloud.profiles.d/*.conf
:包含定义特定虚拟机类型的设置。配置文件定义系统规格和映像以及特定于此VM类型的任何其他设置。每个特定的VM类型称为配置文件,并且可以在配置文件文件中定义多个配置文件。每个配置文件引用定义创建VM的云主机的父提供程序(提供程序设置位于上述提供程序配置中)。根据您的需要,您可以为Web服务器,数据库服务器等定义不同的配置文件。
配置设置按顺序从cloud config => providers => profile.
例如,如果要为特定提供程序的所有虚拟机使用相同的映像,则映像名称可以放在提供程序文件中。 此值由使用该提供程序的所有配置文件继承,但如果在配置文件中定义了映像名称,则会覆盖此值。
大多数配置设置可以在任何文件中定义,主要区别是该设置是如何继承的。
1.SaltStack基础服务安装
1.配置salt yum仓库
[root@linux-node1 ~]# cat /etc/yum.repos.d/salt.repo
[saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/base/RPM-GPG-KEY-CentOS-7
2.安装salt-master、salt-minion、salt-cloud
[root@linux-node1 ~]# yum install salt-master salt-minion salt-cloud -y
3.编辑配置/etc/salt/minion
指定salt-master
master: 192.168.56.11
4.启动salt-master,salt-minion服务,并将其配置为在系统启动时启动
[root@linux-node1 ~]# systemctl enable salt-master salt-minion
[root@linux-node1 ~]# systemctl start salt-master salt-minion
5.salt-key添加认证,并建立连接
[root@linux-node1 ~]# salt-key -A -y
[root@linux-node1 ~]# salt-key
Accepted Keys:
linux-node1.xuliangwei.com
Denied Keys:
Unaccepted Keys:
Rejected Keys:
2.Salt-cloud关联OpenStack
在/etc/salt/cloud.providers
或/etc/salt/cloud.providers.d/openstack.conf
中设置云配置(yaml注意空格,建议复制)
[root@linux-node1 ~]# cat /etc/salt/cloud.providers.d/openstack.conf
my-openstack-config:
# Set the location of the salt-master
#
minion:
master: 192.168.56.11
# Configure the OpenStack driver
#
identity_url: http://192.168.56.11:5000/v2.0/tokens
compute_name: nova
protocol: ipv4
compute_region: RegionOne
# Configure Openstack authentication credentials
#
user: demo
password: demo
# tenant is the project name
tenant: demo
driver: openstack
# skip SSL certificate validation (default false)
insecure: false
测试,获取可用图像和实例类型的列表,使用以下命令:
[root@linux-node1 ~]# salt-cloud --list-images openstack -l debug
my-openstack-config:
----------
openstack:
----------
cirros:
----------
driver:
extra:
----------
created:
2016-10-09T06:03:13Z
metadata:
----------
minDisk:
0
minRam:
0
progress:
100
serverId:
None
status:
ACTIVE
updated:
2016-10-09T06:03:14Z
get_uuid:
id:
54daa962-097b-4968-aa71-8fa3123e4c41
name:
cirros
uuid:
72a762a377bb10cc870a8991a61630b2615fdcd0
[root@linux-node1 ~]# salt-cloud --list-sizes openstack -l debug
my-openstack-config:
----------
openstack:
----------
xuliangwei.com:
----------
bandwidth:
None
disk:
1
driver:
ephemeral_disk:
0
extra:
----------
get_uuid:
id:
5
name:
xuliangwei.com
price:
0.0
ram:
64
swap:
uuid:
8f0083f719dbc84a16323b7ad37ef6d0f240dba9
vcpus:
1
2.1配置虚拟机实例
Salt Cloud指定配置文件配置文件中的虚拟机,配置文件配置文件默认为/etc/salt/cloud.profiles
以及/etc/salt/cloud.profiles.d/
,并且是yaml配置,声明概要文件的语法很简单。
1.在/etc/salt/cloud.profiles.d/
创建配置文件实例
[root@linux-node1 ~]# cat /etc/salt/cloud.profiles.d/web-node1.conf
web-node1:
provider: my-openstack-config
size: xuliangwei.com
image: cirros
ssh_key_file: /root/.ssh/id_rsa
ssh_key_name: mykey
ssh_interface: private_ips
networks:
- fixed:
- 40e7f254-8b5e-40f2-b1b6-2d744b2b0be7
minion:
master: 192.168.56.11
grains:
role: webserver
2.以下列表解释了一些重要的属性。
语法 | 描述 |
---|---|
size | 此选项获取虚拟机类型,openstack flavor list 输出中列出的选项之一 |
images | 此选项获取虚拟机镜像,openstack image list 输出中列出的选项之一 |
ssh_key_file | Salt-Cloud首次引导后用于SSH到虚拟机的SSH私钥,以便执行命令或脚本。此私钥的公钥必须是插入到VM的root用户帐户的authorized_key文件中的openstack公钥 |
ssh_key_name | 插入到VM root用户帐户的authorized_keys文件中的openstack SSH公用密钥的名称。在使用此公钥之前,必须使用openstack命令或horizon web UI将该密钥加载到租户的帐户中 |
ssh_interface | 此选项允许创建虚拟机公共IP,通过nova驱动器,可以在此定义私有云网络 |
networks | 此选项允许创建虚拟机二层网络,使用fixed指定二层网络ID |
minion | 此选项允许指定虚拟机salt-master,使用salt-master管理虚拟机实例 |
grains | 此选项允许指定虚拟机grins,使用role指定虚拟机实例组 |
2.2构建虚拟机实例
要使用salt-cloud创建虚拟机,请使用命令:-P: 并行构建所有指定的实例
1.指定实例文件IDweb-node1
,指定虚拟机名称web-node1.xuliangwei.com
[root@linux-node1 ~]# salt-cloud -p web-node1 web-node1.xuliangwei.com
2.通过dashboard查看
3.自动认证加入salt-master管理
[root@linux-node1 ~]# salt-key
Accepted Keys:
linux-node1.xuliangwei.com
web-node1.xuliangwei.com
2.3销毁虚拟机实例
要销毁由salt-cloud创建的虚拟机,请使用如下命令:-d:销毁指定的实例名称。
[root@linux-node1 ~]# salt-cloud -d web-node1.xuliangwei.com -y
my-openstack-config:
----------
openstack:
----------
web-node1.xuliangwei.com:
True
3.多配置文件实例
生产配置文件实例
rhel_ec2:
provider: my-ec2-config
image: ami-e565ba8c
size: t1.micro
minion:
cheese: edam
ubuntu_ec2:
provider: my-ec2-config
image: ami-7e2da54e
size: t1.micro
minion:
cheese: edam
ubuntu_rackspace:
provider: my-rackspace-config
image: Ubuntu 12.04 LTS
size: 256 server
minion:
cheese: edam
fedora_rackspace:
provider: my-rackspace-config
image: Fedora 17
size: 256 server
minion:
cheese: edam
cent_linode:
provider: my-linode-config
image: CentOS 6.2 64bit
size: Linode 512
cent_gogrid:
provider: my-gogrid-config
image: 12834
size: 512MB
cent_joyent:
provider: my-joyent-config
image: centos-6
size: Small 1GB