vars、defaults、またはtasksディレクトリで変数と定数を定義するためのAnsibleポリシーとは何ですか?


0

これを含む複数のドキュメントを読んで、GitHubで複数のansibleロールをチェックしましたが、変数を定義するタイミングと、変数を配置する場所(つまりdefaultstasksまたはvarsディレクトリ)を定義するタイミングがわかりません。

変数が必要かどうか、それがどこに置くべきかを考えるのに多くの時間を費やす必要がないように、ガイドラインを受け取りたいと思います。

デフォルト

sensu_host: localhost
sensu_home: /etc/sensu
sensu_conf_d: "{{ sensu_home }}/conf.d"

タスク

- name: be sure {{ item }} is installed
  apt:
    name: "{{ item }}"
    state: latest
  with_items:
    - build-essential
    - ntp

または、項目を変数で定義する必要があります。

- name: be sure {{ item }} is installed
  apt:
    name: "{{ item }}"
    state: latest
  with_items:
    {{ packages }}

vars

__sensu_repo_url: deb http://sensu.global.ssl.fastly.net/apt sensu main
__sensu_repo_key_url: http://sensu.global.ssl.fastly.net/apt/pubkey.gp

特定のチェックリストはありますか、例えば

a、b、cの場合、変数はデフォルトで宣言する必要があります

d、e、fの場合、v

g、h、iの場合、タスクで定義します

╔═══════════╦═════════════════╗
║ directory ║ characteristics ║
╠═══════════╬═════════════════╣
║ defaults  ║ constants, e.g. ║
║ tasks     ║ bla, e.g.       ║
║ vars      ║ variables       ║
╚═══════════╩═════════════════╝

@techraf質問が更新されました。パッケージを変数として定義するのではなく、タスクに入れる例です
-030

あなたは2つのことを混ぜていると思います。を使用して、タスクで変数を定義できますset_fact。さて、すでに広範に渡る質問「変数はどこで定義されるべきですか?」「変数を使用する必要がありますか?」Ansibleは、協調的でオープンな、弾力性のあるプロジェクトです。変数を定義するための16の場所が時間とともに進化したという事実は、さまざまなユーザーとさまざまなアプローチのニーズのためです。解決したい問題に応じて、さまざまなツールを使用して「唯一の方法」はありません。
テクラフ

回答:


0

varsおよびdefaultsディレクトリに変数と定数を定義するポリシーはありません。

role/defaultsディレクトリ内の変数の優先度は最低です。そのため、ロールで定義されたすべての変数role/defaults/main.ymlを参照用に入れることは理にかなっています。変数のデフォルト値が分布に依存する場合、以下のvars/{{ ansible_os_family }}.ymlようにそれを入れて含めます:

# Variable setup.
- name: Include OS-specific variables.
  include_vars: "{{ ansible_os_family }}.yml"

また、URLのような定数のような変数も配置しますvars

ただし、実際のポリシーはありません。それはあなた次第です。私は、geerlingguyによってロール構造とプレイブックスタイルを個人的に調整しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.