如何使用ansible进行svn结帐
How to do svn checkout using ansible
有没有办法使用 Ansible 从 svn 检出整个目录?
下面的播放检查了该目录的内容,但我也希望目录本身也被检查出来。
那我是不是要先创建目录再checkout内容呢?
基本上我的问题是关于查看 /home/ansible/temp/deploy/
.
中的内容 和目录 my-1.0.0
- name: Checking out the Ansible Playbook for the current Release in the Release directory
delegate_to: localhost
subversion:
repo: svn://build.test/my-devops-mvp/branches/my-{{my_release_version}}
dest: '/home/ansible/temp/deploy/'
in_place: yes
我将变量 my_release_version
作为命令行参数传递,在 SVN 中,在分支下,我的结构如下:
- 我的-1.0.0
- 我的-1.0.2
- 等等
TL;DR;
您的解决方法是在 dest
参数中实际添加您想要的文件夹,因为如果文件夹尚不存在,Subversion 将为您创建该文件夹:
dest: /home/ansible/temp/deploy/my-{{ my_release_version }}
Ansible subversion module actually acts exactly as the subversion checkout command.
svn checkout URL[@REV]... [PATH]
在 Ansible 模块中,你在参数 subversion 中输入的参数 repo
在这里调用 URL[@REV]...
而你在 dest
中输入的参数是他们在这里调用的 PATH
.
本质上,您会注意到在使用该命令时您正在签出的 PATH
可以但不必强制存在。
例如:
/tmp # ls -lR
.:
total 0
/tmp # svn co https://svn.apache.org/repos/asf/subversion/branches/1.0.x/notes/logo/16-colour svn-logo
A svn-logo/subversion_logo_notxt-16m.png
A svn-logo/subversion_logo_notxt-48m.png
A svn-logo/subversion_logo_notxt-32m.png
Checked out revision 1877849.
/tmp # ls -lR svn-logo/
svn-logo/:
total 12
-rw-r--r-- 1 root root 237 May 17 10:36 subversion_logo_notxt-16m.png
-rw-r--r-- 1 root root 292 May 17 10:36 subversion_logo_notxt-32m.png
-rw-r--r-- 1 root root 348 May 17 10:36 subversion_logo_notxt-48m.png
另请注意,您甚至可以创建完整的目录结构,即使那里不存在。
/tmp # svn co https://svn.apache.org/repos/asf/subversion/branches/1.0.x/notes/logo/16-colour 1.0.X/notes/logo/16-colour
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-16m.png
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-48m.png
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-32m.png
Checked out revision 1877850.
因此,正如我之前所说,适用于颠覆命令的内容也适用于 Ansible 模块。
鉴于此剧本:
- hosts: local
vars:
release: 1.0.x
tasks:
- name: svn co
subversion:
repo: https://svn.apache.org/repos/asf/subversion/branches/{{ release }}/notes/logo/16-colour
dest: /tmp/{{ release }}/notes/logo/16-colour
in_place: yes
我演完了:
/ # ls -lR /tmp
/tmp:
total 0
/ # ansible-playbook play.yml -i inventory.yml
PLAY [local] *********************************************************************************************
TASK [Gathering Facts] ***********************************************************************************
ok: [local]
TASK [svn co] ********************************************************************************************
changed: [local]
PLAY RECAP ***********************************************************************************************
local : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
/ # ls -lR /tmp/1.0.x/notes/logo/16-colour
/tmp/1.0.x/notes/logo/16-colour:
total 12
-rw-r--r-- 1 root root 237 May 17 10:33 subversion_logo_notxt-16m.png
-rw-r--r-- 1 root root 292 May 17 10:33 subversion_logo_notxt-32m.png
-rw-r--r-- 1 root root 348 May 17 10:33 subversion_logo_notxt-48m.png
有没有办法使用 Ansible 从 svn 检出整个目录?
下面的播放检查了该目录的内容,但我也希望目录本身也被检查出来。
那我是不是要先创建目录再checkout内容呢?
基本上我的问题是关于查看 /home/ansible/temp/deploy/
.
my-1.0.0
- name: Checking out the Ansible Playbook for the current Release in the Release directory
delegate_to: localhost
subversion:
repo: svn://build.test/my-devops-mvp/branches/my-{{my_release_version}}
dest: '/home/ansible/temp/deploy/'
in_place: yes
我将变量 my_release_version
作为命令行参数传递,在 SVN 中,在分支下,我的结构如下:
- 我的-1.0.0
- 我的-1.0.2
- 等等
TL;DR;
您的解决方法是在 dest
参数中实际添加您想要的文件夹,因为如果文件夹尚不存在,Subversion 将为您创建该文件夹:
dest: /home/ansible/temp/deploy/my-{{ my_release_version }}
Ansible subversion module actually acts exactly as the subversion checkout command.
svn checkout URL[@REV]... [PATH]
在 Ansible 模块中,你在参数 subversion 中输入的参数 repo
在这里调用 URL[@REV]...
而你在 dest
中输入的参数是他们在这里调用的 PATH
.
本质上,您会注意到在使用该命令时您正在签出的 PATH
可以但不必强制存在。
例如:
/tmp # ls -lR
.:
total 0
/tmp # svn co https://svn.apache.org/repos/asf/subversion/branches/1.0.x/notes/logo/16-colour svn-logo
A svn-logo/subversion_logo_notxt-16m.png
A svn-logo/subversion_logo_notxt-48m.png
A svn-logo/subversion_logo_notxt-32m.png
Checked out revision 1877849.
/tmp # ls -lR svn-logo/
svn-logo/:
total 12
-rw-r--r-- 1 root root 237 May 17 10:36 subversion_logo_notxt-16m.png
-rw-r--r-- 1 root root 292 May 17 10:36 subversion_logo_notxt-32m.png
-rw-r--r-- 1 root root 348 May 17 10:36 subversion_logo_notxt-48m.png
另请注意,您甚至可以创建完整的目录结构,即使那里不存在。
/tmp # svn co https://svn.apache.org/repos/asf/subversion/branches/1.0.x/notes/logo/16-colour 1.0.X/notes/logo/16-colour
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-16m.png
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-48m.png
A 1.0.X/notes/logo/16-colour/subversion_logo_notxt-32m.png
Checked out revision 1877850.
因此,正如我之前所说,适用于颠覆命令的内容也适用于 Ansible 模块。
鉴于此剧本:
- hosts: local
vars:
release: 1.0.x
tasks:
- name: svn co
subversion:
repo: https://svn.apache.org/repos/asf/subversion/branches/{{ release }}/notes/logo/16-colour
dest: /tmp/{{ release }}/notes/logo/16-colour
in_place: yes
我演完了:
/ # ls -lR /tmp
/tmp:
total 0
/ # ansible-playbook play.yml -i inventory.yml
PLAY [local] *********************************************************************************************
TASK [Gathering Facts] ***********************************************************************************
ok: [local]
TASK [svn co] ********************************************************************************************
changed: [local]
PLAY RECAP ***********************************************************************************************
local : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
/ # ls -lR /tmp/1.0.x/notes/logo/16-colour
/tmp/1.0.x/notes/logo/16-colour:
total 12
-rw-r--r-- 1 root root 237 May 17 10:33 subversion_logo_notxt-16m.png
-rw-r--r-- 1 root root 292 May 17 10:33 subversion_logo_notxt-32m.png
-rw-r--r-- 1 root root 348 May 17 10:33 subversion_logo_notxt-48m.png