如何编写 Ansible Playbook 在 Ubuntu 20.04 上的不同主机上安装不同的应用程序条件
- 运行剧本时,它应该询问主机名(我们必须提供具体的主机名)
对于所有的包裹,我们必须给出像 1、2、3 这样的数字......
给出主机名后,它应该要求提供软件包编号,那时我们应该给出该编号,特定的软件包应该安装在特定的主机上
答案1
我会组织我的 Ansible 存储库,为每个软件设置单独的角色,然后使用模块ansible_hostname
事实gather_facts
作为条件为特定主机安装软件。我会采用如下文件夹结构:
└── ansible_repo
├── roles
│ ├── vim
│ │ └── tasks
│ │ └── main.yml
│ ├── tmux
│ │ └── tasks
│ │ └── main.yml
│ └── vlc
│ └── tasks
│ └── main.yml
├── inventory
└── playbook.yml
遗嘱内容playbook.yml
大致如下:
# playbook.yml
- hosts: all
become: true
# run roles
- hosts: all
roles:
- vim
- tmux
- vlc
每个任务里面main.yml
都会遵循这个模板(使用 vim):
---
# tasks file for vim
- name: Install vim
apt:
name:
- vim
when gather_facts.ansible_hostname = "host1" or "host3"
inventory
您也可以将主机名存储在文件中。
虽然这种方法可行,但我认为这不是最佳做法。更好的方法是根据主机所需的软件包对其进行分组,然后为该组使用特定角色。