Ansible使用される変数の自動運転・保守

1、脚本変数

ansible使用変数は、私たちはより柔軟に動作できるようにします

変数の定義

変数名ansibleが内蔵されたキーワード、変数名は文字で開始する必要があり、文字、数字、アンダースコア、で構成されるべきは、変数名の使用として使用することはできません

2、脚本変数の定義

キーワードを使用すると、変数は、我々は変数を使用するように、現在の脚本で定義することができvarsの際には、対応する変数を参照することができ、対応する変数名、使用{{名前}}変数を参照する必要があります。

変数の単純な定義

- hosts: all
  vars:     #定义变量
    file_name: jsn_yaml_vars    #变量名(随意):file_name,变量的内容:jsn_yaml_vars
  tasks:    #{{ file_name }}引用上面定义的变量
  - name: 应用变量名:file_name
    file: path=/tmp/{{ file_name }} state=touch

複数の変数を定義します。

- hosts: all
  vars:   
    t1: v1
    t2: v2

上記の文法に加えて、構文配列はまた、カスタム変数スピードYAMLすることができ

- hosts: all
  vars:   
    - t1: v1
    - t2: v2

変数を定義する場合、それはまた、変数を定義し、「プロパティ」に類似してもよいです

- hosts: 10.4.7.7
  vars:
    nginx:
      proxy_1: /etc/nginx/conf.d/nginx_1.proxy
      proxy_2: /etc/nginx/conf.d/nginx_2.proxy
  tasks:
  - name: task1
    file:
      path: "{{ nginx.proxy_1 }}"
      state: touch
  - name: task1
    file:
      path: "{{ nginx['proxy_2'] }}" # 第二种引用变量.属性的方法
      state: touch

ノード:私たちは、変数の使用中に二重引用符を使用しますが、ほとんどの初めに例では、変数を参照するとき、それはの初めに変数が参照されている最初のインスタンスであり、ではないので、二重引用符を使用していないことに注意してください位置はpath=/tmp/{{ file_name }}、その二重引用符には必要ありませんが、path: "{{ nginx.proxy_1 }}"可変位置の初めに、あなたは二重引用符に必要

指定したファイルに書き込まれ、その後、脚本の中で参照変数を定義

変数を定義し、nginx_vars.yamlファイルを作成します。1.

nginx:
  proxy_1: /etc/nginx/conf.d/nginx_1.proxy
  proxy_2: /etc/nginx/conf.d/nginx_2.proxy

2.ファイルに定義された変数nginx_vars.yaml後、ファイルがハンドブックに含まれる変数に導入することができます

- hosts: 10.4.7.7
  vars_files:
    - ~/nginx_vars.yaml
  tasks:
  - name: task1
    file:
      path: "{{ nginx.proxy_1 }}"
      state: touch
  - name: task1
    file:
      path: "{{ nginx['proxy_2'] }}" 
      state: touch

この実施例で使用しvars_filesたキーワード、変数のファイルに対応し導入し、ファイル内の変数を使用している、ファイルのキーワードは、変数を導入することができ、変数複数のファイルの中に導入することができる、それぞれのファイルを導入する必要があります-最初に、varsそしてvars_files同時に使用

場合ハンドブック参照変数、指定された変数割り当ての実行

YAMLの作成1.

- hosts: all
  tasks:
  - name: Create New File
    file: path=/tmp/{{ file_name }} state=touch

ときのパラメータ2.playbook実行--extra-vars変数への代入指定

$ ansible-playbook f1.yaml --extra-vars "file_name=jsn_extra-vars"

3、脚本変数登録

キーワードが適切な応答処理を作る方法を、私たちはアクションやコマンドの実装を判断する必要があることの偉大な使用があったにカスタムにコマンド変数の指定された出力に保存することができます登録また、それを使用し、(他のansibleステートメントを実行します)。

シンプルで実用的な登録

1. f1.yaml次のようにドキュメントを読み込みます

- hosts: 10.4.7.7
  tasks:
    - name: register vars
      shell: hostname
      register: System_Status
    - name: display vars
      debug: msg={{ System_Status.stdout }}

脚本を実行します2.

[root@m01 ~]#  ansible-playbook f1.yaml

PLAY [10.4.7.7] ****************************************************************

TASK [Gathering Facts] *********************************************************
ok: [10.4.7.7]

TASK [register vars] ***********************************************************
changed: [10.4.7.7]

TASK [display vars] ************************************************************
ok: [10.4.7.7] => {
    "msg": "web01"
}

PLAY RECAP *********************************************************************
10.4.7.7                   : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • データを取得するための最初の実装後のシェル、使用レジスタSystem_Status
  • System_Statusこれは、キー/値の辞書です
  • デバッグ出力System_Status.stdout的の特定のコンテンツ

製造例を登録

実行可能ファイルのコピーが存在する場合sda1を、私は、そこにあるかどうかを判断する必要があります

- hosts: 10.4.7.7
  tasks:
    - name:  Create a register to represent the status if the /dev/sda1 exsited
      shell: df -h  | grep sda1
      register: dev_sda1_result
      ignore_errors: True
      
    - name: Copy test.sh to all hosts
      copy: src=/root/test.sh dest=/tmp/test.sh mode=755
      when: dev_sda1_result.rc == 0 

ときにdf -h | grep sda1実行は、うdev_sda1_result結果を書き、その後、dev_sda1_result.rc 失敗した場合には、RCゼロでない、状態のコマンドで返され、ignore_errorsあること、キーワードをTrueに設定する必要があります、またはコマンドが成功しなかった場合echo $?、その後、0ではありませんステートメントを次ansible文は中止するプログラムを引き起こして、実行されません。

マルチ条件付きレジスタ

その後whenand、またはor組み合わせて判断。例えば、成功のための2つの条件の1:

    - name: Copy test.sh to all hosts
      copy: src=/root/test.sh dest=/tmp/test.sh mode=755
      when: ( dev_sda1_result.rc == 0 ) or ( dev_sda2_result.rc == 0  )

おすすめ

転載: www.cnblogs.com/jasonminghao/p/12640162.html