【連載01】203.Ansibleでユーザーとグループを追加する(On Vagrant)
当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
サーバの責務はこちらで確認ください。
今回は、ユーザーとグループを作成する。Ansibleでユーザー(user)追加モジュールとグループ(group)追加モジュールを使う。
※userのpasswordはハッシュ化する。
1.ユーザー作成概要
一番最初に全てのサーバに対して必要なユーザーとグループを作成する。
2.playbookファイルの相関
3.playbook(site.yml)
${ANSIBLE_HOME}/site.yml
メインとなるplaybook(site.yml)参照
4.ユーザー作成用のplaybook全体
\${ANSIBLE_HOME}/operations/0011_usergroup.yml
# ===================
# ユーザーの追加(usergroup.yml)
# ===================
# ===================
# 全サーバ共通のユーザーを作成
# Ansibleは全てuserで行うが、運用時にはinfraユーザー
# を利用しサーバ運用を行う。
# ===================
- hosts: all
sudo: no
remote_user: root
vars_files:
- ../vars/usergroup.yml
tasks:
- name: infraグループ追加
group: name={{usergroup.infra.group }} gid={{usergroup.infra.gid}}
- name: infraユーザー追加
user: name={{usergroup.infra.user}} uid={{usergroup.infra.uid}} group={{usergroup.infra.group}} update_password=always password={{usergroup.infra.password}}
# ===================
# ap_admin(apserv01とadminserv01)に適用
# ・apacheグループ/ユーザーの用途
# ・adminserv01
# ・CI(Jenkins)用HTTPサーバ
# ・adminserv01はapserv01にデプロイする前にテスト用途としても使用する
# ・apserv01
# ・Webアプリケーション用HTTPサーバ
# ・tomcatグループ/ユーザーの用途
# ・adminserv01
# ・CI(Jenkins)用JavaApplicationサーバ
# ・adminserv01はAPサーバにデプロイする前にテスト用途としても使用する
# ・apserv01
# ・Webアプリケーション用JavaApplicationサーバ
# ===================
- hosts: ap_admin
sudo: no
remote_user: root
vars_files:
- ../vars/usergroup.yml
tasks:
- name: apacheグループ追加
group: name={{usergroup.apache.group }} gid={{usergroup.apache.gid}}
- name: tomcatグループ追加
group: name={{usergroup.tomcat.group }} gid={{usergroup.tomcat.gid}}
- name: apacheユーザー追加
user:
name={{usergroup.apache.user}}
uid={{usergroup.apache.uid}}
group={{usergroup.apache.group}}
update_password=always
password={{usergroup.apache.password}}
- name: tomcatユーザー追加
user: name={{usergroup.tomcat.user}} uid={{usergroup.tomcat.uid}} group={{usergroup.tomcat.group}} update_password=always password={{usergroup.tomcat.password}}
# ===================
# db_admin(dbserv01とadminserv01)に適用
# ・mysqlグループ/ユーザーの用途
# ・adminserv01
# ・adminserv01はdbサーバへの本番以降前にテスト用途としても使用する
# ・dbserv01
# ・本番データベースサーバ
# ===================
- hosts: db_admin
sudo: no
remote_user: root
vars_files:
- ../vars/usergroup.yml
tasks:
- name: mysqlグループ追加
group: name={{usergroup.mysql.group }} gid={{usergroup.mysql.gid}}
- name: mysqlユーザー追加
user: name={{usergroup.mysql.user}} uid={{usergroup.mysql.uid}} group={{usergroup.mysql.group}} update_password=always password={{usergroup.mysql.password}}
# ===================
# adminserv01に適用
# ・seleniumグループ/ユーザーの用途
# ・adminserv01
# ・WEBGUIテスティングの起動/制御を行うSelniumGridを動作させる
# ===================
- hosts: adminservers
sudo: no
remote_user: root
vars_files:
- ../vars/usergroup.yml
tasks:
- name: seleniumグループ追加
group: name={{usergroup.selenium.group }} gid={{usergroup.selenium.gid}}
- name: seleniumユーザー追加
user: name={{usergroup.selenium.user}} uid={{usergroup.selenium.uid}} group={{usergroup.selenium.group}} update_password=always password={{usergroup.selenium.password}}
- Ansibleでのグループ(group)追加モジュール
- Ansibleでグループを追加するにはgroupモジュールを使う。
書式:
group: name=\${グループ名称} gid=${GID}
例:
group: name={{usergroup.apache.group }} gid={{usergroup.apache.gid}}
- Ansibleでのユーザー(user)追加モジュール
- Ansibleでユーザーを追加するにはuserモジュールを使う。ユーザー作成時はグループ名称を指定してGIDは指定しない。
書式:
user: name=\${ユーザー名} uid=\${UID} group={グループ名称} update_password=${パスワードの更新(always または on_create)}
例:
user: name={{usergroup.selenium.user}} uid={{usergroup.selenium.uid}} group={{usergroup.selenium.group}} update_password=always
- var_filesの構造
- var_filesもyamlの法則に従い階層構造で記述。以下のような設定から、uid:1200の値をplaybookから取得したい場合は
usergroup:
tomcat:
user: tomcat
group: tomcat
uid: 1200
gid: 1200
home: /home/tomcat
shell: /bin/bash
usergroup配下tomcatの配下のuidを取得する為、
usergroup.tomcat.uidと【.(ピリオド)】で定義を繋ぎ、左右を{{ }}で括り、
{{usergroup.tomcat.uid}}
※以前のAnsibleでは${ }で取得可能だったが現在のAnsibleでは取得できない為注意。
5.playbook(/vars/usergroup.yml)
\${ANSIBLE_HOME}/vars/usergroup.yml
※userモジュールのpassword(パスワード)はハッシュ化が必要。
0011_usergroup.ymlでは変数設定をしている。
userモジュールのパスワードはハッシュ化する必要があることに注意。
ハッシュ化するには今回はmanageterm(Ansible管理端末)から以下を実行。
書式:
python -c 'import crypt; print crypt.crypt("パスワード", "\$6\$ソルト$")'
例:
python -c 'import crypt; print crypt.crypt("apache123", "$6$apachesolt$")'
以上の設定で「apache123」というハッシュ化されたパスワードがサーバ設定されることになる。
# ===================
#ユーザー情報を変数定義します。
#パスワードはハッシュ化する必要がある為、pythonのコマンドにてハッシュ化したパスワードを設定
# python -c 'import crypt; print crypt.crypt("パスワード", "$6$ソルト$")'
# ===================
usergroup:
tomcat:
user: tomcat
group: tomcat
uid: 1200
gid: 1200
home: /home/tomcat
shell: /bin/bash
# ===================
# python -c 'import crypt; print crypt.crypt("tomcat123", "$6$tomcatsolt$")'
# ===================
password: $6$tomcatsolt$Dz8QThSePXH5WZ0EjLQbUA8pZJrgIl4.2qsflSWkn1gV.RqD84vPT0.tdThOEn1VyowWJBsTgm2rmv5oJixDJ1
apache:
user: apache
group: apache
uid: 1100
gid: 1100
home: /home/apache
shell: /bin/bash
# ===================
# python -c 'import crypt; print crypt.crypt("tomcat123", "$6$tomcatsolt$")'
# ===================
password: $6$apachesolt$PnTyYlBO7ZAmPmXNBxAgWj03udlCNxqOqWvfik.fM3A84UTG.Un0cWUaXEl2vT2Acme.lMsPVRapEOZ9MhWYr0
mysql:
user: mysql
group: mysql
uid: 1300
gid: 1300
home: /home/mysql
shell: /bin/bash
# ===================
# python -c 'import crypt; print crypt.crypt("tomcat123", "$6$tomcatsolt$")'
# ===================
password: $6$mysqlsolt$IeAbOR9NxGYA3Os9p43DRjdGvuTae62i707gWa2/XP/IFVyjHIYsEe/gH5uc15pxwyhAk8kGuRbi6Iinga5wh/
infra:
user: infra
group: infra
uid: 1400
gid: 1400
home: /home/infra
shell: /bin/bash
# ===================
# python -c 'import crypt; print crypt.crypt("tomcat123", "$6$tomcatsolt$")'
# ===================
password: $6$infrasolt$a2vFx7QL/cV2Nplcy1AxeRp8Ss34MPTjkbKpu7au.kq.PXshj8K177TUH9Pj5wtG8Y83Ea5Nv8UlvRuBMN5Fu0
selenium:
user: selenium
group: selenium
uid: 1600
gid: 1600
home: /home/selenium
shell: /bin/bash
# ===================
# python -c 'import crypt; print crypt.crypt("tomcat123", "$6$tomcatsolt$")'
# ===================
password: $6$seleniumsolt$fl7ibc.Xf/.xnbIFqIXuGA3rtddYdZiUILqVvJO06cjGXy.HmpDh1LjXZYLKqzZymjn1GqmQkz2ndc8lfbfTz/
次回は「yumにて必要なライブラリ/ミドル/ソフトウェアをインストールする【Ansible yumモジュール】」について。
連載の目次は【こちら】です。
Author And Source
この問題について(【連載01】203.Ansibleでユーザーとグループを追加する(On Vagrant)), 我々は、より多くの情報をここで見つけました https://qiita.com/CsFactoryitter/items/9415381c7481593cadff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .