重构 - 抽出roles
对,下一步并不是庆祝结束了,而是重构代码!其实很多时候,作为一个阅读playbook的”闲人“,你并不是特别关心所有的步骤和属性,你只想知道这个playbook大体上干了什么。而且随着环境/配置的越来越复杂,你不可能把所有的配置内容写在一个文件中。
如果你还记得之前提到过ansible的结构,ansible里有一个使用十分广泛的roles的概念。我们可以把这些步骤根据其目的/场景分成对应的role。
例如,我们可以抽出名为install_tools、git_clone_file、config_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名字可以起的更加写意一点。