ansibleのべき乗等性


1、ansibleのべき乗等性
ansibleのほとんどのモジュールはべき乗などの特性を有し、実行が順次または複数回行われても副作用が生じないことを意味する.ただしshell、command、script、rawの4つのモジュールはべき乗等性を満たさず、すべての操作が繰り返し実行されますが、MySQLの初期化コマンドmysql_install_dbは、論理的には、最初の構成の過程でシーケンスを初期化するだけで、他のいつでも実行すべきではありません.すべて、この4つのモジュールを使用するたびに、このコマンドを繰り返し実行しても負の影響を及ぼすかどうかを考えてみましょう.
もちろん、上記の4つのモジュールでは、rawモジュールのほかに、createsとremovesのようなべき乗などの特性を実現するパラメータが提供されています.
  • createsパラメータ:指定したファイルまたはディレクトリが存在する場合、コマンドは実行されません.
  • removesパラメータ:指定したファイルまたはディレクトリが存在しない場合、コマンドは実行されません.

  • 例は次のとおりです.
    ---
    - name: use some module
      hosts: node
      gather_facts: false
      tasks:
      #               
      - name: use command module
        command: ifup ens33
        args:
          removes: /etc/sysconfig/network-scripts/ifcfg-ens33
    
      # mysql            ,    
      - name: use shell module
        shell: cp /tmp/my.cnf /etc/my.cnf
        args:
          creates: /etc/my.cnf
    

    テストによりremovesまたはcreatesパラメータを使用すると、べき乗等性が実現され、コマンドが繰り返し実行されないことが証明されました.
    この4つのモジュールは、shellコマンドまたはshellスクリプトの実行に限定されません.executableパラメータを使用して、expec実行expectスクリプト、perl解釈器実行perlスクリプトなどの他の解釈器を指定できます.次のようになります.
    [root@ansible ansible]# cat test.yaml 
    ---
    - name: RUN a perl script
      script: /some/local/script.pl
      args:
        executable: perl