gpt4 book ai didi

azure - 我们可以对同一存储库的不同文件夹中的两个 main.yml 使用变量吗

转载 作者:行者123 更新时间:2023-12-03 00:59:45 26 4
gpt4 key购买 nike

在 Azure Repos 中,我在不同的文件夹中有两个 main.yml 。 main.yml 之一是安装软件包列表,另一个是验证是否安装了这些软件包。每次我添加一个要安装的新包。我需要在另一个 yaml 中添加相同的内容。当我更新一个 yaml 中的包名称时,有什么方法可以适用或也适用于另一个 yaml 吗?我无法合并它们,因为我用于不同的管道。

#This is one main.yml
- name: install basic packages
action: >
{{ ansible_pkg_mgr }} name={{ item }} state=present update_cache=yes
with_items:
- vim
- tmux
- mosh
#This is another
- name:Check for packages
shell: rpm vim tmux mosh
register: packages_status

最佳答案

Q: "Can we use a variable for two main.yml which are in different folders of the same repo?"

答:这可以通过在任何优先级上声明的变量来完成。详细信息取决于哪些主机或哪些主机组将使用此变量。请参阅Variable precedence: Where should I put a variable? 。例如,我们来看一个简单的案例,其中包含一台主机 test_01 以及在 host_vars 中声明的包 pkg_list 列表。

shell> cat hosts
test_01
shell> cat host_vars/test_01 
pkg_list: [vim, tmux, mosh]

下面的剧本包括两个用于安装和验证软件包的角色

shell> cat pb.yml
- hosts: test_01
tasks:
- include_role:
name: install
tasks_from: main.yml
- include_role:
name: validate
tasks_from: main.yml
shell> cat roles/install/tasks/main.yml
- debug:
msg: install {{ pkg_list }}
shell> cat roles/validate/tasks/main.yml
- debug:
msg: validate {{ pkg_list }}

给出

shell> ansible-playbook -i hosts pb.yml

PLAY [test_01] ****

TASK [include_role : install] ****
TASK [install : debug] ****
ok: [test_01] =>
msg: install ['vim', 'tmux', 'mosh']

TASK [include_role : validate] ****
TASK [validate : debug] ****
ok: [test_01] =>
msg: validate ['vim', 'tmux', 'mosh']

关于azure - 我们可以对同一存储库的不同文件夹中的两个 main.yml 使用变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62570438/

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