Ansible - MySQL & wordpress connect

FromCloud·2023년 6월 14일
0

Ansible

목록 보기
9/10

ansible을 이용하여 mysql과 wordpress 연동

이전에 구축해 놓았던 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를 다운받으면 serverclient가 같이 다운이 받아지지만 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은 자동화를 하기 위한 것이므로 따로 원격지에서 작업해야하는 목록을 최소화 시켜줘야 한다

마지막 방화벽포트 mysql3306포트를 사용하기 때문에 3306포트를 열어주었고 이전에 추가를 안했던 permanent를 추가하였는데 원래 이것을 사용하면 꼭 firewall-cmd --reload를 해줘야 명령어 적용이 되는데 ansible에서는 reload를 해줄수 없어서 permanent를 사용하면 꼭 immediate를 적어줘야 한다는점 잊으면 안된다.

profile
매일 발전하는 Cloud Engineer

0개의 댓글