이전에 구축해 놓았던 wordpress
를 이용하면 데이터베이스가 연동되지 않았습니다 하는 오류가 뜰것이다 회원가입이 되기 위해선 백엔드 부분에서 데이터베이스와 연동이 되어야 회원가입할때 들어가는 정보가 데이터베이스에 삽입이 될것이다
---
- name: install mysql5.7
hosts: db1
tasks:
- name: mysql repo install
shell: 'yum install -y http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
ignore_errors: yes
- name: install mysql5.7 server & client
yum:
name: "{{ item }}"
disable_gpg_check: yes
state: present
loop:
- mysql-community-server
- mysql-community-client
- name: mysql5.7 server started
systemd:
name: mysqld
state: started
- name: pip install & mysql-python
yum:
name:
- python3-pip
- MySQL-python
- name: Change mysql root password
shell: |
password_match=`awk '/A temporary password is generated for/ {a=$0} END{print a}' /var/log/mysqld.log | awk '{print $(NF)}'`
echo $password_match
mysql -uroot -p$password_match --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'It12345@'; flush privileges;"
password=It12345@ > /root/.my.cnf
mysql -uroot -p$password -e "grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'It12345@'; flush privileges;"
- name: create database wordpress
mysql_db:
name: wordpress
state: present
login_user: root
login_password: 'It12345@'
- name: mysql port open
firewalld:
port: 3306/tcp
permanent: yes
immediate: yes
state: enabled
linux
에서 yum install -y mysql-community
를 다운받으면 server
와 client
가 같이 다운이 받아지지만 ansible
에서는 각각 따로 지정을 해줘야한다는 점 참고 해야한다
mysql57
버전을 다운받기 위해서 외부에서 레포지토리를 불러와서 다운을 받도록 지정을했다 여기서 새로나오는 것이 하나있는데 바로 ignore_errors: yes
인데 레포지토리를 이미 다운받아놨거나 다운받아 져있으면 에러가 뜨면서 failed
가 떠서 더이상 다음 단계로 넘어가지 않는것을 방지하기 위해서 추가를 하였다
repo
를 추가하고 다운을 받아도 아마 에러 메시지가 발생할 것이다 그 이유는 gpg_check=1
로 되어있어서 그런것인데 이것을 0으로 바꿔주어야 mysql
가 다운이 될것이다
다행히도 ansible
모듈안에 disable_gpg_check
라는 것이 있어 따로 설정파일을 들어가서 설정을 해주지 않아도 된다.
다운을 받고나서 mysql system start
를 진행 해주고 나선 python3-pip, MySQL-python
을 설치해주면된다
pip
는 파이썬 내에서 모듈같은것을 다운받을 때 쓰는 것으로 알고있다
다음으로 나오는 엄청 긴 내용이 있을것이다 이것은 mysql
비밀번호를 따오기 위한 스크립트 라고 보면된다 grant all privileges on *.* to 'root'@'%' IDENTIFIED BY 'It12345@'; flush privileges
부분은 원격지에서도 로그인 할 수 있도록 %
모든 IP를 열어주고 권한을 릴리즈 한다는 뜻이다 원래 초기 패스워드를 설정하지 않아도 root 권한으로 들어가주기 위해서는 cat /var/log/mysqld.log | grep password
명령어를 입력해 키값을 가져와야 하는데 이것을 스크립트로 만들고 자동적으로 입력이 되도록 한다고 보면된다
이전 글에서 얘기했듯이 ansible
은 자동화를 하기 위한 것이므로 따로 원격지에서 작업해야하는 목록을 최소화 시켜줘야 한다
마지막 방화벽포트 mysql
은 3306
포트를 사용하기 때문에 3306포트를 열어주었고 이전에 추가를 안했던 permanent
를 추가하였는데 원래 이것을 사용하면 꼭 firewall-cmd --reload
를 해줘야 명령어 적용이 되는데 ansible
에서는 reload
를 해줄수 없어서 permanent
를 사용하면 꼭 immediate
를 적어줘야 한다는점 잊으면 안된다.