LoginSignup
1
0

More than 3 years have passed since last update.

アカウント作成(Ansible)

Last updated at Posted at 2019-10-23

はじめに

Ansibleを使用してアカウント作成を行う際の手順を記述します
サンプルアプリケーションはgithubになります

前提事項

Ansibleセットアップ手順はREADMEを参照ください
アプリケーション環境構築イメージはアプリケーション環境構築(Ansible)を参照ください

アカウント作成(Ansible)

アカウント作成を行うplaybookを定義します

ファイル 内容
変数ファイル グループやユーザ名等の変数を定義します
タスクファイル ユーザやグループ追加及びSSHDサービスの設定等を定義します

グループ追加

グループ追加を行います

- name: グループ追加
  group:
    name: "{{ group_name }}"
    gid: "{{ group_gid }}"

各項目の説明は以下のとおり

項目 内容
name グループ名を指定します
gid グループ追加時のグループIDを指定します

ユーザ追加

ユーザ追加を行います

- name: ユーザ追加
  user:
    name: "{{ user_name }}"
    group: "{{ group_name }}"
    groups: "{{ group_name }},sudo"
    uid: "{{ user_uid }}"
    password: "{{ user_password | password_hash('sha512') }}"
    shell: /bin/bash
    generate_ssh_key: yes
    ssh_key_passphrase: "{{ user_ssh_key_passphrase }}"
  register: ssh_user

各項目の説明は以下のとおり

項目 内容
name ユーザ名を指定します
group グループ名を指定します
未指定時はOSデフォルトのUserGroupになります
groups グループのサブグループを指定します
sudoを許可するためsudoをサブグループに追加します
uid ユーザ追加時のユーザIDを指定します
password パスワードを指定します
password_hash関数を使用して暗号化を行います
shell bashを有効にします
※Ansibleを使用したユーザ追加ではデフォルトbashが有効にならないため指定します
generate_ssh_key SSHの秘密鍵の作成を指定します
ssh_key_passphrase SSHのパスフレーズを指定します
register SSHの公開鍵を作成するためタスク実行結果を変数に保持します

SSH公開鍵作成

SSH公開鍵を作成します

- name: SSH公開鍵作成
  authorized_key:
    user: "{{ user_name }}"
    state: present
    key: "{{ ssh_user.ssh_public_key }}"

各項目の説明は以下のとおり

項目 内容
user ユーザ名を指定します
state presentを指定してSSH公開鍵が作成済の場合はスキップします
key ユーザ追加時の公開鍵キーをセットします

SSH設定変更

セキュリティを強化するためパスワード認証の無効化等を行います

- name: パスワード認証の無効化
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: "^PasswordAuthentication"
    insertafter: "^#PasswordAuthentication"
    line: "PasswordAuthentication no"

- name: チャレンジ・レスポンス認証の無効化
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: "^ChallengeResponseAuthentication"
    insertafter: "^#ChallengeResponseAuthentication"
    line: "ChallengeResponseAuthentication no"

- name: rootユーザのログイン禁止
  lineinfile:
    dest: /etc/ssh/sshd_config
    regexp: "^PermitRootLogin"
    insertafter: "^#PermitRootLogin"
    line: "PermitRootLogin no"

各項目の説明は以下のとおり

項目 内容
dest 変更ファイルのパスを指定します
regexp 置換対象の文字列を正規表現で指定します
insertafter 置換文字列の挿入先を指定します
line 置換文字列を指定します

SSHDサービス再起動

SSH設定変更を反映するためSSHDサービスを再起動します

- name: sshdサービスの再起動
  service:
    name: sshd
    state: restarted

各項目の説明は以下のとおり

項目 内容
name sshdを指定します
state restartedを指定して再起動を行います

初期ディレクトリ作成

アプリケーションやログファイルを格納するディレクトリを作成します

- name: 初期ディレクトリ作成
  file:
    path: "/home/{{ user_name }}/{{ item.dir_name }}"
    owner: "{{ user_name }}"
    group: "{{ group_name }}"
    mode: "{{ item.dir_mode }}"
    state: directory
  with_items: "{{ user_dir_info }}"

各項目の説明は以下のとおり

項目 内容
path ディレクトリパスを指定します
owner ディレクトリの所有ユーザを指定します
group ディレクトリの所有グループを指定します
mode ディレクトリの権限を指定します
state ディレクトリ作成を指定します
with_items 変数ファイルからリストを読み込みます

参考情報

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0