首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible:条件任务参数

问Ansible:条件任务参数
EN

Stack Overflow用户
提问于 2017-01-19 00:30:35
回答 2查看 4.1K关注 0票数 12

仅当定义了mysql_use_ssl时,我才需要将ssl_ca传递给mysql_db模块。使用一个任务可以做到这一点吗,比如:

代码语言:javascript
复制
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 %}

此实际代码段不起作用,结果是:

代码语言:javascript
复制
{"failed": true, "msg": "template error while templating string: Encountered unknown tag 'endif'.. String: /path/to/cert.pem{% endif %}"}

将条件移动为时:

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2017-01-19 01:14:50

这里有omit关键字/变量:

代码语言:javascript
复制
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 }}"
票数 14
EN

Stack Overflow用户

发布于 2021-06-17 01:33:30

从ansible v2.8开始,您可以执行三元运算符:

代码语言:javascript
复制
...
ssl_ca: "{{ (if mysql_use_ssl) | ternary('/path/to/cert.pem', false, omit) }}"
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41724600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档