SMALL
vars를 사용하여 Wordpress 배포/제거 Playbook 작성
- 변수
반복적으로 사용하거나, 고정되지 않고 변경될 수 있는 값을 변수로 지정하면, 변경이 필요할 때 변수 값만 변경하여 쉽게 배포할 수 있습니다.
변수명으로는 예약된 키워드를 사용할 수 없고 문자/숫자/_(underscore)만 사용이 가능하며, 숫자로는 시작할 수 없습니다.
변수를 참조할 때는 반드시 {{ }} 이중 중괄호를 사용하며, 변수가 참조하는 모든 값을 따옴표로 인용합니다.
vars는 Play에서만 유효햡니다. 즉 vars의 유효 범위는 Play입니다.
tasks(작업)에 vars를 지정할 수도 있습니다. 이때 vars의 유효 범위는 해당 작업입니다.
1. Wordpress & MySQL 배포 Playbook
- name: Wordpress & MySQL Deployment
hosts: 192.168.200.101
vars:
mysql_socket: "/var/run/mysqld/mysqld.sock"
mysql_db: "wpdb"
mysql_user: "wpadm"
mysql_password: "P@ssw0rd"
wp_ver: "5.8"
wp_url: "https://wordpress.org/wordpress-{{ wp_ver }}.tar.gz"
wp_sha1: "sha1:6476e69305ba557694424b04b9dea7352d988110"
wp_source: "/tmp/wordpress-{{ wp_ver }}.tar.gz"
wp_config: "/var/www/html/wordpress/wp-config.php"
tasks:
- name: Install MySQL Package
apt:
update_cache: true
name: mysql-server, python3-pymysql
state: present
- name: Starting Mysql Service
service:
name: mysql
state: started
enabled: yes
- name: Create Wordpress Database
mysql_db:
login_unix_socket: "{{ mysql_socket }}"
name: "{{ mysql_db }}"
state: present
- name: Create Wordpress User
mysql_user:
check_implicit_admin: yes
login_unix_socket: "{{ mysql_socket }}"
name: "{{ mysql_user }}"
password: "{{ mysql_password }}"
host: localhost
priv: "{{ mysql_db }}.*:ALL,GRANT"
state: present
- name: Install Apache2 Package
apt:
name: apache2, php, php-mysql, php-gd, php-mbstring
state: present
- name: Starting Apache2 Service
service:
name: apache2
state: started
enabled: yes
- name: Download Wordpress Source
get_url:
url: "{{ wp_url }}"
checksum: "{{ wp_sha1 }}"
dest: "{{ wp_source }}"
- name: Unarchive Wordpress Source
unarchive:
src: "{{ wp_source }}"
remote_src: true
dest: /var/www/html
- name: Setting Wordpress Database Configuration
copy:
src: /var/www/html/wordpress/wp-config-sample.php
dest: "{{ wp_config }}"
remote_src: yes
- name: Setting Configuration for DB Name
replace:
path: "{{ wp_config }}"
regexp: database_name_here
replace: "{{ mysql_db }}"
- name: Setting Configuration for User
replace:
path: "{{ wp_config }}"
regexp: username_here
replace: "{{ mysql_user }}"
- name: Setting Configuration for Password
replace:
path: "{{ wp_config }}"
regexp: password_here
replace: "{{ mysql_password }}"
2. Playbook 실행
ansible-playbook deploy_vars.yaml -b --syntax-check # 문법 체크 ansible-playbook deploy_vars.yaml -b --check --diff # 시뮬레이션 ansible-playbook deploy_vars.yaml -b # 실행
3. 동작 Test
curl http://192.168.200.101/wordpress
ssh 192.168.200.101 mysql -u wpadm -p mysql> show databases;
http://192.168.200.101/wordpress
SMALL
'IaC > Ansible 실습' 카테고리의 다른 글
Ansible 실습 | vars_files를 사용하여 Wordpress & MySQL 배포 Playbook 작성 (0) | 2021.08.18 |
---|---|
Ansible 실습 | Docker로 Apache 웹 서비스 배포 Playbook 작성 (0) | 2021.08.18 |
Ansible 실습 | Wordpress 배포/제거 Playbook 작성(apache, mysql) (0) | 2021.08.17 |
Ansible 실습 | 하나의 Managed Node에 Wordpress, Apache, Mysql 세팅 (feat. Ad-hoc) (0) | 2021.08.17 |
Ansible | 개요, 용어, 아키텍처 (0) | 2021.08.06 |