salt-cloud也是基于openstack来做的,它可以支持多种云的使用。比如:AliyunAzureDigitalOceanEC2Google Compute EngineHP CloudOpenStack、等等

安装相关组件和依赖包

[root@linux-node1 ~]# yum -y install salt-master salt-minion salt-cloud python-libcloud

修改配置文件

[root@linux-node1 ~]# cd /etc/salt/cloud.providers.d/
[root@linux-node1 cloud.providers.d]# cat 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
# 注意这里的类型可以通过openstack endpoint list 查看到 # Configure Openstack authentication credentials
#
user: demo
password: demo
# tenant is the project name
tenant: demo
# 项目名称 provider: openstack # skip SSL certificate validation (default false)
insecure: false

配置saltstack

[root@linux-node1 cloud.providers.d]# systemctl start salt-master
[root@linux-node1 cloud.providers.d]# vim /etc/salt/minion
master: 192.168.56.12
[root@linux-node1 cloud.providers.d]# systemctl start salt-minion
[root@linux-node1 cloud.providers.d]# salt-key
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node1.oldboyedu.com
Rejected Keys:
[root@linux-node1 cloud.providers.d]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
linux-node1.oldboyedu.com
Proceed? [n/Y] y
Key for minion linux-node1.oldboyedu.com accepted.

[root@linux-node1 cloud.providers.d]# salt '*' test.ping
linux-node1.oldboyedu.com:

True

测试salt-cloud能否连接上openstack

###### 列出所有云主机的镜像
[root@linux-node1 cloud.providers.d]# salt-cloud --list-images openstack -l debug
...........................
............................
...........................
my-openstack-config:
----------
openstack:
----------
cirros:
----------
driver:
extra:
----------
created:
2015-12-23T16:47:33Z
metadata:
----------
minDisk:
0
minRam:
0
progress:
100
serverId:
None
status:
ACTIVE
updated:
2015-12-23T16:47:33Z
get_uuid:
id:
90f1b52f-25dd-43f1-9f78-4d4de67aabfe
name:
cirros
uuid:
b22ad8d988b5925dc328cdc21a84a7670fbda0c4

##### 列出所有云主机的类型
[root@linux-node1 cloud.providers.d]# salt-cloud --list-size openstack -l debug

编写虚拟机的创建文件

[root@linux-node1 cloud.profiles.d]# pwd
/etc/salt/cloud.profiles.d [root@linux-node1 cloud.profiles.d]# cat web.conf
web-node:
provider: my-openstack-config # /etc/salt/cloud.providers.d/openstack.conf的ID
size: m1.tiny # 云主机的类型
image: cirros # 使用的镜像名称
ssh_key_file: /root/.ssh/id_rsa # 密钥
ssh_key_name: mykey # openstack页面中,访问安全里面找密钥对
ssh_interface: private_ips
networks: # 设置使用的网络,可以从openstack页面的网络板块中找
- fixed:
- 8fb1d37e-414f-4f5d-89f7-8d20fa8fabed
minion:
master: 192.168.56.11
grains:
role: webserver
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[root@linux-node1 cloud.profiles.d]# salt-cloud -p web-node node1 -l debug

########################################################################################################

使用salt-cloud创建openstack虚拟机

众所周知,saltstack有三大功能:远程执行、配置管理、云管理。其中的云管理就是通过salt-cloud完成的。salt-cloud能够管理很多云环境(公有云、私有云),连大名鼎鼎的阿里云也可以通过salt-cloud来创建虚拟机哦。

本次主要讲解使用salt-cloud管理openstack(L版)私有云来创建虚拟机。(前提openstack环境运行正常,能正常创建虚拟机)

1、 安装saltstack

yum install salt-master salt-minion salt-cloud -y

安装依赖包:

yum install python-libcloud -y

2、 创建provider配置文件,告诉salt-cloud如何连接openstack(yaml语法,注意空格)

[root@linux-node1 cloud.providers.d]# pwd
/etc/salt/cloud.providers.d
[root@linux-node1 cloud.providers.d]# vim openstack.conf
myopenstack:
# 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 provider: openstack
# skip SSL certificate validation (default false)
insecure: false

3 、检查配置:

语法:

salt-cloud --list-locations <provider_name>    查看可用的区域

salt-cloud --list-p_w_picpaths <provider_name> 查看可用的镜像

salt-cloud --list-sizes <provider_name> 查看可用的虚拟机大小

例:查看可用的镜像

salt-cloud --list-p_w_picpaths myopenstack -l debug

myopenstack:provider配置文件中定义的ID

-l debug :开启debug模式,方便定位和调试故障。

