按照最佳实践为角色创建目录

关于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指定变量。

广告
将在 10 秒后关闭
bannerAds