今日は、Linuxの操作と保守に関連する知識を紹介し続けます。この記事の主な内容は、Ansibleのプレイブックでの変数の定義と使用です。
まず、コマンド入力変数
シンプルで典型的なAnsiblePlaybookプレイブックは次のようになります。
---
- hosts: exp
remote_user: root
tasks:
- name: Install Apache by YUM
yum: name={
{
bl }} state=installed
上記のPlaybookでは、yumモジュールで変数が使用されています。変数が定義されると、2つの中括弧で囲まれ、変数名の両側にスペースがあります。
変数の導入後、AnsibleのPlaybookの柔軟性が大幅に向上し、Playbookの使用に適したものになりました。では、上記の変数にどのように値を割り当てるのですか?まず、AnsibleコマンドラインからPlaybookを呼び出すときに値を割り当てる方法を紹介します。
注文の実行:
ansible-playbook tmp.yml -e "bl=tree"
上記のように、ansible-playbookコマンドを実行するときは、-eパラメーターを使用して変数を割り当てると、ツリーをPlaybookのbl変数に割り当てることができます。上記コマンドの実行結果は以下のとおりです。
2.ホストファイルで変数を定義します
ansible-palybookコマンドを呼び出すときに値を割り当てるAnsibleの機能に加えて、Ansibleはhostsファイルでの変数の定義もサポートしています。指定したモジュールの変数をhostsファイルに設定したり、モジュールごとに異なる変数を設定したりできるため、AnsiblePlaybookの柔軟性がさらに高まります。上記のPlaybookも使用する場合、hostsファイルで次のように変数を定義できます。
[exp]
192.168.136.11
[exp:vars]
bl=tree
このように、上記の変数を設定した後、Playbookを直接実行でき、実行結果は次のようになります。
3.プレイブックファイルで変数を定義します
Ansible hostsファイルで変数を定義することに加えて、プレイブックで変数を定義することもできます。上記のプレイブックは次のように変更できます。
---
- hosts: exp
vars:
bl: tree
remote_user: root
tasks:
- name: Install Apache by YUM
yum: name={
{
bl }} state=installed
上記のプレイブックでは、bl変数が定義されていることがわかります。このように変数を定義するときは、必ずYAML準拠の形式に注意してください。上記のプレイブックが完了すると、実行結果は次のようになります。
第四に、セットアップモジュールは変数を取得します
Ansible Playbookの実行中は毎回、次の図に示すような情報を確認できます。
上記の収集ファクトプロセス中に、Ansibleは制御対象側の情報を収集します。このプロセスでは、Ansibleは端末上の一部の情報を収集します。ローカルに保存され、変数の形式で保存されます。したがって、Ansible Playbookを作成するときは、これらの変数を使用できます。
Ansibleがセットアップを通じて取得する変数は多数あり、次のコマンドを実行できます。
ansible exp -m setup
セットアップモジュールを呼び出して制御対象デバイスの情報を取得すると、結果は次のようになります。
上記の方法を使用して変数を定義する一般的なPlaybookは次のとおりです。
---
- hosts: exp
vars:
bl: tree
remote_user: root
tasks:
- name: Install Apache by YUM
file: name=/root/{
{
ansible_all_ipv4_addresses }} state=touch
上記のプレイブックを実行した後、デバイスのIPアドレスにちなんで名付けられたファイルを制御対象デバイスに作成できます。
5つの独立変数ファイル
上記のメソッドに加えて、Ansibleで最も一般的に使用される変数宣言メソッドの1つは、変数を独立変数ファイルとして格納することです。次の内容で、.ymlで終わる変数ファイルvar.ymlを作成できます。
bl: tree
YAML形式に準拠するために、上記の構成ではコロンの後にスペースが必要であることに注意してください。
Playbookファイルを次のように変更します。
---
- hosts: exp
vars_files:
- ./var.yml
remote_user: root
tasks:
- name: Install Apache by YUM
yum: name={
{
bl }} state=installed
上記の構成では、vars_filesを参照して変数を定義したvar.ymlファイルに変数を導入しました。上記のプレイブックの実行結果は次のとおりです。
変数ファイルによる変数定義も成功していることがわかります。
独創性は簡単ではありません。転載のソースを示してください:https://blog.csdn.net/weixin_40228200