[root@linux-node1 ~]# salt-cloud --list-p_w_picpaths myopenstack -l debug
[DEBUG ] Reading configuration from /etc/salt/cloud
[DEBUG ] Reading configuration from /etc/salt/master
[DEBUG ] Using cached minion ID from /etc/salt/minion_id: linux-node1.example.com
[DEBUG ] Missing configuration file: /etc/salt/cloud.providers
[DEBUG ] Including configuration from '/etc/salt/cloud.providers.d/openstack.conf'
[DEBUG ] Reading configuration from /etc/salt/cloud.providers.d/openstack.conf
[DEBUG ] Missing configuration file: /etc/salt/cloud.profiles
[DEBUG ] Configuration file path: /etc/salt/cloud
[WARNING ] Insecure logging configuration detected! Sensitive data may be logged.
[INFO ] salt-cloud starting
[WARNING ] /usr/lib/python2.7/site-packages/novaclient/v1_1/__init__.py:30: UserWarning: Module novaclient.v1_1 is deprecated (taken as a basis for novaclient.v2). The preferable way to get client class or object you can find in novaclient.client module.
warnings.warn("Module novaclient.v1_1 is deprecated (taken as a basis for "
[DEBUG ] Could not LazyLoad parallels.avail_sizes [DEBUG ] LazyLoaded parallels.avail_locations
[DEBUG ] LazyLoaded proxmox.avail_sizes
[DEBUG ] Could not LazyLoad saltify.destroy
[DEBUG ] Could not LazyLoad saltify.avail_sizes
[DEBUG ] Could not LazyLoad saltify.avail_p_w_picpaths
[DEBUG ] Could not LazyLoad saltify.avail_locations
[DEBUG ] LazyLoaded rackspace.reboot
[DEBUG ] Could not LazyLoad openstack.list_locations
[DEBUG ] LazyLoaded rackspace.list_locations
[DEBUG ] OpenStack authenticating using password
[DEBUG ] LazyLoaded nested.output
myopenstack:
----------
openstack:
----------
cirros:
----------
driver:
extra:
----------
created:
2015-12-13T14:24:05Z
metadata:
----------
minDisk:
0 minRam:
0
progress:
100
serverId:
None
status:
ACTIVE
updated:
2015-12-13T14:24:05Z
get_uuid:
id:
c503fb83-7d52-40e9-b1cc-4773e650986e
name:
cirros
uuid:
2986f30365f55599f838f656a51acdaec1fa81a2
new:
----------
driver:
extra:
----------
created:
2015-12-25T09:17:50Z
metadata:
----------
minDisk: 0
minRam:
0
progress:
100
serverId:
None
status:
ACTIVE
updated:
2015-12-25T09:17:57Z
get_uuid:
id:
fdd664b3-ebf2-4904-815f-0d1cdf9955d4
name:
new
uuid:
9f4f8a437ebc8123c1a8725156ee91566928d9f0

可以看到,当前有两个可用的镜像,cirros 和new ,并且可以看到更过镜像的信息。

4、 编写profile配置文件,告诉salt-cloud创建虚拟机的细节,后期创建虚拟机时只需要调用该名字即可。

[root@linux-node1 cloud.profiles.d]# vim openstack_web.conf
web-node:
provider: myopenstack
size: m1.tiny
p_w_picpath: new
ssh_key_file: /root/.ssh/id_rsa
ssh_key_name: mykey
ssh_interface: private_ips
networks:
- fixed:
- 2c4c9edc-dbb8-467c-bc67-a2c6ff23d885
minion:
master: 192.168.56.11
grains:
role: webserver

5 、创建虚拟机

[root@linux-node1 cloud.profiles.d]# salt-cloud -p web-node test -l debug

-p 指定profile中虚拟机ID名称

6 、查看验证:

[root@linux-node1 ~]# nova list
--------------------+------+--------+------------+-------------+---------------------+
| ID | Name | Status | Task State | Power State | Networks |
+-------------------+------+--------+------------+-------------+---------------------+
| b4035529-6cd7-4b9b-a6e9-c63d5bfb2d4b | test | ACTIVE | - | Running | flat=192.168.56.118 |
+-------------------+------+--------+------------+-------------+---------------------+

通过上面的配置文件,salt-cloud不仅能够创建虚拟机,还能够在虚拟机里安装salt-minion,

并自动添加到salt-master认证里面去(还设置了一个grains哦,很方便吧)

############################################################################################################3

官方手册: https://docs.saltstack.com/en/latest/topics/cloud/openstack.html

安装环境:
172.16.1.211 salt-master服务器
172.16.1.240 openstack控制节点

ps: 下面都在salt-master操作

1.安装插件:

yum install salt-cloud python-libcloud

2.创建salt-cloud配置文件:

mkdir /etc/salt/cloud.providers.d/
vim /etc/salt/cloud.providers.d/openstack.conf
my-openstack-config: minion:
master: 172.16.1.211 identity_url: http://172.16.1.240:5000/v2.0/tokens
compute_name: nova
protocol: ipv4 compute_region: RegionOne user: demo
password: demo tenant: demo driver: openstack
provider: openstack insecure: false

3.查看镜像列表:

salt-cloud --list-images openstack  #查看镜像列表
salt-cloud --list-size openstack #查看云主机类型

4.创建Salt-cloud虚拟机模板文件:

vim /etc/salt/cloud.profiles.d/web.conf
web-node: #虚拟机模板名称
provider: my-openstack-config #前面配置文件定义的
size: m1.tiny #云主机类型
image: cirros #镜像名称
ssh_key_file: /root/.ssh/id_rsa #公钥文件
ssh_key_name: mykey #密钥对名称
ssh_interface: private_ips
networks:
- fixed:
- 69200e49-0f8b-47b6-9bb5-2db9bca9a393 #网络的ID
minion: #下面是自动给虚拟机安装salt-minion并配置
master: 172.16.1.211
grains:
role: webserver-01

4.通过Salt-cloud创建Openstack虚拟机:

salt-cloud -p web-node web-test1 -l debug

# -p: 虚拟机模板名称
# web-test1: 创建虚拟机的名称
# -l debug: 打印debug

使用salt-cloud创建openstack虚拟机的更多相关文章

  1. 如何使用API创建OpenStack虚拟机?

    在安装时OpenStack会加载配置信息.有不同的虚拟机模板而且与在Amazon EC2以及其他平台上看到的完全一样.这些配置是内存.vCPU.磁盘容量等的组合,定义了虚拟机的大小及容量.可以使用如下 ...

  2. OpenStack虚拟机创建过程中镜像格式的的变化过程

    Glance用来作为独立的大规模镜像查找服务,当它与Nova和Swift配合使用时,就为OpenStack提供了虚拟机镜像的查找服务,像所有的OpenStack项目一样,遵循以下设计思想: 基于组件的 ...

  3. 云计算---记一次黑客攻击openstack创建的虚拟机

    一:问题定位 现象: 近期发现有几台openstack云主机被修改密码并被肉鸡. 黑客操作日志: -- :: ##### root tty1 : #### -- :: top -- :: ##### ...

  4. VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机

    目录 目录 软件环境 前言 Openstack 接口驱动 使用 KVM 在 Compute Node 上创建虚拟机的流程 使用 VCDirver 在 vCenter 上创建虚拟机的流程 配置 vCen ...

  5. 【OpenStack 虚拟机初始化user-data & Cloud-init】

    示例: import httplib import json import base64 tenant_id='xxx' token='xxx' compute_host="xxx" ...

  6. OpenStack虚拟机状态

    OpenStack创建一个虚拟机,涉及到三种状态,vm_state,task_state和power_state. 先总结几点: 电源状态(power_state):是hypervisor的状态,从计 ...

  7. OpenStack虚拟机冷迁移与热迁移

    一.虚拟机迁移分析 openstacvk虚拟机迁移分为冷迁移和热迁移两种方式. 1.1冷迁移: 冷迁移(cold migration),也叫静态迁移.关闭电源的虚拟机进行迁移.通过冷迁移,可以选择将关 ...

  8. 使用 Azure CLI 创建 Windows 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍如何使用 Azure CLI 部署运行 Windows Server 2016 的虚拟机. 部署完成后,我们连接到服 ...

  9. 使用 Azure CLI 创建 Linux 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...

随机推荐

  1. 快速安装与配置kubernetes集群搭

    Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案.这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果.确切地说,kubernete ...

  2. js根据ClassName来删除元素(有坑误入)

    今天,被一个很简单的问题坑了一下午,基础不扎实.(js根据class名称来删除Dom元素) 但是结果却不是这样的.弄了好久还不知道怎么回事.最后找到了答案. 结果如下:为啥还有test2,4,6呢. ...

  3. Windows Server 2012 R2通过命令行重置网络环境

    转至:https://jingyan.baidu.com/article/48b37f8d5d89385a646488b5.html 我们使用Windows Server 2012 R2时会遇到通过命 ...

  4. 运维人员常用的Linux命令总结

    转至:https://www.cnblogs.com/CHLL55/p/13698946.html 目录结构 目录 说明 /bin 存放可执行文件 /boot 核心与启动相关文件 /dev 设备有关的 ...

  5. html实现随机验证码

    代码: <!DOCTYPE html> <html> <!-- head --> <head> <title>图片登录验证</titl ...

  6. 列表生成式 生成器 迭代器 yield

    列表生成式 格式:通过一个或者若干个在List里边的for构建List而非List外部的for循环 举个例子:计算从1到10整数的平方构成一个List L=[ x*x for x in range(1 ...

  7. 面向对象编程(C++篇2)——构造

    目录 1. 引述 2. 详述 2.1. 数据类型初始化 2.2. 类初始化 1. 引述 在C++中,学习类的第一课往往就是构造函数.根据构造函数的定义,构造函数式是用于初始化类对象的数据成员的.无论何 ...

  8. keepass实践

    参考软件教程 篇一:从入门到熟练:KeePass全网最详使用指南 运行之后快到来不及截图,就是这么速

  9. Nodejs在Linux环境安装

    一.下载安装包 http://nodejs.cn/download/ 二.解压 tar -xf node-v14.3.0-linux-x64.tar.xz 三.配置 1.编辑文件vim /etc/pr ...

  10. elasticsearch的安装与使用

    1:官网进行下载 https://www.elastic.co/cn/elasticsearch/ 2:这里我用的是7.15.2 3:进行下载解压至d 盘 4:接下来我们cmd 切换目录进行运行 5: ...