class SyncWrap::RunUser

Provision a user to run daemons within a run directory. Utilities for working with the same.

Attributes

run_dir[W]

Root directory for persistent data and logs (default: /var/local/#{run_user})

run_dir_mode[RW]

File mode as integer for the run_dir (default: 0755)

run_group[RW]

A group for running (default: nil -> same as run_user)

run_user[RW]

A user for running deployed daemons, jobs (default: 'runr')

run_user_home[W]

Home directory for the run_user (default: nil -> same as run_dir)

Public Class Methods

new( opts = {} ) click to toggle source
Calls superclass method SyncWrap::Component.new
# File lib/syncwrap/components/run_user.rb, line 50
def initialize( opts = {} )
  @run_user    = 'runr'
  @run_group   = nil
  @run_dir     = nil
  @run_dir_mode = 0755
  @run_user_home = nil
  super
end

Public Instance Methods

chown_run_user( *args ) click to toggle source

Chown to user:run_group where args may be flags and files/directories.

# File lib/syncwrap/components/run_user.rb, line 108
def chown_run_user( *args )
  flags, paths = args.partition { |a| a =~ /^-/ }
  sudo( [ 'chown', flags,
          [ run_user, run_group || run_user ].join(':'),
          paths ].flatten.compact.join( ' ' ) )
end
create_run_dir() click to toggle source

Create and set owner/permission of #run_dir, such that #run_user may create new directories there.

# File lib/syncwrap/components/run_user.rb, line 79
def create_run_dir
  mkdir_run_user( run_dir, mode: run_dir_mode )
end
create_run_user() click to toggle source

Create #run_user if not already present

# File lib/syncwrap/components/run_user.rb, line 65
def create_run_user
  sudo_if( "! id #{run_user} >/dev/null 2>&1" ) do
    user_opts  = "-r -c 'Run User' -s /bin/bash"
    user_opts += " -d #{run_user_home}" if run_user_home
    if run_group && run_group != run_user
      sudo "groupadd -r -f #{run_group}"
      user_opts += " -g #{run_group}"
    end
    sudo "useradd #{user_opts} #{run_user}"
  end
end
create_service_dir( sname, instance = nil ) click to toggle source

Create and set owner/permission of a named service directory under run_dir.

# File lib/syncwrap/components/run_user.rb, line 89
def create_service_dir( sname, instance = nil )
  sdir = service_dir( sname, instance )
  mkdir_run_user( sdir )
end
install() click to toggle source
# File lib/syncwrap/components/run_user.rb, line 59
def install
  create_run_user
  create_run_dir
end
make_dir( dir, opts = {} )

Deprecated

Alias for: mkdir_run_user
mkdir_run_user( dir, opts = {} ) click to toggle source

Make dir including parents via sudo, chown to #run_user, and chmod

Options

:mode

Integer file mode for directory set via chmod (Default: 0775)

# File lib/syncwrap/components/run_user.rb, line 97
def mkdir_run_user( dir, opts = {} )
  mode = opts[:mode] || 0775
  sudo "mkdir -p #{dir}"
  chown_run_user dir
  sudo( "chmod %o %s" % [ mode, dir ] )
end
Also aliased as: make_dir
run_dir() click to toggle source
# File lib/syncwrap/components/run_user.rb, line 35
def run_dir
  @run_dir || "/var/local/#{run_user}"
end
run_user_home() click to toggle source
# File lib/syncwrap/components/run_user.rb, line 46
def run_user_home
  @run_user_home || run_dir
end
service_dir( sname, instance = nil ) click to toggle source
# File lib/syncwrap/components/run_user.rb, line 83
def service_dir( sname, instance = nil )
  run_dir + '/' + [ sname, instance ].compact.join( '-' )
end