Capistrano でssh ユーザの自動作成

  • 投稿日:
  • by
  • カテゴリ:

初期導入で結構だるい作業の自動化中

最初に、Capistrano 用にアカウントの作成を行う。
いままでコピペしてた作業が省略できた。

初めに、デプロイ先のサーバにログインして以下のようなアカウントを作成。

ssh-key -t rsa でssh key を作成しておく。
id_rsa id_rsa.pub ができる。

cp id_rsa.pub authorized_keys などとしておく。またデプロイ先にコピーします。
スクリプト内のecho 'ssh-rsa AAAAhoge......" に書く。

groupadd -g 1101 admin
useradd infra -g admin -u 1400
mkdir -m 700 -p /home/infra/.ssh
echo "ssh-rsa AAAAhoge................= infra@master" > /home/infra/.ssh/authorized_keys
chown -R infra:admin /home/infra/.ssh
chmod 600 /home/infra/.ssh/authorized_keys

#sudoers設定
echo "infra ALL=(ALL) ALL" >> /etc/sudoers

#SSH 設定-----------------------------------------------------
vi /etc/ssh/sshd_config

PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
PermitEmptyPasswords no
PasswordAuthentication no
ChallengeResponseAuthentication no
------------------------------------------------------------------
/etc/init.d/sshd restart


config/deploy.rb

set :application, "ntp restart"
set :user, "hideki"
#set :password, "hogehoge"
set :use_sudo, false
set :default_run_options, :max_hosts => 1
default_run_options[:pty] = true
ssh_options[:config]=false
ssh_options[:auth_methods] = "publickey"
#ssh_options[:verbose] = :debugr
ssh_options[:forward_agent] = true

task :user_add do
user_key_add
user_add_hoge
end

task :user_key_add do
upload("key/ssh_key_hoge", "/tmp", :via => :scp, :max_hosts =>1)
end

task :user_add_hoge, :roles => [:server] do
sudo "/usr/sbin/useradd hoge -u 1105 -g admin -G wheel"
sudo "mkdir -m 700 -p /home/hoge/.ssh"
sudo "cp /tmp/ssh_key_hoge /home/hoge/.ssh/authorized_keys"
sudo "chmod 600 /home/hoge/.ssh/authorized_keys"
sudo "chown -R hoge:admin /home/hoge/.ssh"
end

あとはcap user_add で作成。

もっと楽な方法もあるぽいんだが、とりあえずはこれで( ・ω・)∩
upload でssh_key を送る方法に変えてみた。