处理剧本中的变量

时间:2013-04-08 22:44:20

标签: python ansible

我想制作一个脚本,以便在计算机实例之间快速设置TINC vpn。我需要的是一种通过“/tmp/setup_tinc.py”命令行传递以下args的方法:

--connect-to %{{ ' '.join( groups['do'] }}%

%{{ part }}%将在python中解释。但我似乎无法找到一个很好的方法来做到这一点。 你能帮我解决一下这段代码吗?

我制作了following playbook

- name: tinc install & setup
  hosts: do
  user: root
  vars:
    tincnet: cloudnet
  tasks:
  - name: Install tinc package
    action: command apt-get install tinc python-argparse -y
  - name: Copy tinc setup script
    action: copy src=setup_tinc.py dest=/tmp/setup_tinc.py mode=755
  - name: Run tinc setup script
    action: command /tmp/setup_tinc.py --network $tincnet --tinc-ip $tinc_ip --hostname     $hostname
  - name: Fetch back the tinc file
    action: fetch src=/etc/tinc/$tincnet/hosts/$hostname dst=hosts
  - name: Adding firewall rule
    action: command ufw allow 514

1 个答案:

答案 0 :(得分:1)

在Ansible 1.1及更早版本中,这有点棘手。您不能像在模板中那样在Playbooks中内嵌Python代码。但好消息是,GitHub最新代码库中的一些功能(将作为1.2版本发布)允许在剧本中使用Jinja2风格的模板!检查这个帖子:

https://groups.google.com/forum/#!topic/ansible-project/Gb3ABiEtGtA

所以这意味着你将能够做到:

- connect-to {{''。join(groups ['do']}}

如果你使用的是最新的GitHub代码,那么

...就在剧本中。

希望这有帮助!