我正在尝试使用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一起工作?
答案 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存在。可能不错。