重构 - 抽出roles

对,下一步并不是庆祝结束了,而是重构代码!其实很多时候,作为一个阅读playbook的”闲人“,你并不是特别关心所有的步骤和属性,你只想知道这个playbook大体上干了什么。而且随着环境/配置的越来越复杂,你不可能把所有的配置内容写在一个文件中。

如果你还记得之前提到过ansible的结构,ansible里有一个使用十分广泛的roles的概念。我们可以把这些步骤根据其目的/场景分成对应的role。

例如,我们可以抽出名为install_toolsgit_clone_fileconfig_apache2的三个role,按照如下的目录结构创建文件:

├── hosts
├── roles
│   ├── config_apache2
│   │   └── tasks
│   │       └── main.yml
│   ├── git_clone_file
│   │   ├── tasks
│   │   │   └── main.yml
│   │   └── vars
│   │       └── main.yml
│   └── install_tools
│       ├── tasks
│       │   └── main.yml
│       └── vars
│           └── main.yml
└── setup_static_page.yml

其中,roles下三个子目录对应三个role,每个role下都有task目录,里面的yml文件为实际的playbook,而vars目录下的main.yml为该role的参数。setup_static_page.yml变成了如下这样:

---
- hosts: static_page
  become: yes
  become_method: sudo

  roles:
    - install_tools
    - git_clone_file
    - config_apache2

这是看它是不是看起来很简单:安装工具,克隆文件,配置apache2,当然这些roles名字可以起的更加写意一点。

results matching ""

    No results matching ""