Commit 1f90954e authored by JooHan Hong's avatar JooHan Hong

file_fetch init

parent 339f6d37
Pipeline #5132 passed with stages
in 2 seconds
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# Ansible의 fetch 모듈을 이용한 파일 가져오기
> 원격 시스템의 파일 및 디렉토리를 로컬로 가져올 수 있다.
## 활용 용도
- 원격 서버에 스크립트를 수행한 후의 결과파일을 로컬로 가져오는 구조의 Job
- /etc/passwd 파일과 같은 전체 시스템의 특정 파일을 모두 가져와야 하는 Job
- 보안취약점 진단에 File Copy 모듈과 함께 사용 중이다.
## Inventory 설정
```bash
# cat hosts
[ALL_HOSTS]
172.16.0.100 managed_ip=172.16.0.100 des="2020-12-03"
[ALL_HOSTS_OK]
```
대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로 **ALL_HOSTS_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 : Config File Fetch Playbook
hosts: ALL_HOSTS
gather_facts: no
tasks:
- name: Local Directory Create
local_action: command mkdir -p FETCH/{{ managed_ip }}
- name: Nginx Configure file fetch
fetch:
src: /etc/passwd
dest: FETCH/{{ managed_ip }}/
flat: yes
```
`File Fetch`에 대한 Playbook 분석
* [ ] 대용량의 파일을 가져오려면, Ansible 2.5 이상을 사용해야하고, become 모듈을 사용하지 않아야 메모리에러 이슈를 방지할 수 있다.
- https://docs.ansible.com/ansible/2.5/modules/fetch_module.html
* [ ] 가져올 파일은 로컬 시스템(PC 또는 서버)의 FETCH/*IP주소*/ 로 가져온다.
## playbook 실행
```bash
# ansible-playbook -i hosts file_fetch.yml
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# Ansible의 shell,template를 이용한 OS Package 설치
# Ansible의 Fact변수, shell,template를 이용한 OS Package 설치
> OS를 Minimal 설치한 후의 기본적인 환경을 구성한다.
......@@ -197,17 +197,19 @@ ansible_python_interpreter: python2.7
```
`Debian 계열의 APT 매니지`에 대한 Playbook 분석
`OS Package Manager`에 대한 Playbook 분석
* [ ] 콘솔/원격 접속 시 출력되는 Banner를 배포한다.
* [ ] Minimal 설치 후 필요한 최소한의 패키지를 설치한다.
* [ ] 불필요한 서비스를 중지하고, 비활성화한다.
* [ ] OS Version의 조건을 수행하기 위해 Facts 변수인 `ansible_os_family` 를 사용한다.
* [ ] Facts 변수를 수집하기 위해서는 반드시 `gather_fact:no` 가 설정되면 안된다.
* [ ] 외부 네트워크가 불가능한 환경에서는 각각 파일을 배포해야 한다.
- Debian 계열 : /etc/sources.list
- RedHat 계열 : /etc/yum.respo.d/*.repo
## playbook 실행
```bash
# ansible-playbook -i hosts debian_minimal.yml
# ansible-playbook -i hosts os_minimal.yml
```
......@@ -59,7 +59,7 @@ ansible -i hosts $1 -m setup
```
이는 최초 접속 시에 대부분 발생되, 근본원인 원인은 ssh의 공개키 교환이 안됐기 때문이다. 따라서 다음과 같이 설정하면 된다.
이는 최초 접속 시에 대부분 발생되, 근본원인 원인은 ssh의 공개키 교환이 안됐기 때문이다. 따라서 다음과 같이 설정하면 된다.
- **전역 설정** : /etc/ansible/ansible.cfg
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment