#はじめに
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 | 変数ファイルからリストを読み込みます |
#参考情報