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

결국 마지막 두 작업을 처리하는 것이 훨씬 간단합니다.

- 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이 필요하지 않습니다.스크립트기준 치수.

이전에는 플레이북을 점진적으로 실행했기 때문에 이것을 발견하지 못했기 때문에 python"이 모듈을 사용하지 않는 이유는 무엇일까?"라고 생각했을 때 apt패키지는 이미 설치되어 있었습니다.

관련 정보