我想制作一个脚本,以便在计算机实例之间快速设置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
答案 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代码,那么...就在剧本中。
希望这有帮助!