如何使用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 中,在分支下,我的结构如下:

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