我需要使用 Ansible playbook 将应用程序部署到两个虚拟机。每个虚拟机都有不同的用途,我的应用程序由多个不同的组件组成,因此每个组件在剧本中都有自己的一组任务。
我的库存文件如下所示:
[vig]
192.168.10.11
[websvr]
192.168.10.22
Run Code Online (Sandbox Code Playgroud)
Ansible playbook 只有一个用于声明主机,它位于顶部,所有任务都针对指定主机执行。但我希望达到的目标是:
vig针对组执行任务 1 至 10websvr针对组执行任务 11 至 20全部都在同一个剧本中,如:ansible-playbook -i <inventory file> deploy.yml。
那可能吗?我是否必须使用 Ansible 角色才能实现此目的?
Playbook 可以有多个播放(请参阅https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html)。
Playbook 可以包含多个 Play。您可能有一个首先针对 Web 服务器,然后针对数据库服务器的剧本。例如:
---
- hosts: webservers
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum:
name: httpd
state: latest
- name: write the apache config file
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
- hosts: databases
remote_user: root
tasks:
- name: ensure postgresql is at the latest version
yum:
name: postgresql
state: latest
- name: ensure that postgresql is started
service:
name: postgresql
state: started
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5792 次 |
| 最近记录: |