class Account include DataMapper::Resource property :id, Serial belongs_to :user belongs_to :server def add_user self.server.execute_command("sudo /usr/sbin/useradd -m #{self.user.name}") end def add_ssh_directory self.server.execute_command("sudo mkdir #{self.user.ssh_config_directory_path}") self.server.execute_command("sudo chown #{self.user.name} #{user.ssh_config_directory_path}") self.server.execute_command("sudo chmod 700 #{self.user.ssh_config_directory_path}") end def write_ssh_key self.server.execute_command("sudo touch #{self.user.authorized_keys_file_path}") self.server.execute_command("echo '#{self.user.authorized_keys_file}' | sudo tee #{self.user.authorized_keys_file_path}") self.set_ssh_key_permissions end def add_to_groups self.server.execute_command("sudo /usr/sbin/usermod -a -G #{self.user.groups.collect(&:name).join(',')} #{self.user.name}") end protected def set_ssh_key_permissions self.server.execute_command("sudo chown #{self.user.name} #{self.user.authorized_keys_file_path}") self.server.execute_command("sudo chmod 600 #{self.user.authorized_keys_file_path}") end end