본문 바로가기

클라우드/앤서블(Ansible)

앤서블 Ansible 플레이북 ( playbook ) / wordpress 구성하기 1

# Ad-hoc 명령으로 wordpress 구성하기

 

https://wordpress.org/download/releases/

 

Releases

Browse and download previous versions of WordPress for testing and development.

wordpress.org

 

1. apache2 패키지 설치

 

2. 서비스 실행 확인

 

3. wordpress파일 다운

 

4. 아카이브 풀기

 

 

 

 

1. apache 패키지 설치 2. 서비스 실행 확인 3. wordpress파일 다운 4. 아카이브 풀기

이것을 playbook으로 작성해보자

 

# playbook으로 wordpress 구성하기

플레이북은 리스트로 시작한다. Adhoc 커멘드를 사용했을 때  작업 할 managed node , module, pattern, parameter가 필요했다

hosts 키워드 (필수)  -  관리노드의 pattern (인벤토리에 있던 패턴)

tasks 작업 리스트, 4개의 작업 4개의 리스트  -  module

module의 value  -  parameter

 

파일 전체가 playbook (하나 이상의 play가 있어야한다)

첫번째 리스트 play (하나 이상의 task가 있어야한다)

tasks 속성 밑의 하나하나의 리스트가 task(작업,모듈)

 

리스트 목록은 순서가 있다 (앤서블은 절차적인 언어 사용)

순서를 바꾸면 안됨

 

 

 

문법 오류가 있는지 확인한다

playbook파일에 문법적 오류가 있으면 에러메세지를 출력한다

 

 

check (체크모드) 옵션

실제 시스템에 변경사항을 만들지 않고 시뮬레이션 하는것 (dry run)

전 변경사항이 일어나야지만 다음 작업을 할 수 있는경우 오류가 나오기도 한다 (skipped)

체크모드에서 오류가 발생하고 실제로는 오류가 발생하지 않을 수 있다

 

 

실제 변경되는 내용을 출력 해준다

파일이 어떻게 바뀌는지 보기 위해  주로 파일을 복사 할 때 사용한다

 

 

task의 목록 확인

 

 

문법상 오류를 잡아주는것 뿐만아니라 전체 포맷을 잡아준다

 

 

권한이 없어서 오류가 난다

패키지 설치 , 서비스 제어, 아카이브를 풀 때 관리자 권한이 필요하다

 

권한을 주어 실행

 

 

name이 없어도 되지만 작업이 많으면 디버깅하기 힘들기 때문에 작업마다 이름을 붙여주는것을 권장한다

 

 

TASK에 모듈이름이 나오지 않고 사용자가 지정 한 이름이 나온다

 

 

더보기


ansible -m apt -a 'name=apache2 state=presen' -b 192.168.200.101
ansible -m apt -a 'name=apache2 state=absent' -b 192.168.200.101



ansible -m get_url -a 'url=https://wordpress.org/wordpress-5.8.tar.gz dest=/tmp ' -b 192.168.200.101

 

ansible -m unarchive -a 'src=/tmp/wordpress-5.8.tar.gz dest=/var/www/html remote_src=true' -b 192.168.200.101 


 vi wordpress.yaml
cat wordpress.yaml 
- hosts: 192.168.200.101
  tasks:
  - apt:
      name: apache2
      state: present
  - service:
      name: apache2
      state: started
  - get_url:
      url: https://wordpress.org/wordpress-5.8.tar.gz
      dest: /tmp/wordpress-5.8.tar.gz
  - unarchive:
      src: /tmp/wordpress-5.8.tar.gz
      remote_src: true
      dest: /var/www/html
      
      
      
      
   
 
ansible-playbook wordpress.yaml 
ansible-playbook wordpress.yaml --syntax-check
ansible-playbook wordpress.yaml -C
ansible-playbook wordpress.yaml --check

ansible-playbook wordpress.yaml --check --diff
ansible-playbook wordpress.yaml --list-tasks
ansible-lint wordpress.yaml
ansible-playbook wordpress.yaml -b


vi wordpress.yaml 
cat wordpress.yaml 
- name: Wordpress Deployment
  hosts: 192.168.200.101
  tasks:
  - name: Install Apache2 Service
    apt:
      name: apache2
      state: present
  - name: Starting Apache2 Service
    service:
      name: apache2
      state: started
  - name: Download Wordpress Archive
    get_url:
      url: https://wordpress.org/wordpress-5.8.tar.gz
      dest: /tmp/wordpress-5.8.tar.gz
  - name: Unarchive Wordpress
    unarchive:
      src: /tmp/wordpress-5.8.tar.gz
      remote_src: true
      dest: /var/www/html