2017-01-18 30 views
1

只有定义了mysql_use_ssl,我才需要将ssl_ca传递给mysql_db模块。这是可能的使用一个任务,如:Ansible:条件任务参数

mysql_db: name=mydb state=import target=/tmp/mysql.sql login_host="mydbhost" login_user="root" login_password="password" {% if mysql_use_ssl %}ssl_ca=/path/to/cert.pem{% endif %} 

这真正的代码段不能正常工作,结果是:

{"failed": true, "msg": "template error while templating string: Encountered unknown tag 'endif'.. String: /path/to/cert.pem{% endif %}"} 

移动当条件为:

mysql_db: name=mydb state=import target=/tmp/mysql.sql login_host="mydbhost" login_user="root" login_password="password" ssl_ca="{% if mysql_use_ssl %}/path/to/cert.pem{% else %}none{% endif %}" 

然后它“作品”,但none不是关闭MySQL的SSL支持的参数连接,所以它不关闭ssl。

回答

2

有这个omit关键字/变量:

mysql_db: 
    name: mydb 
    state: import 
    target: /tmp/mysql.sql 
    login_host: mydbhost 
    login_user: root 
    login_password: password 
    ssl_ca: "{{ '/path/to/cert.pem' if mysql_use_ssl | default(false) else omit }}"