Ansible:剧本和角色差异

标签 ansible devops

我有 4 台服务器:生产网络生产数据库登台网络+数据库开发网络+数据库 > (实际上有很多开发服务器,但它们是使用 vagrant 在本地主机上使用的)。
这些剧本的配置变量不同。

实际上我可以使用4个playbook,其中包括其他yml文件(nginx.ymlphp.ymlmysql.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/

相关文章:

Azure Web 应用程序在 docker-compose 中使用 WEBAPP_STORAGE_HOME 变量

continuous-integration - Bamboo Java 规范、单个管道存储库和多个项目

ruby-on-rails - 无法使用NodePort服务连接到Kubernetes中的Redis Pod

ubuntu - 可靠的 : How to handle first login forced password change and push an ssh-key

jenkins - 将推式触发器和夜间构建结合在一起有意义吗?

docker - Minikube 挂载的主机文件夹不起作用

json - Ansible 循环 URI 调用的 JSON 输出

kubernetes - 无法从 ansible 运行 kubectl

python - 使用方法失败; 'module' 对象没有属性 'dumps'

ansible - 以最有效的方式删除多个文件(ansible)