如何使用 Ansible 安装软件( 三 )


一旦你在 /etc/ansible/hosts 文件中输入了主机名或 IP 地址后 , 你就可以在剧本中更改 hosts 定义:
---- hosts: alltasks:- name: install packagesbecome: truebecome_user: rootdnf:state: presentname:- tcsh- htop再次运行 ansible-playbook:
$ ansible-playbook --ask-become-pass ~/install_packages/site.yml这次 , 剧本会在你的远程系统上运行 。
如果你添加更多主机 , 则有许多方法可以过滤哪个主机执行哪个任务 。 例如 , 你可以创建主机组(服务器的 webserves , 台式机的 workstations等) 。
适用于混合环境的 Ansible到目前为止 , 我们一直假定 Ansible 配置的所有主机都运行相同的操作系统(都是是使用 dnf 命令进行程序包管理的操作系统) 。 那么 , 如果你要管理不同发行版的主机 , 例如 Ubuntu(使用 apt)或 Arch(使用 pacman) , 或者其它的操作系统时 , 该怎么办?
只要目标操作系统具有程序包管理器( MacOs 有 Homebrew,Windows 有 Chocolatey ) , Ansible 就能派上用场 。
这就是 Ansible 优势最明显的地方 。 在 shell 脚本中 , 你必须检查目标主机上有哪些可用的包管理器 , 即使使用纯 Python , 也必须检查操作系统 。 Ansible 不仅内置了这些功能 , 而且还具有在剧本中使用命令结果的机制 。 你可以使用 action 关键字来执行由 Ansible 事实收集子系统提供的变量定义的任务 , 而不是使用 dnf 模块 。
---- hosts: alltasks:- name: install packagesbecome: truebecome_user: rootaction: >{{ ansible_pkg_mgr }} name=htop,transmission state=present update_cache=yesaction 关键字会加载目标插件 。 在本例中 , 它使用了 ansible_pkg_mgr 变量 , 该变量由 Ansible 在初始 收集信息 期间填充 。 你不需要告诉 Ansible 收集有关其运行操作系统的事实 , 所以很容易忽略这一点 , 但是当你运行一个剧本时 , 你会在默认输出中看到它:
TASK [Gathering Facts] *****************************************ok: [localhost]action 插件使用来自这个探针的信息 , 使用相关的包管理器命令填充 ansible_pkg_mgr , 以安装在 name 参数之后列出的程序包 。 使用 8 行代码 , 你可以克服在其它脚本选项中很少允许的复杂跨平台难题 。
使用 Ansible现在是 21 世纪 , 我们都希望我们的计算机设备能够互联并且相对一致 。 无论你维护的是两台还是 200 台计算机 , 你都不必一次又一次地执行相同的维护任务 。 使用 Ansible 来同步生活中的计算机设备 , 看看 Ansible 还能为你做些什么 。
via: opensource.com
作者: Seth Kenlon 选题: lujun9972 译者: MjSeven 校对: wxy
【如何使用 Ansible 安装软件】本文由 LCTT 原创编译 ,Linux中国 荣誉推出
点击“了解更多”可访问文内链接


推荐阅读