help adding line to /etc/inittab

679 views
Skip to first unread message

Kit Stube

unread,
Sep 2, 2010, 5:47:58 PM9/2/10
to puppet...@googlegroups.com
Hi everyone.   I am attempting to add this line to /etc/inittab so that a user will be forced to enter a password to get into single user mode:

~:S:wait:/sbin/sulogin

I have tried all kinds of things, but seem to be having no luck.   Here is the puppet class I am trying to make:

       class gen000020 {
               # Description: The UNIX host is bootable in single user mode without a password.
               # Insert "~~:S:wait:/sbin/sulogin" into /etc/inittab

                augeas { "inittab" :
                        context => "/files/etc/inittab",
                        changes => [
                                "set ~ /~",
                                "set ~/runlevels S",
                                "set ~/action wait",
                                "set ~/process /sbin/sulogin",
                        ]
                }
       }


Here is the pertinent debug output from a manual run feeding that code to puppet:



debug: Augeas[inittab](provider=augeas): Opening augeas with root /, lens path , flags 0
debug: Augeas[inittab](provider=augeas): Augeas version 0.5.0 is installed
debug: Augeas[inittab](provider=augeas): Will attempt to save and only run if files changed
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~", "/~"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/runlevels", "S"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/action", "wait"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/process", "/sbin/sulogin"]
debug: Augeas[inittab](provider=augeas): Files changed, should execute
debug: Augeas[inittab](provider=augeas): Closed the augeas connection
debug: //ia/Augeas[inittab]: Changing returns
debug: //ia/Augeas[inittab]: 1 change(s)
debug: Augeas[inittab](provider=augeas): Opening augeas with root /, lens path , flags 0
debug: Augeas[inittab](provider=augeas): Augeas version 0.5.0 is installed
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~", "/~"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/runlevels", "S"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/action", "wait"]
debug: Augeas[inittab](provider=augeas): sending command 'set' with params ["/files/etc/inittab/~/process", "/sbin/sulogin"]
debug: Augeas[inittab](provider=augeas): Closed the augeas connection
err: //ia/Augeas[inittab]/returns: change from need_to_run to 0 failed: Save failed with return code false
debug: Finishing transaction -612453418 with 1 changes

Can anyone show me the proper way to insert this line into inittab using augeas and puppet?

Thanks

Kit Stube

Jason Koppe

unread,
Sep 2, 2010, 11:45:21 PM9/2/10
to puppet...@googlegroups.com
My inittab is slightly different, does this work for you?
class inittab {
        define conf (
                $id,
                $runlevels = '123456',
                $action = 'respawn',
                $process
        ) {

                augeas {"inittab_$id":

                        context => "/files/etc/inittab",
                        changes => [
                                "set $id/runlevels $runlevels",
                                "set $id/action $action",
                                "set $id/process '$process'",
                                ],
                }
        }
}

and I call that definition as follows:

        inittab::conf{"supervisor":
                id => 'supe',
                runlevels => 'a',
                action => 'respawn',
                process => '/usr/bin/supervisord -n',

                # this require is actually evaluated in the inittab::conf definition
                require => [Exec["install supervisor"],Package["python-setuptools"]],
        }

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To post to this group, send email to puppet...@googlegroups.com.
To unsubscribe from this group, send email to puppet-users...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.



--
Jason Koppe
Jason.Rob...@gmail.com
Cell (210) 445-8242

Rob McBroom

unread,
Sep 3, 2010, 8:44:15 AM9/3/10
to puppet...@googlegroups.com
On Sep 2, 2010, at 5:47 PM, Kit Stube wrote:

                        changes => [
                                "set ~ /~",
                                "set ~/runlevels S",
                                "set ~/action wait",
                                "set ~/process /sbin/sulogin",
                        ]

Try removing the first item in your changes. In many cases, Augeas will create a path for you if you set something that doesn't exist. I have a resource that adds to inittab and it's almost identical to yours, but it only has the last 3 changes. If it still doesn't work, it may be that something doesn't like the ~ character.

-- 
Rob McBroom
<http://www.skurfer.com/>

Before you give the government new power to go after bad guys, remember this: The power will be permanent. The definition of “bad guys ” will not.

Kit Stube

unread,
Sep 13, 2010, 3:42:26 PM9/13/10
to puppet...@googlegroups.com
Thanks for the replies.  I tried Rob's fix first since it just meant removing one line from what I had.  It worked like a charm!

Here is the final config to add that line to /etc/inittab:


               augeas { "inittab" :
                       context => "/files/etc/inittab",
                       changes => [
Reply all
Reply to author
Forward
0 new messages