在一个Ansible脚本中,我想通过certbot指定letencrypt证书的生成。通过域选项,我希望证书包含我希望注册的尽可能多的域。像这样进行硬编码时,一切都会按预期进行:
command: |
certbot certonly \
--standalone \
--non-interactive \
--agree-tos \
--email me@you.com \
-d domain1.com \
-d domain2.com \
-d domain3.com
由于脚本将更特定于主机/通用,我想知道:是否有可能通过驻留在我的host_vars/<specific_host>.yml
中的可访问项列表生成'-d domainx.com的上层列表?我不知道这是否更像是一个bash或一个与ansible相关的问题,这就是为什么我同时用:D
最好,谢谢! 安迪
答案 0 :(得分:1)
@CharlesDuffy:很遗憾,您的解决方案不适用于我们。尽管如此,join()
函数还是一个有价值的提示。使用join()
,我们只需在主机文件中创建第二个变量即可处理域列表
certbot_certificate_domains:
- domain1.com
- domain2.com
- domain3.com
certbot_domain_list: "-d {{ certbot_certificate_domains | join(' -d ') }}"
然后在我们的命令中引用变量的值:
name: run initial letsencrypt
command:
certbot certonly --standalone --non-interactive --agree-tos --rsa-key-size 4096 --email me@you.com {{ certbot_domain_list }}