Ansible 文書の例の説明が必要です。

Ansible 文書の例の説明が必要です。

これlxd_container基準寸法Ansible 2.5 には次の例が含まれています。

# An example for creating a Ubuntu container and install python
- hosts: localhost
  connection: local
  tasks:
    - name: Create a started container
      lxd_container:
        name: mycontainer
        state: started
        source:
          type: image
          mode: pull
          server: https://images.linuxcontainers.org
          protocol: lxd
          alias: ubuntu/xenial/amd64
        profiles: ["default"]
        wait_for_ipv4_addresses: true
        timeout: 600

    - name: check python is installed in container
      delegate_to: mycontainer
      raw: dpkg -s python
      register: python_install_check
      failed_when: python_install_check.rc not in [0, 1]
      changed_when: false

    - name: install python in container
      delegate_to: mycontainer
      raw: apt-get install -y python
      when: python_install_check.rc == 1

この例を使用する理由を説明できる人はいますか?raw基準寸法代わりにapt基準寸法

これがここで使用される内部知識の一種ですか? (早いですか?)forまたは他のものをansible_connection=lxd使用してAnsibleのパフォーマンスを最適化しますか?ansible_connection=sshmycontainer

最後に、最後の2つのタスクを処理する方がはるかに簡単です。

- name: install python in container
  delegate_to: mycontainer
  apt: pkg=python state=latest

...もちろん、適切なキャッシュなどを更新するオプションもあります。

それでは、rawここでこのモジュールを使用するのはなぜですか?

注:私がこれを尋ねる理由は、文書が通常作業を実行する標準的な方法を示しているからです。しかし、私が理解したように、正式にはapt呼び出しshellやコマンドの代わりに特定のモジュールを使用する必要がありますraw

ベストアンサー1

同時にその理由も見つけました。

だからAnsibleは通常特定のホスト用に設定された接続方法を使用して、リモートシステムで実行するPython(2.x)スクリプトを生成します。

残念ながら、このモジュールの前提条件はPythonですapt。モジュールにはこれらの制限はないように見えるため、リモートシステムから直接およびコマンドをraw使用して(リモート)ホストでAnsible操作を実行するために必要な前提条件をインストールするために使用できます。しかし、モジュールには同じ制限がありますが、モジュールにはありません。しかし、ドキュメントでこれがより明確に言及されていることを願っています。dpkgapt-getshellraw

この場合、結果辞書には次module_stderrの名前のキーが含まれますmodule_stderr": "/bin/sh: 1: /usr/bin/python: not found\n。呼び出し時に詳細情報を増やして表示するようにしますansible-playbook

今何が起こっているのか分かったので、rawモジュール文書の次の文がより意味があります。

このモジュールはリモートシステムにPythonを必要としません。スクリプト基準寸法。

以前はPlaybookを徐々に実行していたため、これが見つからなかったため、python「このモジュールを使用しない理由は何ですか?」と考えたとき、aptパッケージはすでにインストールされていました。

おすすめ記事