按照最佳实践为角色创建目录
关于Ansible最佳实践的内容
由于Ansible文档中记录了Ansible的最佳实践,建议您阅读一下。
在创建播放手册时,建议按照Directory Layout中指定的目录结构进行分割和布置,这样做似乎是很好的选择。
2014-06-11补充说明
我之前一直以为需要遵循这个文件夹的布局,但根据Directory Layout上的描述,其实并不必要。可以根据需求自由地创建你喜欢的文件夹布局。
创建一个能够生成role目录结构的playbook。
我写了一个playbook来创建这样的目录树结构。
# ansible-directories.yml
# Create directories for ansible playbooks.
#
# Example Usage:
# Create a single role.
# $ ansible-playbook --extra-vars 'roles=some-role' ansible-directories.yml
# or
# Create multiple roles.
# $ ansible-playbook \
# --extra-vars '{"roles":["common", "webservers", "dbservers"]}' \
# ansible-directories.yml
- hosts: localhost
gather_facts: no
connection: local
vars:
roles:
- common
tasks:
- name: create vars directories
file: path={{ item }} state=directory
with_items:
- group_vars
- host_vars
- name: create role directories
file: path=roles/{{ item[0] }}/{{ item[1] }} state=directory
with_nested:
- roles
- [ 'tasks', 'handlers', 'templates', 'files', 'vars', 'meta' ]
使用方法
假设我们需要为一个名为”some-role”的角色创建一个目录。
ansible-playbook --extra-vars 'roles=some-role' ansible-directories.yml
如果要为常见的网络服务器、数据库服务器等多个角色创建目录时
ansible-playbook \
--extra-vars '{"roles":["common", "webservers", "dbservers"]}' \
ansible-directories.yml
在命令行中传递变量有关的信息,有关于–extra-vars的说明。可以使用JSON或YAML指定变量。