Ansible

Vagrant로 구성한 CentOS 관리하기

Joon0464 2021. 7. 15. 16:02

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의 (inflearn.com)

 

[응용] 다양한 환경을 앤서블(Ansible)로 관리하기 with 베이그런트(Vagrant) - 인프런 | 강의

센트OS 이외에 얼마나 다양한 시스템에 엔서블이 사용될 수 있는지 배워봅시다. 앤서블을 리눅스 이외에 윈도우 및 네트워크 시스템과 같은 여러가지 시스템에 대해서 다양한 목적으로 사용하

www.inflearn.com

1. Nginx 설치 및 삭제

1.1 nginx 설치용 playbook 작성 및 실행

# nginx_install.yml

---
- name: install nginx on CentOS
  hosts: CentOS
  gather_facts: no
  become: yes

  tasks:
    - name: install epel-release
      yum:
        name: epel-release
        state: latest
    - name: install nginx
      yum:
        name: nginx
        state: present
    - name: upload default index.html for web server
      get_url:
        url: https://www.nginx.com
        dest: /usr/share/nginx/html/
        mode: 0644
    - name: Start nginx web server
      service:
        name: nginx
        state: started
  • become: yes

      root 권한을 획득하는 명령어

  • get_url

      지정한 url 주소의 웹 페이지를 다운 받는 모듈이다.

anp nginx_install_yml -k를 사용하여 플레이북을 실행시킨다.

anp는 vagrant로 centos 서버 구성시에 alias를 설정하여 alias anp=ansible-playbook이 등록되어있는 상태이다.

192.168.1.11로 접속 테스트

 

192.168.1.12로 접속 테스트

1.2 nginx 삭제 playbook 작성 및 실행

# nginx_remove.yml

---
- name: Remove nginx on CentOS
  hosts: CentOS
  gather_facts: no
  become: yes

  tasks:
    - name: remove epel-release
      yum:
        name: epel-release
        state: absent
    - name: remove nginx web server
      yum:
        name: nginx
        state: absent

위와 같이 작성하여 epel-release와 nginx 삭제를 yum 모듈을 통해 진행한다.

anp nginx_remove.yml -k를 입력하여 플레이북을 실행하면 정상적으로 nginx 패키지가 모든 관리 대상 노드들에서 제거된다.

 

2. 시간대 timezone 변경하기

ansible-server에서 date 명령어를 사용하면 현재 시간이 UTC 기준으로 설정되어 실제 한국 시간과 3시간 차이가 난다.

2.1 시간대 변경을 위한 playbook 작성 및 실행

# timezone.yml

---
- name: Setup linux timezone
  hosts: CentOS
  gather_facts: no
  become: yes

  tasks:
    - name: set timezone to Asia/Seoul
      timezone:
        name: Asia/Seoul

anp timezone.yml -k를 입력하여 플레이북을 실행시킨다.

node01로 ssh 접속하여 date 명령어를 호출하면 현재 한국 시간과 동일하게 표시되는 것을 볼 수 있다.

 

3. NFS 서버 및 클라이언트 구성

---
- name: Setup for nfs server
  hosts: localhost
  gather_facts: no

  tasks:
    - name: make nfs_shared directory
      file:
        path: /home/vagrant/nfs_shared
        state: directory
        mode: 0777

    - name: configure /etc/exports
      become: yes
      lineinfile:
        path: /etc/exports
        line: /home/vagrant/nfs_shared 192.168.1.0/24(rw,sync)

    - name: nfs service start
      become: yes
      service:
        name: nfs
        state: restarted

- name: Setup for nfs client
  hosts: CentOS
  gather_facts: no
  
  tasks:
    - name: make nfs_client directory
      file:
        path: /home/vagrant/nfs
        state: directory
    - name: mount point directory as client
      become: yes
      mount:
        name: /home/vagrant/nfs
        src: 192.168.1.10:/home/vagrant/nfs_shared
        fstype: nfs
        opts: nfsvers=3
        state: mounted

file 모듈은 디렉토리 또는 파일을 생성하는 모듈이다. 즉 공유될 디렉토리를 생성하기 위해 사용되었다.

lineinfile 모듈을 사용하면 특정 파일에 내용을 추가할 수 있다.

mount 모듈을 사용하여 클라이언트의 nfs 디렉토리를 nfs 서버에 존재하는 nfs_shared 디렉토리에 마운트한다.

anp nfs.yml -k를 입력하여 플레이북을 실행한다.

sudo exportfs -v 를 입력하면 현재 공유중인 디렉토리 정보가 출력된다.

node01에 접속하여 touch $HOSTNAME을 입력하여 ansible-node01 파일을 생성한다.

ansible-server의 nfs_shared 디렉토리에서도 ansible-node01 파일이 확인된 것을 볼 수 있다.