前提・実現したいこと
Ansibleのplaybook内でデータベースの権限を設定する際に、
データベース名をハードコーディングしないようにする。
発生している問題、エラーメッセージ
下記のplaybookを実行。
26行目のデータベースの権限を設定する際に、
データベース名を規定している変数を利用しようとすると構文エラーが発生する。
1 - hosts: test-server 2 user: root 3 become: yes 4 5 vars: 6 database_user: wordpress 7 database_password: Zaq12wsx 8 database_name: wordpress 9 database_host: localhost 10 11 tasks: 12 13 - name: MariaDB 起動 14 service: name=mariadb state=started enabled=yes 15 16 - name: データベース作成 17 mysql_db: 18 name: "{{ database_name }}" 19 state: present 20 21 - name: データベースのユーザ作成(権限も付与する) 22 mysql_user: 23 name: "{{ database_user }}" 24 password: "{{ database_password }}" 25 host: "{{ database_host }}" 26 priv: ""{{ database_name }}".*:ALL,GRANT" 27 state: present
下記がエラー内容(抜粋)
[root@localhost ~]# ansible-playbook -i ansible-inventory.txt dbcreate.yml ERROR! Syntax Error while loading YAML. The error appears to have been in '/root/dbcreate.yml': line 26, column 15, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: host: "{{ database_host }}" priv: ""{{ database_name }}".*:ALL,GRANT"
試したこと
26行目をハードコーディングすると、
ダブルクォーテーションの競合がないため、playbookは無事に実行される。
26 priv: "wordpress.*:ALL,GRANT"
やはりハードコーディングは再利用性が低くなるので、
なんとか変数を使って記述したい。
補足情報
・OSのバージョン
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
・Ansibleのバージョン
[root@localhost ~]# rpm -qa ansible
ansible-2.4.2.0-2.el7.noarch

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/24 07:24