仅当定义了mysql_use_ssl时,我才需要将ssl_ca传递给mysql_db模块。使用一个任务可以做到这一点吗,比如:
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。
发布于 2017-01-19 01:14:50
这里有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 }}"发布于 2021-06-17 01:33:30
从ansible v2.8开始,您可以执行三元运算符:
...
ssl_ca: "{{ (if mysql_use_ssl) | ternary('/path/to/cert.pem', false, omit) }}"
...https://stackoverflow.com/questions/41724600
复制相似问题