Avoiding duplicate string writing

Hi all,

I’m trying to run the code below. Basically I want to include the users
“user” and “user2” after the line “Authentication:”. I’m running this
ruby_block inside a Chef recipe and in a first moment it works as
expected, however, after I run “chef-solo” again the recipe is applied
again and two more lines are created in the destination file. I need a
way for my script to check for the existence of “user” and “user2” lines
and then stop the script and write nothing.

I suspect I should use some kind of regular expression but I am not sure

Any ideas? Below follows the code.

Thanks for your help.

ruby_block “insert_line_to_sshd” do*
** block do**
** file = Chef::Util::FileEdit.new("/tmp/testconf")**
** file.insert_line_after_match(“Authentication:”, “AllowUsers/1
** file.insert_line_after_match(“Authentication:”, “AllowUsers/1
** file.write_file**
** end**

Rodrigo de Campos
Unix System A.

You shouldn’t need a Regex for that, how about String#include?

On Nov 14, 2013, at 3:27 AM, Rodrigo de Campos [email protected]

Rodrigo de Campos
Unix System A.

Chefs FileEdit is useful, but does lack some functionality. What you
could do is call search_file_delete_line for the two lines youre adding.
Hacky, but it should work every time.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs