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

标签 azure ansible

在 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/

相关文章:

python - Azure 应用服务无法部署 Streamlit 应用程序

c# - 如何从程序中启动 Azure 存储模拟器

json - 需要将目标文件中字典中的值替换为源文件中字典中的值

git - 当 git clone 在远程服务器上工作时,无主模式下的 ansible git 任务失败

ansible - 在ansible中迭代两个列表

azure - Terraform 数据源无法获取现有资源

Python:如何使用共享访问 key 连接到Azure云存储?

jenkins - 尝试使用 ANSIBLE 安装 jenkins-plugin 时出现错误 "Cannot get CSRF"

loops - Ansible:如何检查本地和远程文件集的 sha1 校验和

c# - Azure 存储,使用 BlobRequestOptions 而不使用 CloudBlobClient