我需要使用ansible剧本将我的应用程序部署到2个VM。每个VM都有不同的用途,我的应用程序由几个不同的组件组成。因此,每个组件在剧本中都有其自己的任务集。库存文件如下:
[vig]
192.168.10.11
[websvr]
192.168.10.22
现在,ansible剧本只有1个用于主机声明的条目,它位于顶部,并且所有任务都针对指定的主机执行。但是我希望实现的是:
任务1至10:针对vig组执行
任务11至20:针对websvr组执行
全部在同一本剧本中,如:ansible-playbook -i deploy.yml
有可能吗?还是我必须使用角色来实现这一目标?
有人可以建议我吗? merci beaucoup :)
答案 0 :(得分:4)
剧本可以有多个剧本(请参见https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html)。
剧本可以包含多个剧本。您可能有一部剧本 首先定位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