我有 4 台服务器:生产网络
、生产数据库
、登台网络+数据库
、开发网络+数据库
> (实际上有很多开发服务器,但它们是使用 vagrant
在本地主机上使用的)。
这些剧本的配置变量不同。
实际上我可以使用4个playbook,其中包括其他yml文件(nginx.yml
、php.yml
、mysql.yml
),而且我不必使用角色。
正确吗?
我应该如何组织我的 ansible 文件?
最佳答案
Ansible 足够灵活,可以以任何方式工作。 您可以采用两种方法进行
- 定义角色(即生产网络、生产数据库、登台网络+数据库、开发网络+数据库),并且角色下有任务(nginx、php、mysql)
- 将每个模块定义为角色(即 nginx 角色、php 角色、mysql 角色),然后指定哪些角色包含在哪个 playbook 中。
对于每个环境的每个 php 设置都不同的情况,第一种方法更好。 对于所有 php 设置都相同的情况,第二种方法更好,并且维护 4 个类似的设置/配置会很麻烦;您只需编写一次它们,然后通过它们的局部变量调用它们。
第二个示例
./ansible-playbook roles/role1/tasks/production-web.yml -i hosts.yml
- name: playbook name
hosts: host1
sudo: yes
vars:
- php_version: 5.6.16
vars_files:
- "vars/local_vars"
pre_tasks:
- include: system-preparation.yml
- include: user-setup.yml
tasks:
- debug: msg="Installing and configuring PHP"
- include: php-setup.yml
- include: php-configuration.yml
post_tasks:
- include: health-check.yml
handlers:
关于Ansible:剧本和角色差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34074283/