背景
GCE -> CloudSQLへの接続にcloud_sql_proxyを使って苦労したのでメモ。
サンプル
## mysqlの設定(必要ないならスキップ)
- name: add repo
command: rpm -ih http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm creates=/etc/yum.repos.d/mysql-community.repo
- name: install mysql-devel
yum: name=mysql-community-devel.x86_64 state=installed
## ここからcloud_sql_proxyの設定
- name: get cloud_sql_proxy file
stat: path=cloud_sql_proxy
register: proxy_file
- name: download cloud_sql_proxy
when: proxy_file.stat.exists == false
get_url:
url: https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
dest: ./
- name: mv gcs
when: proxy_file.stat.exists == false
command: mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy
- name: permission of gcs
when: proxy_file.stat.exists == false
file:
path: cloud_sql_proxy
owner: deployer
group: deployer
mode: 0775
- name: run gcs
when: proxy_file.stat.exists == false
shell: ./cloud_sql_proxy -instances={{ cloud_sql_connect }}=tcp:3306 >& /var/log/cloud_sql_proxy.log &
args:
chdir: /home/deployer
async: 5
poll: 0
MEMO
変数
-
cloud_sql_connect
: cloud_sqlの接続情報(project_id:asia-norteast-1:instance_name
みたいなやつ) -
login_user
: sshログインユーザー
はまったとこ
- chdirにlogin_userのホームを指定しないと実行できなかった
-
become: true
で実行してたのでrootのホームにいたっぽい
-
- 起動スクリプトに
>& /log/output
がないとprocessは起動するけど、接続時にプロセス落ちる