ファイルの配置場所 = ディレクトリレイアウト

2019/03/02

Ansible

 ファイルの配置場所

 Ansible Documentation の Best Practices 内に playbook ファイルや inventory ファイルなどのファイルの配置場所 = ディレクトリレイアウトが 2 種類例示されています。違いは inventory ファイルの扱いです。1 つは inventory ファイルを本番環境用( production )とステージング環境用( staging )に分けています。inventory ファイル内で使用する変数( group_vars , host_vars )などは共通になっています。
production                # inventory file for production servers
staging                   # inventory file for staging environment
group_vars/
   group1.yml             # here we assign variables to particular groups
   group2.yml
host_vars/
   hostname1.yml          # here we assign variables to particular systems
   hostname2.yml
library/                  # if any custom modules, put them here (optional)
module_utils/             # if any custom module_utils to support modules, put them here (optional)
filter_plugins/           # if any custom filter plugins, put them here (optional)
site.yml                  # master playbook
webservers.yml            # playbook for webserver tier
dbservers.yml             # playbook for dbserver tier
roles/
    common/               # this hierarchy represents a "role"
        tasks/            #
            main.yml      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # roles can also include custom modules
        module_utils/     # roles can also include custom module_utils
        lookup_plugins/   # or other types of plugins, like lookup in this case
    webtier/              # same kind of structure as "common" was above, done for the webtier role
    monitoring/           # ""
    fooapp/               # ""

もう 1 つも inventory ファイルを本番環境用とステージング環境用に分けているのは同じです。違いは inventory ファイル( hosts )と変数( group_vars , host_vars )を inventories ディレクトリ内に本番環境用とステージング環境用に分けて定義しています。
inventories/
   production/
      hosts               # inventory file for production servers
      group_vars/
         group1.yml       # here we assign variables to particular groups
         group2.yml
      host_vars/
         hostname1.yml    # here we assign variables to particular systems
         hostname2.yml
   staging/
      hosts               # inventory file for staging environment
      group_vars/
         group1.yml       # here we assign variables to particular groups
         group2.yml
      host_vars/
         stagehost1.yml   # here we assign variables to particular systems
         stagehost2.yml
library/
module_utils/
filter_plugins/
site.yml
webservers.yml
dbservers.yml
roles/
    common/
    webtier/
    monitoring/
    fooapp/

どちらが優れているというのものではないので、自分が使いやすい、または環境にあわせて選択したら良いと思います。 Google で "ansible best practices" をキーワードに検索すると、いろいろな best practices が見つかります。それらを参考にするのも良いでしょう。

カテゴリー

目次

QooQ