gpt4 book ai didi

Ansible:从 git repo 克隆一个文件

转载 作者:行者123 更新时间:2023-12-05 07:17:57 25 4
gpt4 key购买 nike

有没有可能用 git ansible 模块 从 git 克隆一个文件?正如我所读,ansible 的 git 存档似乎只能从本地克隆的 repo 运行。

目前我使用这个:

  - name: Bring file from git
shell: git archive --remote=git://git.example.com/project.git HEAD:{{ test }} filename | tar -x -C folder1 -s /filename/filename_{{ test }}/
delegate_to: localhost

test 变量定义在 inventory 文件中,每个组下有其他值:

[group1:vars]
test=abc

[group1]
host1
host2

[group2:vars]
test=xyz

[group2]
host5
host6

是否有可能使 shell 模块成为幂等的,以便如果文件已经下载并存在,则不会在主机上针对相同的 test 变量值再次运行相同的任务相同的主机组。

例如:

如果我从上面为 group1 运行任务,该任务将在 group1 下的第一台主机上运行,​​并将从 git 中获取文件,然后将在 group1 下的第二个主机上运行,​​并再次从 git 中获取相同的文件.

我想做的是,如果任务从 git 为 group1 下的第一个主机带来文件,则不要再次从 git 为 group1 的 host2 带来相同的文件。

谢谢

最佳答案

Q: "If the task brings the file from git for the first host under the group1 to not bring again the same file from git for host2 from group1."

答:有可能run_once任务。例如。

- name: Bring file from git
shell: git ...
run_once: true

Q: "Playbook starts with: - hosts: all. I want that for each first host under each group to run the shell: git ...."

A:可以将任务放入单独的 play 中。在第一个游戏中创建一组所有组中的第一个主机。第二个play使用创建的group从git下载文件。准备好数据后,对所有主机运行第三次播放。例如

- name: Create group of hosts my_git_group
hosts: localhost
gather_facts: false
tasks:
- add_host:
name: "{{ groups[item]|first }}"
groups: 'my_git_group'
loop: "{{ groups.keys()|difference(['ungrouped', 'all']) }}"

- name: Download files from git
hosts: my_git_group
gather_facts: false
tasks:
- debug:
msg: "{{ inventory_hostname }} shell git"

- name: Proceed
hosts: all
gather_facts: false
tasks:
- debug:
msg: Proceed
run_once: true

关于Ansible:从 git repo 克隆一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58560275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com