小编Fra*_*eil的帖子

FQDN 是如何确定的?

我正在使用 Ubuntu,并使用 Puppet 管理我的主机。直到一两台机器之前,我的主机解析为 hostname.backend.example.com。最后两台机器解析为 hostname.staging.internal。我对这些名字是如何得出的感到有些困惑。

# /etc/resolv.conf
nameserver 173.203.4.8
nameserver 173.203.4.9

domain backend.example.com
Run Code Online (Sandbox Code Playgroud)

# /etc/hosts
10.182.230.38  web01.staging.internal web01
127.0.0.1     localhost localhost.localdomain
Run Code Online (Sandbox Code Playgroud)

/bin/hostname 回复如下:

# hostname -a
web01

# hostname -A
108-166-97-91.static.cloud-ips.com web01.staging.internal 

# hostname -I
108.166.97.91 10.182.230.38
Run Code Online (Sandbox Code Playgroud)

存在将 108.166.97.91 映射到 web01.backend.example.com 的 DNS 记录。主机名为何、在何处以及如何获取 web01.staging.internal 而不是公共 DNS 记录?

domain-name-system ubuntu

7
推荐指数
1
解决办法
6459
查看次数

包含类时如何打破 Puppet 中的依赖循环

我有以下定义:

class nginx::install{
  ...
}

class nginx::service{
  ...
}

class nginx::config{
  ...
}

class nginx{
  include nginx::install, nginx::service, nginx::config
}

class jenkins::nginx{
  include nginx

  file{'/etc/nginx/sites-enabled/jenkins':
    source => ...,
    require => Class['nginx'],
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,Puppet 告诉我我有一个循环:

err: Could not apply complete catalog: Found 1 dependency cycle:
(Class[Jenkins::Nginx] => File[/etc/nginx/sites-available/jenkins] => Class[Jenkins::Nginx])
Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz
Run Code Online (Sandbox Code Playgroud)

jenkins::nginx 中对 nginx 的普通引用引用了自身。我如何告诉 Puppet 我依赖于顶级 nginx 类?

我试图将我的依赖项更改为Class['::nginx'](就像我在 Ruby 中一样),现在 Puppet 告诉我它找不到依赖项。

puppet

7
推荐指数
1
解决办法
5117
查看次数

Puppet 生成的 systemd 单元文件?

我希望以下内容能够真正启动我的服务:

service{'legacy':
  ensure   => running,
  start    => "cd /vagrant/nginx-reverse-proxy/legacy && /usr/bin/bundle exec ruby app.rb -o 127.0.0.1 -e production -p ${port}",
  provider => 'systemd',
}
Run Code Online (Sandbox Code Playgroud)

我知道并理解 start 命令不正确,但我不知道如何启动实际的 Ruby Sinatra 应用程序。我实际上希望这样的事情起作用:

service{'legacy':
  ensure   => running,
  command  => "cd /vagrant/nginx-reverse-proxy/legacy && /usr/bin/bundle exec ruby app.rb -o 127.0.0.1 -e production -p ${port}",
  provider => 'systemd',
}
Run Code Online (Sandbox Code Playgroud)

有点像cron。我习惯了daemontools,systemd的模型完全不同。我必须自己创建单元文件吗?并链接单元文件?

我找到了如何使用 puppet 启用 systemd 实例化服务?它启动某种 USB 设备。我还发现了似乎管理 systemd 本身的camptocamp/puppet-systemd。Puppet 关于systemd 服务提供商的文档在细节上相当稀少。

如何使用 Puppet 创建一个 systemd 服务?

puppet

4
推荐指数
1
解决办法
1万
查看次数

挂载前如何依赖 Puppet 类?

我使用 Puppet 挂载 Cloudfuse 以访问 Rackspace 的 Cloudfiles,但在新主机上,挂载运行过快,即使我需要整个类。在Pro Puppet 中,James 建议像这样拆分类定义:

class cloudfuse{
  include cloudfuse::install, cloudfuse::service, cloudfuse::config
}

class cloudfuse::install{
  # download and install
}

class cloudfuse::config{
  file{'/root/.cloudfuse':
    notify => Class['cloudfuse::service'],
  }
}

class cloudfuse::service{
  service{'cloudfuse':
    ensure => running,
  }
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好。当我准备好挂载时,我需要顶级的父类,如下所示:

exec{'mount /data/cloudfiles':
  command => "/usr/local/bin/cloudfuse /data/cloudfiles",
  require => [
    File['/data/cloudfiles'],
    Class['cloudfuse'],
  ]
}
Run Code Online (Sandbox Code Playgroud)

问题是:

  1. 这是惯用语吗?我在别处见过这个,所以我会说它是。
  2. 我真的应该要求cloudfuse::install而不是父母吗?

我知道 requirecloudfuse::install会解决我的问题,但是如果我有一个非常简单的类,也许我不会像这样分成三个,那么我必须猜测/查看清单才能知道如何声明依赖项。

puppet

1
推荐指数
1
解决办法
2227
查看次数

为什么 Hiera 找不到环境,puppet 也找不到

鉴于这些文件:

# find /etc/puppetlabs/code -type f | grep -v modules | xargs head -n 100
==> /etc/puppetlabs/code/environments/production/hieradata/common.yaml <==
pgwatch:
  password: "mypass1"
puppetdb:
  password: "mypass2"

==> /etc/puppetlabs/code/environments/production/manifests/site.pp <==
node "todd.ca.seevibes.com" {
  class { 'postgresql::globals':
    encoding            => 'UTF-8',
    locale              => 'en_US.UTF-8',
    manage_package_repo => true,
    version             => '9.1',
  } -> class{'postgresql::server':
  } -> postgresql::server::db{'puppetdb':
    user     => 'puppetdb',
    password => postgresql_password('puppetdb', hiera('puppetdb::password')),
  } -> postgresql::server::db{'pgwatch':
    user     => 'pgwatch',
    password => postgresql_password('pgwatch', hiera('pgwatch::password')),
  }

  postgresql::server::pg_hba_rule{'allow pgwatch from anywhere':
    address     => '0.0.0.0/32',
    auth_method => 'md5',
    database …
Run Code Online (Sandbox Code Playgroud)

puppet

1
推荐指数
1
解决办法
2260
查看次数

标签 统计

puppet ×4

domain-name-system ×1

ubuntu ×1