来自svn的Ansible拉

时间:2016-07-18 14:36:33

标签: svn ansible ansible-playbook

我正在尝试使用Ansible的拉模型,特别是我需要从SVN查看ansible playbooks。 我试过了

ansible-pull  -d “<destination directory ie. /home/me/playbooks>”  -U “http://myversioncontrol.com/myrepo” -m subversion

但我收到错误:

ERROR! Unsuported repo module subversion, choices are git

是的,拼写错误(Unsuported) 如果我执行命令ansible-doc -l,我可以在模块列表中看到subversion 我还安装了python-subversion(apt-get install python-subversion)并检查了它是否正确安装。
但是,我仍然有这个错误,我怎样才能使ansible-pull与svn一起工作?

2 个答案:

答案 0 :(得分:3)

-m

ansible-pull参数不是标准的ansible模块(由ansible-doc -l获得)。
它是ansible-pull cli实用程序中标准模块的内部包装 根据撰写此答案的时间,git是唯一受支持的拉模块(默认模块) Here的定义是:SUPPORTED_REPO_MODULES = ['git']

答案 1 :(得分:0)

我明白了。我需要在此处(Centos 7)编辑已安装的pull.py文件:

/usr/lib/python2.7/site-packages/ansible/cli/pull.py

我添加了这样的颠覆:

SUPPORTED_REPO_MODULES = ['git', 'subversion']

我运行的命令行是这样的:

ansible-pull -m subversion -U http://subversion.company.com/test/ansible/trunk/playbook --full local.yml -i hosts

没有--full,我会收到一条错误消息:

E155000: '/home/user/.ansible/pull/computername' already exists

如果没有-i主机,则会显示错误:

sudo: a password is required

貌似是因为它使用了隐式本地主机

https://docs.ansible.com/ansible/latest/inventory/implicit_localhost.html

我的主机文件有一个条目:

[pull]
localhost connection=paramiko ansible_user=ansible

如果不指定local.yml,它将与主机名匹配,然后该主机名将期望computername.yml存在。可能不错。