変数を使用してansibleで、私たちはより柔軟に作業できるよう、ansibleで、変数を使用する多くの方法がありますが、私たちはおしゃべり。
私たちは、変数を定義する方法についてお話しましょう、変数名が文字で構成する必要があり、数字、アンダースコア、必要な文字で始まる変数名は、ansibleビルトインキーワードは、変数名として使用することはできません。
以前の記事は、サンプルスクリプトを経由しているとして、それでは脚本で変数を使用する方法について話しましょう。
私たちは、劇中の変数を定義したい場合は、例えば、使用VARSキーワードを行うことができます。
--- -ホスト:192.168.10.2 VARS: testvar1:テストファイル REMOTE_USER:ルート タスク: -名前:TASK1 ファイル: パス:/テスト/ {{testvar1}} 状態:タッチ
上記の例では、最初の使用は、劇中の変数の現在のセットで表現に関連するキーワードをvarsの。
キーワードレベルがtestvar1と呼ばれる変数、テストファイルの変数値を定義しvarsの下で
あなたは「{{}}変数名を使用して、見ることができるように、我々はtestvar1値を使用する必要がある変数は、あなたは、この変数を参照する必要があります「私は、対応する変数を参照することができます。
次のように複数の変数を定義することができます。
VARS: testvar1:testfile1 testvar2:testfile2
次のようにブロック配列はまた、YAML構文定義された変数を使用することができます。
VARS: - testvar1:testfile1 - testvar2:testfile2
変数の定義は、それは例えば、変数を定義する同様の「プロパティ」で可能です:
--- -ホスト:192.168.10.3 REMOTE_USER:ルート VARS: nginxの: conf80:/etc/nginx/conf.d/80.conf conf8080:/etc/nginx/conf.d/8080.confの タスク: -名前:タスク1 ファイル: パス: "{{nginx.conf80}}" 状態:タッチ -名前:タスク2 ファイル: パス: "{{nginx.conf8080}}" 状態:タッチ
図示のように、私は2つの変数の値は、2つのnginxのプロファイルパスに対応する、2つの変数を定義します。
VARS: nginxの: conf80:/etc/nginx/conf.d/80.conf conf8080:/etc/nginx/conf.d/8080.conf
我々はこれらの2つの変数を呼び出す必要がある場合には、使用可能な2つの構文は次のように示し、があります。
構文: "{{nginx.conf80}}" 構文2: "{{nginxの[ 'conf80 ']}}"
実施形態では、私は引用符を倍増変数、および参照変数を参照するとき、彼はここ最初の例では、二重引用符がありませんでした、これは、変数が参照されたときに最初の例では、ためではなく、で、次のように変数が参照される最初の例「開始位置に」:
パス:/ TESTDIR / {{}} testvar1
ファイルパスパラメータ参照変数は、モジュールに対応する場合、最初に書き込ま「/ TESTDIR /」の前に引用された「testvar1」変数、{{testvar1}}としない「開始位置で」で、換言すれば、まだ先に文字列「/ TESTDIR /」の{{testvar1}}
次の変数がで参照される上記後述の実施例における参照変数、「開始位置」。
パス: "{{nginx.conf80}}"
この場合、我々はそれ以外の場合は、構文エラーを報告します、変数を参照するときに、変数が参照されている二重引用符を使用する必要があります。</
実際には、上記の例外がある
ハンドブックに割り当てられたパラメータモジュールが「コロン」を使用することができる場合について説明したが、上記は、「等しい」、使用する場合、「等しい」パラメータモジュールの割り当てを使用することができ、 、その後に関係なく例えば「引用符」参照変数のか使用:
--- -ホスト:192.168.10.3 REMOTE_USER:ルート VARS: nginxの: conf80:/etc/nginx/conf.d/80.conf conf8080:/etc/nginx/conf.d/8080.confの タスク: -名前:タスク1 ファイル: パス= {{nginx.conf80}} 状態=タッチ -名前:タスク2 ファイル: パス= {{nginxの[ 'conf8080']}} 状態=タッチパネル
直接脚本で変数を定義するために加えて、我々はまた、ファイル内の変数を定義することができますし、ファイルの導入中と後に脚本の対応するファイルに導入され、脚本
なぜ、あなたはファイルで定義された変数を使用することができ、あなたが頼むかもしれませんそれを気にしますか?いくつかのシーンでそうするので、これは仕事は他の誰かが脚本を読みながらので、たとえば、あなただけの、特定の値を見て他の人を望んでいない、他の人があなたの脚本を読み聞かせして、あなたは、このアプローチを使用することができますしたい、便利ですもに、変数名の紹介を見るために、いくつかの値を非表示にする機能に加えて、「変数文書の分離」と呼ばれる実際にはファイルを、「変数文書の分離」に、変数のこの分離に対応する変数の値を見ることができませんもし別のファイル内の情報のさまざまな種類作り、スクリプトの本体とは別に、この情報を行います。
さんは、「変数ドキュメント分離」いくつかの小さな例を見てみましょう
、VARSキーワードを使用しない、ファイル内の変数の定義、のは、nginxの(nginx_vars.ymlという名前のファイル)に関連するドキュメントを格納するために使用される特殊な変数を定義してみましょう、まず第一に変数は、直接同じ脚本変数で定義されたいくつかの変数の文法や構文定義を定義することができます。
例構文:
testvar1:Testfile1の testvar2:Testfile2 構文二つの例: - Testfile1:Testfile1 - Testfile2:Testfile2 構文三つの例: nginxの: conf80:/etc/nginx/conf.d/80.conf conf8080:の/ etc / nginxの/ CONF .D / 8080.conf
あなたは、以下に示すように、あなたは、変数を定義するためのより快適な構文を感じるものを選ぶことができ、nginx_vars.ymlファイルに直接変数を定義することができます:
[ルート@ ansible-制御脚本]#猫nginx_vars.yml nginxの: conf80:/etc/nginx/conf.d/80.conf conf8080:/etc/nginx/conf.d/8080.conf
nginx_vars.yml中関連する変数の定義が完了した後、ファイルは脚本の変数に導入することができ、脚本の中の変数を含むファイルの導入、あなたが「vars_files」キーワードを使用する必要があり、ファイルを導入する必要がある - 「」で始まります、文法YAMLは、ブロックは、次の例の配列に導入しました:
--- -ホスト:192.168.10.3 REMOTE_USER:ルート vars_files: - /playbook/nginx_vars.yml ###变量文件的路径 タスク: -名前:TASK1 ファイル: パス= {{nginx.conf80}} 状態=タッチ -名前:タスク2 ファイル: パス= {{nginxの[ 'conf8080']}} 状態=タッチパネル
例で使用されるキーワードは、変数対応するファイルを紹介し、そのファイルで定義された変数を使用する「vars_files」。
例では、キーワードが唯一の変数ファイルを紹介する「vars_files」変数複数のファイルの中にも導入することができる、各ファイルはに導入する必要があります「 - 」冒頭で、例えば:
vars_files: - /playbook/nginx_vars.yml - /playbook/other_vars.yml
「バール」とキーワードは次のようにキーを、同時に使用することができる「vars_files」:
そのうち: - conf90:/etc/nginx/conf.d/90.confは vars_files: - /playbook/nginx_vars.yml