cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)
本节介绍几个 cloud-init 的典型应用:设置 hostanme,设置用户初始密码,安装软件。
设置 hostname
cloud-init 默认会将 instance 的名字设置为 hostname。但这样不太方便,有时希望能够将二者分开,可利用 cloud-init 的set_hostname
模块实现。set_hostname
它会查询 metadata 中 hostname 信息,默认值就是 instance 的名字。我们可以指定自己的 hostname,方法是将下面的内容传给 cloud-init:
#cloud-config
hostname: my1.cloudman.cc
manage_etc_hosts: true
说明如下:
cloud-init 只会读取以
#cloud-config
开头的数据,所以这一行一定要写对。hostname: my1.cloudman.cc
告诉 cloud-init 将 hostname 设置为 my1.cloudman.cc。manage_etc_hosts: true
告诉 cloud-init 更新 /etc/hosts 文件。
接下来的问题是:如何将这些信息传给 cloud-init?
有三几种方法:
① instance 部署时,直接将其粘贴到 Customization Script
输入框中。
② 将其保存为文件,instance 部署时上传(上图 ② 所示)。
③ 将其保存为文件,命令行 nova boot
或者 openstack server create
部署 instance 时,使用参数 --user-data
传入。
部署成功后,hostname 正确设置,/etc/hosts 也相应更新。
定制用户初始密码
官方的 cloud image 默认只能通过 ssh key 登录。我们可以利用set-passwords
模块为用户设置密码并启用密码登录。需要传入的脚本如下:
#cloud-config
chpasswd:
list: |
root:123456
ubuntu:123456
expire: false
ssh_pwauth: true
说明如下:
root 和 ubuntu 用户密码设置为 123456。
ssh_pwauth
启用密码登录。
instance 启动后 ssh 验证:
ubuntu 用户 ssh 密码登录成功,并且可通过密码切换到 root。
安装软件
标准镜像中不可能包含我们需要的所有软件,定制安装是不可避免的。一个办法是部署完后手动安装,另一个办法是通过 package-update-upgrade-install
模块让 cloud-init 自动为我们安装。
需要传入的脚本如下:
#cloud-config
apt:
primary:
- arches: [default]
search:
- http://1.2.3.4
packages:
- pwgen
- pastebinit
- [libpython2.7, 2.7.3-0ubuntu3.1]
说明如下:
apt
指定安装源的位置,这里为 http://1.2.3.4 。如果是 yum 源则用yum_repos
模块指定,具体用法可参看官网文档。packages
指定需要安装的软件包,还可以指定具体版本。
instance 启动后可看到 /etc/apt/sources.list 中安装源已经更新为http://1.2.3.4。
由于 http://1.2.3.4 不是一个有效的 apt 源,安装肯定会失败,我们可以在 /var/log/cloud-init.log 看到失败的信息。
虽然失败了,但我们至少可以确定如下事情:
传入的脚本是有效的,cloud-init 确实在尝试安装指定的软件。
/var/log/cloud-init.log 会完整地记录 cloud-init 运行的所有细节,是 debug 最重要的工具。
cloud-init 的模块众多,功能很全,是实现 instance 定制的神器。由于篇幅所限,这里只讨论了几个典型用例。更多用法以及示例可参看 https://cloudinit.readthedocs.io
关于 Metadata 和 cloud-init 的主题就讨论到这里,下一次我们将开始新的教程 《每天5分钟玩转容器技术》,敬请期待。
cloud-init 典型应用 - 每天5分钟玩转 OpenStack(174)相关推荐
- LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)
http://www.cnblogs.com/CloudMan6/p/5277927.html LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8) LVM 类型的 ...
- 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)
http://www.cnblogs.com/CloudMan6/p/5402490.html 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22) 本节首先讨论 p_ ...
- Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)
Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...
- 部署 DevStack - 每天5分钟玩转 OpenStack(17)
http://www.cnblogs.com/CloudMan6/p/5357273.html 部署 DevStack - 每天5分钟玩转 OpenStack(17) 本节按照以下步骤部署 DevSt ...
- Cinder 组件详解 - 每天5分钟玩转 OpenStack(47)
Cinder 组件详解 - 每天5分钟玩转 OpenStack(47) 本节我们将详细讲解 Cinder 的各个子服务. cinder-api cinder-api 是整个 Cinder 组件的门户, ...
- 每天5分钟玩转openstack跟学(一)预备知识
前言:对于openstack我是一名小白,打算跟着CloudMan的<每天5分钟玩转openstack>进行学习,有兴趣的小伙伴可以跟着我一起,相互探讨,互相进步,该系列博文基本不涉及原理 ...
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
写在最前面 <每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节 ...
- 学习 OpenStack 的方法论 - 每天5分钟玩转 OpenStack(150)
作为 OpenStack 的核心教程,我们已经到了最后总结的部分. OpenStack 目前已经有好几十个模块,本教程讨论的是最最重要的核心模块:Keystone,Nova,Glance,Cinder ...
- cloud-init 工作原理 - 每天5分钟玩转 OpenStack(171)
cloud-init 是 linux 的一个工具,当系统启动时,cloud-init 可从 nova metadata 服务或者 config drive 中获取 metadata,完成包括但不限于下 ...
最新文章
- .Net转Java自学之路—Hibernate框架篇三(查询方式)
- 出租司机给我上的MBA课 -- [ 来自: ] [作者:cexo255]
- 【比较面】真核生物和原核生物的异同
- 刷题向》一道逆向思维题(BZOJ1046)(NORMAL)
- 支付宝前端推出《Web前端开发入门手册》
- 字符串指针与一维指针数组的区别
- vector 的删除
- Java中List转换为数组,数组转List
- Chrome您的连接不是私密连接,解决办法
- c语言表达式1 33的值是,2015年计算机二级C语言测试题及答案(1)
- [讨论] 1.虚拟设备驱动程序初步
- matlab如何写一个循环,matlab中for循环怎么写
- 名词性从句的时态规则
- 计算广告——搜索广告技术初窥
- MATLAB许可证过期的解决办法
- crack-jar游戏之乐游
- google 学术一直 sorry 怎么办?
- Windows10忘记Microsoft账户密码桌面登录进不去,不重装系统删除微软账户更改本地用户登录
- SpringBoot + laypage分页 + 模糊查询
- VIM 配色方案推荐
热门文章
- 数学建模学习(85):人工蜂群优化算法(ABCO)求解多元函数
- python爬取MOOC课程信息
- SpringBoot配置文件的说明
- 浅入浅出代理模式与Spring事务管理
- JavaSE笔记 [全文字数7.1W]
- JAR 文件格式的强大功能(java中jar工具的使用)
- 蓝桥杯模拟题.花园灌溉(bfs)
- 窥探Kotlin世界(进阶语法)
- 转行3D游戏模型师,你了解次世代模型吗?
- pyecharts终于更新啦!| pyecharts-Map3D画3D立体地图