Commits

Anonymous committed 8d5ca17 Draft

タスクを分割。

Comments (0)

Files changed (2)

 *.swp
 .coverage
 */cuisine_cookbooks.egg-info
+artifacts/

cookbooks/auth.py

 from fabric.state import env
 
 
-def enable_rsa_auth():
-    with cuisine.mode_local():
-        cuisine.dir_ensure("artifacts")
-
-    host = env.host
-    username = "scott"
-    password = "tigerisacat"
-    keyfile = "artifacts/id_rsa_{host}".format(host=host)
-    ssh_config = "artifacts/ssh_config_{host}".format(host=host)
-
+def create_user(username, password):
+    """OSのユーザーを作る。"""
     if not cuisine.user_check(username):
         # NOTE: cuisine使うとパスワードが設定できない。
         #cuisine.user_create(name=username, passwd="tiger")
                        password=password)).failed:
             raise api.abort("Failed to create user.")
 
+
+def put_rsa_key(username, artifacts="artifacts"):
+    """RSAの鍵を生成して対象ユーザーのauthorized_keysに設定する。"""
+    host = env.host
+    with cuisine.mode_local():
+        cuisine.dir_ensure(artifacts)
+
+    keyfile = "{dir}/id_rsa_{host}".format(dir=artifacts, host=host)
+    ssh_config = "{dir}/ssh_config_{host}".format(dir=artifacts, host=host)
     user = cuisine.user_check(username)
-    authorized_keys = "{0}/.ssh/authorized_keys".format(user["home"])
+    authorized_keys = "{home}/.ssh/authorized_keys".format(home=user["home"])
 
     # 公開鍵を対象ユーザーのauthorized_keysに設定する。
     # ローカルに鍵ファイルがなければ作る。
             mode=600,
         )
 
+
+def enable_rsa_auth():
+    """sshのRSA鍵認証を有効にする。"""
     if not files.exists("/etc/ssh/sshd_config.bak"):
         # RSA鍵認証を有効にする。
         files.uncomment(
                   "|AuthorizedKeysFile)",
             backup='.bak'
         )
+
+
+def setup_all(username, password, artifacts):
+    """ユーザーを作ってsshの鍵認証でログインできるよう環境設定する。"""
+    create_user(username, password)
+    put_rsa_key(username, artifacts)
+    enable_rsa_auth()