【问题标题】:Use Chef to set DNS before running the rest of a cookbook?在运行食谱的其余部分之前使用 Chef 设置 DNS?
【发布时间】:2019-03-23 18:04:07
【问题描述】:

我正在关注厨师之旅并学习如何对厨师进行故障排除 (https://learn.chef.io/modules/keep-your-cookbooks-up-to-date#/)。问题是我使用的每个发行版都获得了 10.0.2.3 resolv.conf 文件。

我已尝试关注此帖子: https://serverfault.com/questions/453185/vagrant-virtualbox-dns-10-0-2-3-not-working

但是,该解决方案仅适用于现有 VM。在我的食谱中,我创建了一个模板 resolv.conf.erb,并在我的 default.rb 开头放置了以下代码:

模板'/etc/resolv.conf' 做 源'resolv.conf.erb' 模式“644” 结束

但是,无论我如何尝试和配置它(default.rb 是我的策略文件运行的第一件事),厨师都要求 ubuntu 在部署我的 resolv.conf 模板之前从omnitruck.chef.io 获取 wget。这是所有 default.rb:

#
# Cookbook:: base
# Recipe:: default
#
# Copyright:: 2019, The Authors, All Rights Reserved.

include_recipe 'hardening::default'

template '/etc/resolv.conf' do
  source 'resolv.conf.erb'
  mode '644'
end

file '/etc/motd' do
  content node['base']['message']
end

在尝试 wget 之前,我还需要配置什么才能让 chef 部署 resolv.conf?

【问题讨论】:

  • 请澄清您的问题——您想在 Chef 引导程序运行之前(在 Chef 自行安装之前)配置您的 dns 解析器,还是希望您的食谱成为第一个运行的(成为第一个运行列表)?
  • 我相信它会在 Chef 安装之前。我一直在阅读它,我猜它做的第一件事就是在图像上安装厨师客户端,这就是它制作 wget 的地方。

标签: ruby-on-rails ubuntu vagrant chef-infra devops


【解决方案1】:

chef 通过在节点上下载和安装 chef 来执行其引导程序,然后才使用运行列表中的食谱执行 chef-client。因此,您需要在 Chef 启动其引导程序之前为您的节点配置您最喜欢的 dns 解析器。

如果你使用vagrant,可以试试vagrant-dnsbuild your own vagrant basebox

【讨论】:

  • 听起来好像没有办法在引导 VM 之前设置它。粗鲁。
  • @LogicFailure_2019: 肯定有 :) 只需在您的节点映像上配置 dns 解析器并创建一个新映像供您使用。
  • 这是有道理的。但我是新手,我的 google-fu 很弱。我知道 ovf 保存在 Windows 上的 C:/Users//.vagrant.d/boxes 中。您是否建议复制其中之一?还是在 virtualbox(或 vagrant)中有办法修改图像?每次我运行 vagrant up 时,它似乎都会使用 10.0.0.23 拉取基本图像。
  • 我想我找到了我需要的指南:vagrantup.com/docs/virtualbox/boxes.html。谢谢罗斯先生!
  • @LogicFailure_2019:我已经更新了我的帖子,如果它回答了您的问题,请标记为已解决:)
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
  • 2012-03-29
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多