【연재 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

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의 그룹 추가 모듈

Ansible로 그룹을 추가하려면 group 모듈을 사용한다.

형식:

group: name=\${그룹 이름} gid=${GID}

예:
group: name={{usergroup.apache.group }} gid={{usergroup.apache.gid}} 

Ansible의 사용자 (사용자) 추가 모듈

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 모듈】」에 대해.

시리즈의 목차는 【이쪽】입니다.

좋은 웹페이지 즐겨찾기