Sha256: 695ec1fc4e5c55a0bd9b0c75488e98b91f3dde0b16236988c38381c59bf78cbb

Contents?: true

Size: 1.2 KB

Versions: 23

Compression:

Stored size: 1.2 KB

Contents

# rename user

class Bard::Provision::User < Bard::Provision
  def call
    print "User:"

    if !ssh_with_user?(provision_server.ssh_uri, user: new_user)
      if !ssh_with_user?(provision_server.ssh_uri)
        raise "can't ssh in with user #{new_user} or #{old_user}"
      end
      print " Adding user #{new_user},"
      provision_server.run! [
        "sudo useradd -m -s /bin/bash #{new_user}",
        "sudo usermod -aG sudo #{new_user}",
        "echo \"#{new_user} ALL=(ALL) NOPASSWD:ALL\" | sudo tee -a /etc/sudoers",
        "sudo mkdir -p ~#{new_user}/.ssh",
        "sudo cp ~/.ssh/authorized_keys ~#{new_user}/.ssh/authorized_keys",
        "sudo chown -R #{new_user}:#{new_user} ~#{new_user}/.ssh",
        "sudo chmod +rx ~#{new_user}", # so nginx and passenger can read it
      ].join("; "), home: true
    end

    # provision with new user from now on
    ssh_url.gsub!("#{old_user}@", "#{new_user}@")
    puts " ✓"
  end

  private

  def new_user
    server.ssh_uri.user
  end

  def old_user
    provision_server.ssh_uri.user
  end

  def ssh_with_user? ssh_uri, user: ssh_uri.user
    system "ssh -o ConnectTimeout=2 -p#{ssh_uri.port || 22} #{user}@#{ssh_uri.host} exit >/dev/null 2>&1"
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
bard-1.4.0 lib/bard/provision/user.rb
bard-1.3.9 lib/bard/provision/user.rb
bard-1.3.8 lib/bard/provision/user.rb
bard-1.3.7 lib/bard/provision/user.rb
bard-1.3.6 lib/bard/provision/user.rb
bard-1.3.5 lib/bard/provision/user.rb
bard-1.3.4 lib/bard/provision/user.rb
bard-1.3.3 lib/bard/provision/user.rb
bard-1.3.2 lib/bard/provision/user.rb
bard-1.3.1 lib/bard/provision/user.rb
bard-1.3.0 lib/bard/provision/user.rb
bard-1.2.0 lib/bard/provision/user.rb
bard-1.1.2 lib/bard/provision/user.rb
bard-1.1.1 lib/bard/provision/user.rb
bard-1.1.0 lib/bard/provision/user.rb
bard-1.0.8 lib/bard/provision/user.rb
bard-1.0.7 lib/bard/provision/user.rb
bard-1.0.6 lib/bard/provision/user.rb
bard-1.0.5 lib/bard/provision/user.rb
bard-1.0.4 lib/bard/provision/user.rb