Ansible:操作变量并传递给模板

  • 本文关键字:操作 变量 Ansible ansible
  • 更新时间 :
  • 英文 :


我有 ansible 剧本,它将配置文件推送到服务器并重新加载守护程序。


- name: change configuration
become: yes
become_user: root
template:
src: templates/default.j2
dest: /etc/varnish/default.vcl
- name: Change varnish demon 
become: yes
become_user: root
shell: |
sed -e '/ExecStart/ s/^#*/#/' -i /lib/systemd/system/varnish.service
sed -i '10iExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -p feature=+esi_ignore_https -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m' /lib/systemd/system/varnish.service
systemctl daemon-reload
notify: Restart varnish

我通过包含这个角色在另一个角色中调用这个角色

- include_role:
name: varnish
vars:
CidrBlock: "{{ my_stack.ansible_facts.cloudformation[stack_name].stack_outputs.CidrBlock }}"

这个 var输出类似于 10.1.0.0/16,我将这个 var 传递给模板,然后部署所有内容。 但是我想在没有/16 的情况下将 var 传递给模板,这意味着我只想将 10.1.0.0 传递给模板。 我该如何解决这个问题?

从云形成本身解决这个问题,操纵云形成的输出并收集该输出并传递给 ansible 模板,因为我找不到在 ansible 方面进行这种操作的方法。

"CidrBlock2":{
"Value":{
"Fn::Join" : [ ".", [ "10", {"Ref": "ClassB"}, "0","0" ] ]
}
}

最新更新