-
Notifications
You must be signed in to change notification settings - Fork 71
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b7fc021
commit 1f2d3f1
Showing
7 changed files
with
766 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
128 changes: 127 additions & 1 deletion
128
chapter15/15-21.Salt-Cloud-Getting-Started-With-OpenStack.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,129 @@ | ||
# Getting Started With OpenStack | ||
|
||
https://docs.saltstack.com/en/latest/topics/cloud/openstack.html | ||
## Openstack Cloud Driver | ||
|
||
### depends - 依赖关系 | ||
|
||
- [shade>=1.19.0](https://pypi.python.org/pypi/shade) | ||
|
||
OpenStack是一个开源项目,许多云提供商正在使用它们,不过每个云提供商都有自己的使用方式。 | ||
|
||
该OpenStack驱动程序使用由OpenStack Infra团队管理的shade python模块。 编写该模块是为了处理用于salt的不同OpenStack工具的所有不同版本,因此大多数命令只是传递给该模块以处理所有内容。 | ||
|
||
### Provider - 驱动程序配置 | ||
|
||
有两种方法配置该驱动程序。 第一个是仅让shade处理所有内容,并使用[os-client-config](https://docs.openstack.org/os-client-config/latest/user/configuration.html#config-files)进行配置并设置好/etc/openstack/clouds.yml。 | ||
```yaml | ||
clouds: | ||
democloud: | ||
region_name: RegionOne | ||
auth: | ||
username: 'demo' | ||
password: secret | ||
project_name: 'demo' | ||
auth_url: 'http://openstack/identity' | ||
``` | ||
然后在salt provider中基于democloud名称进行引用。 | ||
```yaml | ||
myopenstack: | ||
driver: openstack | ||
cloud: democloud | ||
region_name: RegionOne | ||
``` | ||
这允许仅对salt-cloud和所有其他使用/etc/openstack/clouds.yml的其他openstack工具使用一种配置方案。 | ||
另一种方法是允许在salt provider程序配置中指定所有内容,而不是使用额外的配置文件。 这将允许仅通过minion的pillar传递salt-cloud配置信息,而不必在每个minion.abs上写入clouds.yml文件。 | ||
```yaml | ||
myopenstack: | ||
driver: openstack | ||
region_name: RegionOne | ||
auth: | ||
username: 'demo' | ||
password: secret | ||
project_name: 'demo' | ||
auth_url: 'http://openstack/identity' | ||
``` | ||
或者,如果您需要使用profile配置文件来设置一些其他内容,则可以将其作为配置文件传递以使用任何[供应商](https://docs.openstack.org/openstacksdk/latest/user/config/vendor-support.html)的配置选项。 | ||
```yaml | ||
myrackspace: | ||
driver: openstack | ||
profile: rackspace | ||
auth: | ||
username: rackusername | ||
api_key: myapikey | ||
region_name: ORD | ||
auth_type: rackspace_apikey | ||
``` | ||
这将获取用于Rackspace的配置文件,并为auth_url和services的不同api版本设置所有正确的选项。 | ||
### Profile - 云主机配置 | ||
用于构建服务器的大多数选项只是从shade传递到[create_server](https://docs.openstack.org/shade/latest/user/usage.html#shade.OpenStackCloud.create_server)函数。 | ||
与salt相关的几个特定参数是: | ||
- ssh_key_file: ssh密钥的路径,用于登录机器以引导系统 | ||
- ssh_key_name: Openstack中的密钥对的名称 | ||
- userdata_template: 如果userdata是模板文件,则将使用的渲染器设置。Default: False | ||
- ssh_interface: 用于引导进行登录的接口地址,可选的值有public_ips,private_ips,floating_ips,fixed_ips | ||
```yaml | ||
centos: | ||
provider: myopenstack | ||
image: CentOS 7 | ||
size: ds1G | ||
ssh_key_name: mykey | ||
ssh_key_file: /root/.ssh/id_rsa | ||
``` | ||
这是一种最小化的必需配置方案。 | ||
如果设置了元数据以协助确认主机已完成了设置,则可以使用`wait_for_metadata`参数: | ||
```yaml | ||
centos: | ||
provider: myopenstack | ||
image: CentOS 7 | ||
size: ds1G | ||
ssh_key_name: mykey | ||
ssh_key_file: /root/.ssh/id_rsa | ||
meta: | ||
build_config: rack_user_only | ||
wait_for_metadata: | ||
rax_service_level_automation: Complete | ||
rackconnect_automation_status: DEPLOYED | ||
``` | ||
|
||
[create_server](https://docs.openstack.org/shade/latest/user/usage.html#shade.OpenStackCloud.create_server) 文档中的任何其他内容都可以使用上面的配置方法进行传递。 | ||
- image: 包含镜像信息的字典, 用于引导的镜像名称或ID。除非提供了 boot_volume 参数,否则 image 参数是必需提供的。 | ||
- flavor: Flavor信息字典,提供要启动的name或ID。 | ||
- auto_ip: 是否采取措施为服务器找到可路由的IP。 (defaults to True) | ||
- ips: 将要附加到服务器上使用的ip地址列表。 (defaults to None) | ||
- ip_pool: 要从中获取地址的网络或浮动IP池的名称。 (defaults to None) | ||
- root_volume: 启动系统使用的存储卷的Name或ID (defaults to None - deprecated, use boot_volume) | ||
- boot_volume: 启动系统使用的存储卷的Name或ID (defaults to None) | ||
- terminate_volume: 如果从卷启动,则在销毁服务器时是否应将其删除。 (defaults to False) | ||
- volumes: (optional) 附加到服务器的存储卷列表。 | ||
- meta: (optional) 要为此服务器存储的任意键/值元数据的字典。 键和值都必须为<= 255个字符。 | ||
- files: (optional, deprecated) 引导时要在服务器上覆盖的文件的命令。 键是文件名(像是/etc/passwd),值是文件内容(作为字符串或类似文件的对象)。 最多允许五个条目,每个文件的大小不得超过10k。 | ||
- reservation_id: 请求的服务器集的UUID。 | ||
- min_count: (optional extension) 启动的最小服务器数。 | ||
- max_count: (optional extension) 启动的最大服务器数。 | ||
- security_groups: 安全组名称列表。 | ||
- userdata: 要传递给元数据服务器并公开的用户数据,它也可以是文件类型对象或字符串。 | ||
- key_name: (optional extension) 要注入实例的预先创建的密钥对的名称。 | ||
- availability_zone: 实例放置的可用区名称。 | ||
- block_device_mapping: (optional) 该服务器的块设备映射命令。 | ||
- block_device_mapping_v2: (optional) 该服务器的块设备映射命令。 | ||
- nics: (optional extension) 要添加到此服务器的网卡的有序列表,以及有关连接的网络、固定IP、端口等的信息。 | ||
- scheduler_hints: (optional extension) 客户端指定的任意键值对,以帮助启动实例。 | ||
- config_drive: (optional extension) 配置驱动器使用的值,boolean或者是volume-id。 | ||
- disk_config: (optional extension) 控制在创建服务器时如何对磁盘进行分区。 可能的值为“AUTO”或“MANUAL”。 | ||
- admin_pass: (optional extension) 添加用户提供的管理员密码。 | ||
- timeout: (optional) 超时等待的秒数,默认为60。参见 wait 参数。 | ||
- reuse_ips: (optional) 在需要使用浮动IP的情况下是否尝试重用预先存在的浮动ip(默认值为True) | ||
- network: (optional) 要将服务器连接到的网络的字典信息或名称或ID。 与nics参数互斥。 也可以是网络名称或ID或网络字典的列表。 | ||
- boot_from_volume: 是否从存储卷启动。 当'boot_volume'为True,boot_from_volume=True但没有一个有效的boot_volume存在时,它将根据镜像创建一个卷并使用该卷。 | ||
- volume_size: 从卷启动映像时,创建的卷应为多大? 默认为50G。 | ||
- nat_destination: 如果无法从云的配置中推断出,则应该将创建的浮动IP连接到哪个网络。 (可选,默认为无) | ||
- group: ServerGroup dict,名称或ID。如果在scheduler_hints和group参数中都提供了组设置信息,则group参数将获胜。 (可选,默认为无) | ||
|
||
> 注意 | ||
> | ||
> 如果添加了任何不在此列表中的内容,则可以将其添加到profile配置文件的Extras字典中,这样它就将会被添加到create_server函数中。 |
Oops, something went wrong.