본문 바로가기
Development(Web, Server, Cloud)/22) LINUX - Cloud

클라우드 73일차

by tonyhan18 2022. 5. 10.
728x90
---
- name: web server installation
  hosts: all
  become: yes
  gather_facts: yes
  vars:
    dversion: "{{ 'centos' if ansible_distribution == 'CentOS'
                  else 'ubuntu' if ansible_distribution == 'Ubuntu'
                  else 'centos' }}"
  tasks:
    - name: webserver install
      include_tasks: "{{ dversion }}.yaml"

websrv.yaml

 

---
- name: httpd install
  yum:
    name: httpd
    state: present

- name: httpd start
  service:
    name: httpd
    state: started
    enabled: true

- name: firewalld stop
  service:
    name: firewalld
    state: stopped
    enabled: false

centos.yaml

 

---
- name: nginx install
  apt:
    name: nginx
    state: present

- name: start nginx
  service:
    name: nginx
    state: started
    enable: true

- name: stop ufw
  ufw:
    state: disabled

ubuntu.yaml

 

---

정상적으로 nginx 정보를 가지고 온다.

 

---

 

docker 설치

server에 compose가 설치되지 않았음으로 명령어로 설치해주어야 한다.

 

나는 그냥 귀찮아서 명령어로 이걸 뿌려주었다

systemctl stop firewalld

ansible all -m shell -a "docker swarm join --token SWMTKN-1-2rsxrgzprjpryicxvc4vcja9q0sp41w2fwf01amsjy7f4u52a9-8iib9ecs8nk28mea8dice3892 192.168.121.23:2377" --become

단 주의할점은 이걸 할때 서버 방화벽이 내려가 있어야만 토큰을 통해 join 되는 노드들을 받아줄 수 있다.

 

그 다음 나를 통과해서 패킷을 통과해야 하기 때문에 일시적으로 ip_forward를 올려주자

```

vi /proc/sys/net/ipv4/ip_forward

```

패킷 포워딩 활성화를 위해서는

 

/etc/sysctl.conf 에 있는 내용을 바꾸어야 한다.

```

sudo vi /etc/sysctl.conf

```

이제 배포를 해보자

 

````

sudo docker service create --name myhttpd --replicas 4 -p 8888:80 --constraint 'node.role == workder' httpd

```

성공한 모습을 볼 수 있다.

 

---

AWX(Ansible Works)

ansible works -> 오픈 소스

ansible tower -> 관리버전

 

ansible works를 위해서는 위와같은 패키지들이 필요한데 모두 컨테이너로 제공한다. 그래서 도커만 설치되어 있다면 사용이 가능해진다.

 

ansible + docker + docker-compose + python + ansible works

가 깔려 있기 때문에 ubuntu에서 해야 한다.

 

그럼 지금 상황을 생각해보면

 

ansible이 있고 centos기반 kvm이 있다. 이 ansible을 가지고 centos 자체를 관리할 것이다. 나중에 ansible이 깔린 서버 주소만 받으면 전체가 관리 가능해진다.

 

그래서 관리하는 섭버에서 real, vm 들을 나누고 개발자로부터 playbook을 받아서 전체에 httpd를 뿌려주면 되는 것이다.

 

---

 

개인 프로젝트

 

728x90