在Ansible中安装多个软件包 [英] Installing multiple packages in Ansible

查看:102
本文介绍了在Ansible中安装多个软件包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Ansible中有此任务:

I have this task in Ansible:

- name: Install mongodb
  yum:
    name:
    - "mongodb-org-{{ mongodb_version }}"
    - "mongodb-org-server-{{ mongodb_version }}"
    - "mongodb-org-mongos-{{ mongodb_version }}"
    - "mongodb-org-shell-{{ mongodb_version }}"
    - "mongodb-org-tools-{{ mongodb_version }}"
    state: present
  notify: Restart mongodb

有没有一种方法可以指示版本而不必使用这样的循环?什么是更优雅"的书写方式?

Is there a way I can indicate the version without having to use a loop like this? What is a more "elegant" way of writing this?

- name: Install mongodb
  yum:
    name: "{{ item }}-{{ mongodb_version }}"
    state: present
    loop:
    - mongodb-org-server
    - mongodb-org-mongos
    - mongodb-org-shell
    - mongodb-org-tools
  notify: Restart mongodb

推荐答案

将其放入

Make this into an Ansible Role called mongo, resulting in the directory structure:

playbook.yml
roles
|-- mongo
|  |-- defaults
|  |    |-- main.yml
|  |
|  |-- tasks
|  |    |-- main.yml
|  |
|  |-- handlers
|  |    |-- main.yml

将所需的MongoDB软件包和版本添加到默认变量文件 roles/mongo/defaults/main.yml :

Add the required MongoDB packages and version into the default variables file roles/mongo/defaults/main.yml:

mongo_version: 4.0
mongo_packages:
- mongodb-org-server
- mongodb-org-mongos
- mongodb-org-shell
- mongodb-org-tools

roles/mongo/tasks/main.yml 文件中重新编写任务:

Re-write the task in the roles/mongo/tasks/main.yml file:

- name: Install mongodb
  yum:
    name: "{{ item }}-{{ mongo_version }}"
    state: present
  with_items: "{{ mongo_packages }}"
  notify: Restart mongodb

在文件 roles/mongo/handlers/main.yml 中添加处理程序逻辑以重启MongoDB.

Add your handler logic to restart MongoDB in the file roles/mongo/handlers/main.yml.

写一个名为 playbook.yml 的Playbook来调用角色.

Write a Playbook called playbook.yml that calls the role.

---
- hosts: all
  roles:
  - mongo

这篇关于在Ansible中安装多个软件包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