【연재 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 모듈】」에 대해.
시리즈의 목차는 【이쪽】입니다.
Reference
이 문제에 관하여(【연재 01】203.Ansible로 유저와 그룹 추가(On Vagrant)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/CsFactoryitter/items/9415381c7481593cadff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)