设置hostname
由于 http://1.2.3.4 不是一个有效的 apt 源,安装肯定会失败,我们可以在 /var/log/cloud-init.log 看到失败的信息。
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:
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
设置hostname的更多相关文章
- CentOS7设置hostname、hosts、静态IP地址、关闭防火墙
针对新安装或者克隆后的虚拟机配置 1. 设置hostname 方法1: centos7 里面修改hostname的方式有所改变,修改/etc/hosts和/etc/sysconfig/network两 ...
- ubuntu 设置hostname
永久修改hostname: # sudo vim /etc/hostname # sudo vim /etc/hosts
- <CentOS7>如何设置hostname
在CentOS/RHEL 7中,有个叫hostnamectl的命令行工具,它允许你查看或修改与主机名相关的配置: ceph@client-node ~]$ hostnamectlstatus Stat ...
- BurpSuite 设置Hostname Resolution
#写在前面 这种情况你可能遇到过: 对方用了CDN, 你查到了对方真实IP, 但还不能100%肯定. 这时候, 最好的测试就是 win/linux修改HOST文件 Win重启电脑 Linux重启网络 ...
- 为什么 jmeter 分布式测试,一定要设置 java.rmi.server.hostname
之前总结了 jmeter 分布式测试的过程,在部署过程中提到,要在 system.properties 中配置自己的 IP. 至于为什么要这么做,源于这一次 debug 的过程. 运行环境 mint, ...
- Hadoop技巧(03):HostName命名带来的问题
阅读目录 序 HostName 问题 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink ...
- 使用shell/python获取hostname/fqdn释疑
一直以来被Linux的hostname和fqdn(Fully Qualified Domain Name)困惑了好久,今天专门抽时间把它们的使用细节弄清了. 一.设置hostname/fqdn 在Li ...
- DHCP Set Hostname
参考: FreeBSD DHCP Set Hostname ( Empty Hostname After Reboot ) -- http://www.cyberciti.biz/faq/freebs ...
- WebSphere常用设置
WebSphere常用设置 1.查看环境配置信息D:\Program Files\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\AboutThisPro ...
随机推荐
- 缓存验证Last-Modifie和Etag的使用
看这张图,是浏览器发出请求到请求缓存到过程,这么一个原理 那么http里面如何进行验证呢?主要有两个验证到http头 Last-Modified(上次修改时间) 主要配合If-Modified-Sin ...
- 2017.10.10 java中的继承与多态(重载与重写的区别)
1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...
- Ubuntu 16.04安装docker(2018年最新)
参考https://blog.csdn.net/bingzhongdehuoyan/article/details/79411479 http://www.cnblogs.com/lighten/p/ ...
- 服务器操作nginx相关操作命令
服务器操作nginx相关操作命令 登录服务器: ssh root@0.0.0.0 -p 22100 启动nginx: /usr/local/nginx/sbin/nginx 查看nginx是否启动 p ...
- ES6初识- Class
{ //基本定义和生成实例 class Parent{ //构造函数 constructor(name='lisi'){ this.name=name; } //属性get,set get longN ...
- using namespace std 是什么意思?
摘录CSDN上面大牛的回答简要意思就是使用标准库,想知道更清楚的继续读下面的. using namespace std 意思: using 和namespace都是C++的关键词. ...
- 远程桌面连接失败,提示CredSSP加密Oracel修正问题解决
今天远程桌面的时候失败了,出现以下提示 于是上网找解决办法,经过测试,该方法是可行的. 首先,在控制台中输入regedit,打开注册表
- 将 cmd 中命令输出内容保存为 TXT 文本文件
如果执行的命令输出内容较多,那么 cmd 控制台将会自动清除前面的内容,那么如何将屏幕的所有内容导出到文本文件? 下面给出简单的演示例子 ping百度,不会自动结束,按 Ctrl+C 强制结束,pin ...
- asp.net core-项目开发中问题汇总
无法启动进程\Program File\dotnet\dotnet.exe.进程创建失败,出现错误:系统找不到指定的文件如下图: 解放方案:1.修改系统环境变量 2.重启电脑
- html常用的实体符号
HTML中有用的字符实体 字符实体的书写方式如:&entity_name(实体名称法) 或 &#entity_number(实体数字法) 例如用字符实体的形式表示小于号:< 或 ...