簡體   English   中英

Puppet 和 hiera,如何應用更改?

[英]Puppet and hiera,how to apply changes?

我想通過 puppet 更新 cron。 直到今天,我只使用工頭申請,從未使用過 hiera。 在此之后HOWTO首先我必須創造hiera迪爾斯

cd /etc/puppet && mkdir -p hieradata/development hieradata/production/domains hieradata/production/fqdns hieradata/production/OBSOLETE hieradata/production/roles

然后我編輯 hiera.yaml

:backends:
  - yaml :yaml: :datadir: '/etc/puppet/hieradata/%{::environment}' :hierarchy:
- fqdns/%{::fqdn}
- roles/%{::role}
- domains/%{::domain}
- common

然后我放入 common.yaml

## Cron module
cron::enable: true     # on startup
cron::ensure: true     # running
cron::crontab_path: /etc/crontab
puppetheader: Managed by Puppet @ site.priv

cron::crontab_vars_hsh:
  SHELL: /usr/bin/sh
  PATH: /sbin:/bin:/usr/sbin:/usr/bin
  MAILTO: ""
  HOME: /root

cron::crontab_site_job_hsh:
  'check scripts in cron.hourly, cron.daily, cron.weekly and cron.monthly': 
    - "*/35   *  *  *  *  script.sh >/dev/null 2>&1"

希拉似乎工作

hiera -c ../hiera.yaml cron::ensure

hiera cron::ensure 
true

但是在 puppet agent -t... 之后沒有任何變化並且 /etc/crontab 是系統默認值。 我也做過

puppet apply -e 'include cron' --hiera_config=/etc/puppet/hiera.yaml  --verbose --debug

並返回

Debug: Scope(Class[Cron::Crontab::Config]): Retrieving template cron/crontab.erb
Debug: template[/etc/puppet/environments/production/modules/cron/templates/crontab.erb]: Bound template variables for /etc/puppet/environments/production/modules/cron/templates/crontab.erb in 0.00 seconds
Warning: Variable access via 'puppetheader' is deprecated. Use '@puppetheader' instead. template[/etc/puppet/environments/production/modules/cron/templates/crontab.erb]:1
   (at /usr/share/ruby/vendor_ruby/puppet/parser/templatewrapper.rb:77:in `method_missing')
Error: Failed to parse template cron/crontab.erb:
  Filepath: /usr/share/ruby/vendor_ruby/puppet/parser/templatewrapper.rb
  Line: 82
  Detail: Could not find value for 'package_name' at /etc/puppet/environments/production/modules/cron/templates/crontab.erb:2
 at /etc/puppet/environments/production/modules/cron/manifests/init.pp:47 on node server.example.com
Error: Failed to parse template cron/crontab.erb:
  Filepath: /usr/share/ruby/vendor_ruby/puppet/parser/templatewrapper.rb
  Line: 82
  Detail: Could not find value for 'package_name' at /etc/puppet/environments/production/modules/cron/templates/crontab.erb:2
 at /etc/puppet/environments/production/modules/cron/manifests/init.pp:47 on node centos.example.com

我想念什么?

編輯 1:我添加了 .erb

## <%= puppetheader %>
# for <%= package_name %>

<% if (!crontab_vars_hsh.empty?)  -%>
## Variables
<% crontab_vars_hsh.sort.each do |key,val| -%>
<%= key %>=<%= val %> 
<% end -%>
<% end -%>

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * username command-to-be-executed

<% if (!crontab_site_job_hsh.empty?)  -%>
## Site Wide Jobs
<% crontab_site_job_hsh.sort.each do |key,val| -%>

# <%= key %>
<% val.each do |croncmd|  -%>
 <%= croncmd %>
<% end -%>
<% end -%>
<% end -%>

<% if (!crontab_node_job_hsh.empty?)  -%>
## Node Specific Jobs
<% crontab_node_job_hsh.sort.each do |key,val| -%>

# <%= key %>
<% val.each do |croncmd|  -%>
 <%= croncmd %>
<% end -%>
<% end -%>
<% end -%>

定時任務類型

cron是 Puppet 5 之前的 Puppet 通用類型,無需安裝特殊模塊。 對於 Puppet 6 及更高版本,需要cron_core模塊(資源已移至外部模塊),例如

puppet module install puppetlabs-cron_core

用法應該是一樣的。

cron { 'myscript':
  command => '/usr/bin/python myscript.py',
  user    => 'root',
  minute  => '30',
  hour    => '0',
}

如果要使用 Hiera yaml,請聲明一些作業

cron_jobs:
  'myscript':
    command: 'm/usr/bin/python myscript.py'
    minute: 30
    hour: 0
    date: '*'
    month: '*'
    weekday: '*'
    user: root

在木偶代碼中:

create_resources (cron, lookup('cron_jobs', Hash, undef, {}))

定時模塊

cron模塊內部不使用 Puppet 的cron類型,它直接管理磁盤上的配置文件。 因此 API 可能略有不同:

---
cron::job:
  'myscript':
    command: 'm/usr/bin/python myscript.py'
    minute: 30
    hour: 0
    date: '*'
    month: '*'
    weekday: '*'
    user: root

並且不要忘記在節點定義的某處添加include cron

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM