如果我需要从模板部署 Red Hat 7,我想采取推荐的步骤来使我的“黄金映像”变得干净。它应该引导到第一个引导提示并引导用户完成典型步骤。
在 Red Hat 5/6 中,我遵循了供应商提供的文档。但是,我找不到 Red Hat 7 的等效项。具体来说,touch /.unconfigured
不会触发第一次启动设置。
9.3.1. 密封 Linux 虚拟机以作为模板进行部署
总结
在将 Linux 虚拟机制作成模板之前对其进行泛化(密封)。这可以防止从模板部署的虚拟机之间发生冲突。程序 9.6。密封 Linux 虚拟机
登录虚拟机。通过以 root 身份运行以下命令来标记系统以进行重新配置:
# touch /.unconfigured
- 删除 ssh 主机密钥。跑:
# rm -rf /etc/ssh/ssh_host_*
- 设置
HOSTNAME=localhost.localdomain
在/etc/sysconfig/network
- 删除 /etc/udev/rules.d/70-*。跑:
# rm -rf /etc/udev/rules.d/70-*
- 从 中删除HWADDR=和UUID=行
/etc/sysconfig/network-scripts/ifcfg-eth*
。- (可选)从 中删除所有日志
/var/log
并从中构建日志/root
。- 关闭虚拟机。跑:
# poweroff
编辑:步骤 1 和 7 可以通过 …
查看我节点的配置:
$property_name = {
"unit_1" => { host => [ "dns_name1/192.168.0.1/25" ,"dns_name2/192.168.0.2/25" ]
},
"unit_2" => { host => [ "dns_name3/192.168.0.3/25", "dns_name4/192.168.0.4/25" ]
},
}
include class::property
Run Code Online (Sandbox Code Playgroud)
在模板中,我使用了一些循环
"<% property_name.each do |key,value| -%>",
"<%= value['host'][id_host].split("/")[0] %>",
<%= value['host'][id_host].split("/")[1] %>,
Run Code Online (Sandbox Code Playgroud)
...编写配置文件。
但是,当我有很多“单元”(unit_3、unit_4 等)时,每次 Puppet 的守护进程运行时,模板的内容都会发生变化。
它没有任何影响,因为配置文件是正确的,但我想知道模板的循环是否可以按以下顺序生成配置文件:unit_1 然后 unit_2,然后 unit_3,...而不用随机取一些单位。
我用过这个教程:http : //www.krzywanski.net/archives/703
与之前关于厚配置与精简配置的问题略有相关,为什么将要克隆的 VM 急切归零比延迟归零需要更长的时间?
例如,在我们最近运行的一个测试中,一个急切归零的克隆需要大约 85 分钟才能完成,而更改为延迟归零使其在大约 50 分钟内完成。
急切归零与懒惰会产生多少开销?
什么时候“热切”是正确的使用模式?
嗨,我想要一些关于如何在木偶中的 erb 中编码的帮助,基本上我有
server::actionhost { 'details':
servername[ 'felix', 'washington', ],
ipa [ '192.168.43.5', '192.168.43.11', ],
enviro [ 'prod', 'uat', ],
}
Run Code Online (Sandbox Code Playgroud)
我现在想将其打印到一个文件中,其中每个数组中的每个元素都在一行中,即我的类中模板文件的输出应该是这样的:
felix 192.168.43.5 prod
washington 192.168.43.11 uat
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我在模板文件中编写了以下代码:
<% servername.each do |name| -%>
<% ipa.each do |ip| -%>
<% enviro.each do |env| -%>
<%= name %> <%= ip %> <%= env %>
<% end -%>
<% end -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
但我得到的是多次递归打印,而不是每个数组的打印,然后移动到下一个数组元素。
我正在考虑 for 循环,但不确定如何获取数组长度作为 for 循环的参数,希望得到一些有关如何完成正确输出的指导吗?
我试过做这样的事情,但它在木偶运行时失败了?
<% for id in servername.length %>
<%= servername[id] %> <%= ipa[id] …
Run Code Online (Sandbox Code Playgroud) 我在 puppet 中有以下类和定义:
$certDirectory = "/var/lib/ssl/certs"
class openssl {
package { "openssl":
ensure => latest
}
file { "openssl":
path => "/var/lib/ssl",
ensure => directory,
mode => 0644
}
file { "openssl-certs":
path => "/var/lib/ssl/certs",
ensure => directory,
mode => 0644
}
define cert($ensure = present) {
$certfile = "${certDirectory}/${name}.cert"
$keyfile = "${certDirectory}/${name}.key"
$pemfile = "${certDirectory}/${name}.pem"
file { "${name}.cert":
path => $certfile,
source => "puppet:///openssl/${name}.cert",
mode => 0640,
ensure => $ensure,
}
file { "${name}.key":
path => $keyfile,
source => …
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何构建模板(或文件,因为它的工作方式相同)文件夹的路径,然后我可以读取它并在循环中使用模板资源,因此每个模板文件都可以触发更改通知.
我不能使用 remote_directory 因为我只想在模板更改时通知服务。
我也想避免手动模板规范,因为这些目录中可能有很多文件。另外,它允许我们只更改模板文件夹中的配置,而无需更改配方。
主要问题是那些子目录,如 default、host、host-version 和逻辑厨师通过确定正确的模板文件夹。我在想,我可以从我的自定义食谱中调用一个 Chef 类中的一个方法,以到达我的逻辑(循环)的起点。
我认为应该是这样的:
entry_point = CHEF::...getEntryPointDir
entry_point.glob..
.each do
template fname do
...
end
end
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助!
我们在所有计算机上使用 Word 2003;我们还使用组策略来设置共享的“工作组模板”文件夹,这非常有用,因为我们可以将 .DOT 文件复制到那里,让所有用户都可以访问它们。
我们有一项公司政策,即所有文档都必须在页脚中包含文件路径和页码。如果可能的话,我希望能够覆盖默认的 Word 模板以包含这些模板 - 任何人都可以提出一种简洁有效的方法吗?
提前谢谢你...
在我目前正在处理的模块中,我得到了大量需要设置的配置选项,具有默认值......并且应该被分割成更短的模板文件,否则它将成为滚动的噩梦。
推荐的方法是使用一些第三方模块。没有内置的方法吗?
templates ×9
puppet ×4
centos ×1
chef ×1
disk-image ×1
group-policy ×1
networking ×1
redhat ×1
storage ×1