如何通过 Ansible 将 Git Repo 克隆到所有文件夹中
How to Clone Git Repo into all folders via Ansible
我正在使用 Ansible 设置多个测试服务器环境(它们基本上是相同 Git 存储库的副本到 test1-test55 不同的测试文件夹)。
现在,我可以使用文件 module/package 递归地创建这些文件夹,如下所示
- name: Creating multiple test environments
file: dest=/var/www/test{{ item }} state=directory
with_sequence: start=1 end=55
但我不确定如何使用 with_sequence 进行迭代,以便实际的 git 克隆任务克隆 https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/abc/sample.git 进入 test1,test2...test55 文件夹
我的任务是将 git 存储库克隆到单个 folder/test 环境
- name: Clone repo to the newly created test environments
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: /var/www/test1/sample #This will clone sample.git to test1, have tried using item here but gives an error
#with_sequence: start=1 end=55 #This does not work
应该对上述任务进行哪些更改,以便它可以在单次执行剧本时递归地将同一存储库克隆到所有 55 个文件夹
如有任何帮助,我们将不胜感激。
注意:组织和 Repo 名称仅供参考。
您应该能够像使用它创建目录一样使用 with_sequence
。
我设置了三个文件夹,名称分别为 test1
、test2
、test3
,并使用下面的任务将存储库克隆到所有文件夹中。这很好用。
- name: Clone repository into all folders
git:
repo: "<repo url>"
dest: "./test{{ item }}"
with_sequence: start=1 end=3
根据您的情况调整它会导致类似于下面的任务。
- name: Clone repository into all folders
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: "/var/www/test{{ item }}"
with_sequence: start=1 end=55
我们正在使用这个解决方案;我们将创建的文件夹注册到一个变量中,并重用该变量来克隆 git 存储库。
---
- name: Sample playbook for git
hosts: localhost
connection: local
become: True
become_user: root
gather_facts: False
tasks:
- name: Creating multiple test environments
file: dest=/var/www/test{{ item }} state=directory
with_sequence: start=1 end=55
register: my_test_folders
- name: Clone repo to the newly created test environments
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: "{{ item.path }}"
loop: "{{ my_test_folders.results }}"
我正在使用 Ansible 设置多个测试服务器环境(它们基本上是相同 Git 存储库的副本到 test1-test55 不同的测试文件夹)。
现在,我可以使用文件 module/package 递归地创建这些文件夹,如下所示
- name: Creating multiple test environments
file: dest=/var/www/test{{ item }} state=directory
with_sequence: start=1 end=55
但我不确定如何使用 with_sequence 进行迭代,以便实际的 git 克隆任务克隆 https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/abc/sample.git 进入 test1,test2...test55 文件夹
我的任务是将 git 存储库克隆到单个 folder/test 环境
- name: Clone repo to the newly created test environments
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: /var/www/test1/sample #This will clone sample.git to test1, have tried using item here but gives an error
#with_sequence: start=1 end=55 #This does not work
应该对上述任务进行哪些更改,以便它可以在单次执行剧本时递归地将同一存储库克隆到所有 55 个文件夹
如有任何帮助,我们将不胜感激。
注意:组织和 Repo 名称仅供参考。
您应该能够像使用它创建目录一样使用 with_sequence
。
我设置了三个文件夹,名称分别为 test1
、test2
、test3
,并使用下面的任务将存储库克隆到所有文件夹中。这很好用。
- name: Clone repository into all folders
git:
repo: "<repo url>"
dest: "./test{{ item }}"
with_sequence: start=1 end=3
根据您的情况调整它会导致类似于下面的任务。
- name: Clone repository into all folders
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: "/var/www/test{{ item }}"
with_sequence: start=1 end=55
我们正在使用这个解决方案;我们将创建的文件夹注册到一个变量中,并重用该变量来克隆 git 存储库。
---
- name: Sample playbook for git
hosts: localhost
connection: local
become: True
become_user: root
gather_facts: False
tasks:
- name: Creating multiple test environments
file: dest=/var/www/test{{ item }} state=directory
with_sequence: start=1 end=55
register: my_test_folders
- name: Clone repo to the newly created test environments
git:
repo: "https://{{ githubuser | urlencode }}:{{ githubpassword | urlencode }}@github.com/ABC/sample.git"
dest: "{{ item.path }}"
loop: "{{ my_test_folders.results }}"