我正在更新我的一些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.