Простые варианты
bash "insert_line" do user "root" code <<-EOS echo "172.22.0.47 www.example.com" >> /etc/hosts EOS not_if "grep -q www.example.com /etc/hosts" end
или
ruby_block "insert_line" do block do file = Chef::Util::FileEdit.new("/etc/hosts") file.insert_line_if_no_match("/www.example.com/", "www.example.com") file.write_file end end
Правильный вариант, добавление при помощи рецепта
Добавляем в файл metadata.rb , в рецепт который будет добавлять строки:
define 'line'
https://github.com/sous-chefs/line
Пример, как добавлять ключи ssh
system_user = case node[:platform] when 'ubuntu' 'ubuntu' when 'centos' 'root' end node[:users].each do |user_add,user| key_dir = "/home/#{system_user}/.ssh/" key_file = "#{key_dir}/authorized_keys" key_line = "#{user[:ssh_key]} #{user[:user_name]}" if(!File.directory?(key_dir)) directory key_dir do owner system_user group system_user mode '0755' action :create end end if(!File.exist?(key_file)) file key_file do mode '0600' owner system_user group system_user end end append_if_no_line "authorized_keys" do path "#{key_file}" line "#{key_line}" end end
0 Comment