Skip to content

Instantly share code, notes, and snippets.

@devops-school
Created November 22, 2022 10:41
Show Gist options
  • Save devops-school/56f994e6e6f989bda42fc403edb7472f to your computer and use it in GitHub Desktop.
Save devops-school/56f994e6e6f989bda42fc403edb7472f to your computer and use it in GitHub Desktop.
Chef Tutorials: template Resource with example
Example
# Content of index.html.erb
# index.html.erb must be located at cookbook/templates/index.html.erb
<h1> This is our chef ohai attributes <%=node['platform'] %></h1>
<h1> This is our Recipe attributes <%=node['devopsschool']['message'] %></h1>
<% node['learn_chef_httpd']['default'].each do |key, value| -%>
<% unless value.empty? -%>
<%= key %>=<%= value %>
<% end %>
<% end %>
<%- 4.times do %>
<%= @hi %>, <%= @world %> from <%= @from %>!
<%- end %>
# Content of attributes/default.rb
default['elasticsearch']['default']['ES_USER'] = ''
default['elasticsearch']['default']['ES_GROUP'] = ''
default['elasticsearch']['default']['ES_HEAP_SIZE'] = ''
default['elasticsearch']['default']['MAX_OPEN_FILES'] = ''
default['elasticsearch']['default']['MAX_LOCKED_MEMORY'] = 'unlimited'
default['elasticsearch']['default']['MAX_MAP_COUNT'] = ''
default['elasticsearch']['default']['LOG_DIR'] = '/var/log/elasticsearch'
default['elasticsearch']['default']['DATA_DIR'] = '/var/lib/elasticsearch'
default['elasticsearch']['default']['WORK_DIR'] = '/tmp/elasticsearch'
default['elasticsearch']['default']['CONF_DIR'] = '/etc/elasticsearch'
default['elasticsearch']['default']['CONF_FILE'] = '/etc/elasticsearch/elasticsearch.yml'
default['elasticsearch']['default']['RESTART_ON_UPGRADE'] = ''
# Content of default.rb
template "/var/www/html/index.html" do
source "index.html.erb"
owner 'root'
group 'root'
mode '0755'
variables(
hi: 'Tesing',
world: 'Welt',
from: node['fqdn']
)
end
template '/etc/sudoers' do
source 'sudoers.erb'
mode '0440'
owner 'root'
group 'root'
variables(sudoers_groups: node['authorization']['sudo']['groups'],
sudoers_users: node['authorization']['sudo']['users'])
end
Content of templates/default/sudoers.erb
------------------------------------------
#
# /etc/sudoers
#
# Generated by Chef for <%= node['fqdn'] %>
#
Defaults !lecture,tty_tickets,!fqdn
# User privilege specification
root ALL=(ALL) ALL
<% @sudoers_users.each do |user| -%>
<%= user %> ALL=(ALL) <%= "NOPASSWD:" if @passwordless %>ALL
<% end -%>
# Members of the sysadmin group may gain root privileges
%sysadmin ALL=(ALL) <%= "NOPASSWD:" if @passwordless %>ALL
<% @sudoers_groups.each do |group| -%>
# Members of the group '<%= group %>' may gain root privileges
<%= group %> ALL=(ALL) <%= "NOPASSWD:" if @passwordless %>ALL
<% end -%>
Content of attributes/default.rb
# --------------------------------------
default['authorization']['sudo']['groups'] = %w(sysadmin wheel admin)
default['authorization']['sudo']['users'] = %w(jerry greg)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment