yum – 基于事实的参数化ansible命令,怎么做?

我正在更新我的一些ansible playbooks以运行最新版本的Fedora,现在认使用dnf.

由于我的大部分剧本也应该在CentOS上运行,我希望我的脚本在运行CentOS机器时运行ansible yum命令,并在针对Fedora运行时运行dnf命令(Ansible 1.9中的新命令),但使用其余部分当前的角色.

换句话说,我想编写一个可以智能选择righ命令的操作(类似于):

- name: Install zsh
  sudo: yes
  yum|dnf: name=zsh state=latest

…而不是复制粘贴相同的命令两次,在两个中的一个中用dnf替换yum,然后实现一些逻辑,说明要运行两个不同的角色之一:

- name: Install zsh (yum version)
  sudo: yes
  yum: name=zsh state=latest

- name: Install zsh (dnf version)
  sudo: yes
  dnf: name=zsh state=latest

在有人赶到它之前:我知道yum在最新的Fedora中使用dnf的别名,并且我可以直接离开剧本……我的问题不是关于编写CentOS / Fedora兼容的剧本,我的问题是关于根据目标环境为相同参数选择不同的命令

Ansible 2现在有一个通用包管理器:

http://docs.ansible.com/ansible/package_module.html

对于旧版本,您可以通过事实关联包管理器

- name: Install packages
  with_items: package_list
  action: "{{ ansible_pkg_mgr }} state=installed name={{ item }}"

现在你需要的是一些逻辑,它将ansible_pkg_mgr设置为apt或yum等,并且当逻辑消失时.

看起来像Ansible are also working on doing what you want in a future module.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...