Chef добавить строку в файл

Простые варианты

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

 

Chef

Related Articles

0 Comment

Leave a Comment

Ваш адрес email не будет опубликован.