Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
joohanhong
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
JooHan Hong
joohanhong
Commits
951f029e
Commit
951f029e
authored
Mar 08, 2021
by
JooHan Hong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ansible, 2021-03-08, update2
parent
0dd430df
Pipeline
#5111
passed with stages
in 2 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
117 additions
and
2 deletions
+117
-2
README.md
ANSIBLE/README.md
+2
-2
README.md
ANSIBLE/USER2/README.md
+115
-0
No files found.
ANSIBLE/README.md
View file @
951f029e
...
...
@@ -11,8 +11,8 @@
| 1 | OS Maintenance ITEMs |
[
OS
](
./OS/
)
| |
| 2 | INFRA Maintenance ITEMs |
[
GO
](
./INFRA/
)
| |
| 3 | WEB Server Maintenance ITEMs |
[
GO
](
./WEB/
)
| |
| 4 | Users Management ITEMs |
[
GO
](
./USER/
)
| |
| 5 |
System H/W Review ITEMs |
[
GO
](
./HW
/
)
| |
| 4 | Users Management
(추가/제거)
ITEMs |
[
GO
](
./USER/
)
| |
| 5 |
Users Management(변경) ITEMs |
[
GO
](
./USER2
/
)
| |
| 6 | Virtualization Maintenance ITEMs |
[
GO
](
./VM/
)
| |
| 7 | Secure Vulnerability ITEMs |
[
GO
](
./SECURE/
)
| |
| 8 | MISC ITEMs |
[
GO
](
./MISC/
)
| |
...
...
ANSIBLE/USER2/README.md
0 → 100644
View file @
951f029e
[
![logo
](
https://www.hongsnet.net/images/logo.gif
)
](https://www.hongsnet.net)
# Ansible을 이용한 사용자 패스워드 변경
> 매 분기마다 수행되어야 하는 시스템의 사용자 패스워드 변경을 자동화하고, 증적을 남긴다.
## 주요 기능
-
**/etc/login.defs**
파일의 정책(
**PASS_MAX_DAYS**
90)에 맞게 사용자의 패스워드가 만료되지 않거나 주기적으로 변경되도록 수행한다.
-
수행 후 증적을 위해 현재 로컬에 PASSWORD_MODIFY/
*IP주소*
/
*분기*
(eg, 2020-4Q)/
*변경일짜(YYYY-MM-DD)*
/
*사용자아이디*
/ 에 다음 파일을 기록한다.
-
*아이디*
_password.txt => 변경한 패스워드
-
*아이디*
_result.txt => Ansible 수행 결과(JSON)
## Inventory 설정
```
bash
# cat hosts
[
USERS]
172.16.0.100
managed_ip
=
172.16.0.100
des
=
"test user add, 2020-12-03"
[
USERS_OK]
```
대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로
**USERS_OK**
호스트 그룹은 작업이 완료된 호스트의 history를 위한 그룹이다.
## Host Variables 설정
```
bash
# cat host_vars/172.16.0.100
ansible_ssh_host: 172.16.0.100
ansible_ssh_port: SSH_포트번호
ansible_ssh_user: 사용자 아이디
ansible_ssh_pass:
"사용자 패스워드"
ansible_become:
yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass:
"!root_패스워드"
ansible_python_interpreter: python2.7
```
## Playbook 설정
```python
---
-
name: System User Password Modify Playbook
hosts: ALL_HOSTS
vars:
work_date: "2020-4Q"
user_name: "아이디"
user_password: "패스워드"
time: "{{lookup('pipe','date
\"
+%Y-%m-%d
\"
')}}"
tasks:
-
name: Local Directory Create
local_action: command mkdir -p PASSWORD_MODIFY/{{ managed_ip }}/{{ work_date }}/{{ time }}/{{ user_name }}
- name: System User Exist Check
#shell: getent passwd "{{ user_name }}"
shell: id -u "{{ user_name }}"
register: user_exists
ignore_errors: True
- name: System User Password Modify
user:
name: "{{ user_name }}"
password: "{{ user_password | password_hash('sha512') }}"
shell: /bin/bash
update_password: always
when: user_exists.rc == 0
- debug: var=user_exists
- name: System User Password Modify Result
local_action: copy content={{ user_exists }} dest=PASSWORD_MODIFY/{{ managed_ip }}/{{ work_date }}/{{ time }}/{{ user_name }}/{{ user_name }}_result.txt
when: user_exists.rc == 0
- name: System User Password Modify Information Result
local_action: copy content={{ user_password }} dest=PASSWORD_MODIFY/{{ managed_ip }}/{{ work_date }}/{{ time }}/{{ user_name }}/{{ user_name }}_password.txt
when: user_exists.rc == 0
```
`사용자 추가`에 대한 Playbook 분석
* [ ] 변경하려는 시점의 분기(Quota)를 변수(**work_date**)로 입력한다.
* [ ] 변경하려는 사용자의 아이디(**user_name**)/패스워드(**user_password**) 정보를 변수로 입력한다.
* [ ] 존재하는 사용자만(**user_exists** 변수) 패스워드 변경을 수행하는데, 매번 수행 시마다(**update_password: always**) 패스워드를 변경한다.
* [ ] 수행이 완료되면, user_exists, user_password 변수에 대한 결과를 각각 txt 파일에 기록한다.
## playbook 실행
- `사용자 추가`
```
bash
# ansible-playbook -i hosts password_modify.yml
```
- `사용자 제거`
```
bash
# ansible-playbook -i hosts password_modify.yml
```
## 수행 결과
```
bash
# cat PASSWORD_MODIFY/172.16.0.100/2020-4Q/2020-12-03/test/test_password.txt
!dlsvmfk2020@
# cat PASSWORD_MODIFY/172.16.0.100/2020-4Q/2020-12-03/test/test_result.txt
{"stderr_lines":
[]
, "cmd": "id -u
\"
test
\"
", "end": "2020-12-03 12:41:39.680511", "failed": false, "stdout": "1007", "changed": true, "rc": 0, "start": "2020-12-03 12:41:39.678561", "stderr": "", "delta": "0:00:00.001950", "stdout_lines":
[
"1007"
]
}
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment