본문 바로가기
네트워크/네트워크 자동화

[6] 3대의 노드에 웹서버를 설치하고 기동해보자!(centos, ansible)

by Lauren X Ming 2021. 2. 3.

1. Ansible server에 playbook 만들기

[root@AnsibleServer ~]# vi test.yml

---
- hosts: nginx
  remote_user : root
  tasks:
    - name: install epel-release
      yum : name=epel-release state=latest
    - name: install nginx web server
      yum: name=nginx state=present
    - name : Start nginx web server
      service: name=nginx state=started

2. playbook 실행하기

[root@AnsibleServer ~]# ansible-playbook test.yml -k

꼭 -k를 넣기로 하자,,,, -k 안넣었더니 아래 같은 에러남...ㅠㅠ

fatal: [192.168.35.12]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).", "unreachable": true}

 

설치는 잘 됐는데..접속이 안됨.. 방화벽 때문임..

 

 

[root@AnsibleServer ~]# ansible nginx -m shell -a "systemctl stop firewalld" -k

SSH password:

192.168.35.11 | CHANGED | rc=0 >

192.168.35.13 | CHANGED | rc=0 >

192.168.35.12 | CHANGED | rc=0 >>

전체 노드에 대해 firewalld를 내려줌.

 

그럼 이렇게 접근 가능한 것을 볼 수 있음!!

 

누가 만들어 놓은 웹 페이지를 띄워보기

[root@AnsibleServer ~]# curl -o index.html https://www.nginx.com

위 명령어로 nginx 홈페이지의 html을 로컬 index.html로 다운로드 할 수 있음

이 html 파일을 노드들에게 전송하고 노드들이 이 페이지를 띄울 수 있게 할 것임!!

 

---
- hosts: nginx
  remote_user: root
  tasks:
    - name: install epel-release
      yum: name=epel-release state=latest
    - name: install nginx web server
      yum: name=nginx state=present
    - name : upload default index.html for web server
      copy : src=index.html dest=/usr/share/nginx/html mode=0644
    - name: Start nginx web server
      service: name=nginx state=started

playbook은 멱등성을 가지기 때문에 바로 추가하고 실행해도 됨!!

hosts: /etc/ansible/hosts의 [nginx] 부분의 host들만 사용

remote_user를 root로 꼭 할 필요는 없음

epel-release : nginx는 기본 설치 파일에는 없기 때문에 확장 후 다운로드 받기 위함

mode=0644 : 보안을 위함

 

[root@AnsibleServer ~]# ansible-playbook test.yml -k

SSH password:

 

PLAY [nginx] *******************************************************************************************************************************************************************

 

TASK [Gathering Facts] *********************************************************************************************************************************************************

ok: [192.168.35.11]

ok: [192.168.35.13]

ok: [192.168.35.12]

 

TASK [install epel-release] ****************************************************************************************************************************************************

ok: [192.168.35.12]

ok: [192.168.35.11]

ok: [192.168.35.13]

 

TASK [install nginx web server] ************************************************************************************************************************************************

ok: [192.168.35.11]

ok: [192.168.35.13]

ok: [192.168.35.12]

 

TASK [upload default index.html for web server] ********************************************************************************************************************************

changed: [192.168.35.11]

changed: [192.168.35.12]

changed: [192.168.35.13]

 

TASK [Start nginx web server] **************************************************************************************************************************************************

ok: [192.168.35.13]

ok: [192.168.35.11]

ok: [192.168.35.12]

 

PLAY RECAP *********************************************************************************************************************************************************************

192.168.35.11              : ok=5    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

192.168.35.12              : ok=5    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

192.168.35.13              : ok=5    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

 

결과!!!!><  메인 페이지가 바뀜~~