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

时间:2018-05-24 04:53:41

标签: ansible

我有一个ansible playbook,它将配置文件推送到服务器并重新加载守护进程。

- 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传递给模板,所有内容都已部署。但我想将var传递给没有/ 16的模板,这意味着我只想将10.1.0.0传递给模板。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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