在ansible中中断通过命令行传递的变量

在ansible中中断通过命令行传递的变量,ansible,Ansible,我的剧本里有一句话如下 ftp://user:password@mysite/pub/ec/component/12.05/{{ version }}/product-{{ version }}-Linux2.6_64-release.tar ansible-playbook -l dbservers test.yml -vvvv --extra-vars "version=12.06.010" 当我运行playbook时,我使用--extra-vars从命令行获取version的值,如下

我的剧本里有一句话如下

ftp://user:password@mysite/pub/ec/component/12.05/{{ version }}/product-{{ version }}-Linux2.6_64-release.tar
ansible-playbook  -l dbservers test.yml -vvvv --extra-vars "version=12.06.010"
当我运行playbook时,我使用--extra-vars从命令行获取version的值,如下所示

ftp://user:password@mysite/pub/ec/component/12.05/{{ version }}/product-{{ version }}-Linux2.6_64-release.tar
ansible-playbook  -l dbservers test.yml -vvvv --extra-vars "version=12.06.010"
现在我想要的是,当用户输入值12.06.010时,ftp路径将自动创建为

ftp://user:password@mysite/pub/ec/component/12.06/12.06.010/product-12.06.010-Linux2.6_64-release.tar 
也就是说,用户条目将分为两部分-->前两部分将构成主版本,整个版本将成为产品版本


有什么办法可以做到这一点吗?

有两种方法:

ftp://user:password@mysite/pub/ec/component/{{ version[:-4] }}/{{ version }}/product-{{ version }}-Linux2.6_64-release.tar
只有当您完全确定版本的最后一部分始终由3个字符(和点)组成时,这才有效。 我在那里做的是,我使用“切片”将字符串切片到除最后4个字符以外的所有字符

另一条路是:

ftp://user:password@mysite/pub/ec/component/{{ version.split('.')[0] }}.{{ version.split('.')[1] }}/{{ version }}/product-{{ version }}-Linux2.6_64-release.tar
在这个场景中,您必须多写一些,但是,您不必担心版本最后一部分的长度。只要保持相同的版本控制格式(带2个点),此方法就可以工作


它的工作方式是将
变量
拆分为一个数组(在本例中为3个元素),然后选择第一个和第二个元素(并在它们之间放置一个点)。

您是否试图从
版本
变量中获取
12.06
部分?您能否澄清一下,您希望动态生成哪些变量取决于您的变量?