Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python

Ansible 2.5 trở lên hoạt động với Python 3. Trước đó là 2.5, sử dụng Python 3 được coi là một bản xem trước công nghệ. Chủ đề này thảo luận về cách thiết lập bộ điều khiển và máy được quản lý của bạn để sử dụng Python 3.

Ghi chú

Trên bộ điều khiển, chúng tôi hỗ trợ Python 3.5 trở lên và Python 2.7 trở lên. Phía mô-đun, chúng tôi hỗ trợ Python 3.5 trở lên và Python 2.6 trở lên.

Ở phía bộ điều khiển

Cách dễ nhất để chạy/usr/bin/ansible theo Python 3 là cài đặt nó với phiên bản PIP Python3 của PIP. Điều này sẽ làm cho chạy mặc định/usr/bin/ansible với python3:/usr/bin/ansible under Python 3 is to install it with the Python3 version of pip. This will make the default /usr/bin/ansible run with Python3:

$ pip3 install ansible
$ ansible --version | grep "python version"
  python version = 3.6.2 (default, Sep 22 2017, 08:28:09) [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)]

Nếu bạn đang chạy ansible chạy nhánh phát triển từ bản sao và muốn sử dụng Python 3 với việc thanh toán nguồn của bạn, hãy chạy lệnh của bạn qua python3. Ví dụ:Running the devel branch from a clone and want to use Python 3 with your source checkout, run your command via python3. For example:

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml

Ghi chú

Trên bộ điều khiển, chúng tôi hỗ trợ Python 3.5 trở lên và Python 2.7 trở lên. Phía mô-đun, chúng tôi hỗ trợ Python 3.5 trở lên và Python 2.6 trở lên.

Ở phía bộ điều khiển

  • Cách dễ nhất để chạy/usr/bin/ansible theo Python 3 là cài đặt nó với phiên bản PIP Python3 của PIP. Điều này sẽ làm cho chạy mặc định/usr/bin/ansible với python3:/usr/bin/python3. The default interpreter path may also be set in

    $ source ./hacking/env-setup
    $ python3 $(which ansible) localhost -m ping
    $ python3 $(which ansible-playbook) sample-playbook.yml
    
    1.

# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3

  • Nếu bạn đang chạy ansible chạy nhánh phát triển từ bản sao và muốn sử dụng Python 3 với việc thanh toán nguồn của bạn, hãy chạy lệnh của bạn qua python3. Ví dụ:

$ ansible localhost-py3 -m ping
$ ansible-playbook sample-playbook.yml

Các gói phân phối Linux cá nhân có thể được đóng gói cho Python2 hoặc Python3. Khi chạy từ các gói phân phối, bạn sẽ chỉ có thể sử dụng Ansible với phiên bản Python mà nó đã được cài đặt. Đôi khi các bản phân phối sẽ cung cấp một phương tiện cài đặt cho một số phiên bản Python (thông qua một gói riêng biệt hoặc thông qua một số lệnh được chạy sau khi cài đặt). Bạn cần phải kiểm tra với bản phân phối của mình để xem điều đó có áp dụng trong trường hợp của bạn không.

$ ansible localhost -m ping -e 'ansible_python_interpreter=/usr/bin/python3'
$ ansible-playbook sample-playbook.yml -e 'ansible_python_interpreter=/usr/bin/python3'

Sử dụng Python 3 trên các máy được quản lý với các lệnh và playbooks

Ansible sẽ tự động phát hiện và sử dụng Python 3 trên nhiều nền tảng vận chuyển với nó. Để cấu hình rõ ràng trình thông dịch Python 3, hãy đặt biến hàng tồn kho

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
0 ở cấp độ nhóm hoặc máy chủ thành vị trí của trình thông dịch Python 3, chẳng hạn như/usr/bin/python3. Đường dẫn phiên dịch mặc định cũng có thể được đặt trong
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
1.

Chạy lệnh hoặc playbook của bạn:

Lưu ý rằng bạn cũng có thể sử dụng tùy chọn dòng lệnh -E để đặt thủ công trình thông dịch Python khi bạn chạy lệnh. Điều này có thể hữu ích nếu bạn muốn kiểm tra xem một mô -đun hoặc playbook cụ thể có bất kỳ lỗi nào trong Python 3. Ví dụ:Ansible and Python 3 for information on how we fix common Python3 compatibility issues in the Ansible codebase.

Trường hợp sử dụng:

Playbook 1

  • Khi chúng tôi lần đầu tiên kết nối với máy chủ từ xa, máy chủ từ xa sẽ có một số phiên bản python được cài đặt - tính năng phát hiện tự động sẽ tìm thấy nó
  • Bây giờ chúng tôi cài đặt Ansible-Docker trên máy chủ từ xa
  • Từ thời điểm này: Các tài liệu docker ansible đề nghị sử dụng

Playbook 2

Chúng tôi kết nối với cùng một máy chủ/s một lần nữa, nhưng bây giờ chúng tôi phải sử dụng trình thông dịch

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
3 Python

Cách tốt nhất để làm việc này là gì?

Hiện tại chúng tôi đặt

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
4 ở cấp độ playbook là
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
5:

---
- name: DaqMon app
  vars:
  - ansible_python_interpreter: "{{ '/usr/bin/env python-docker' }}"

Điều này hoạt động, nhưng điều này cũng sẽ thay đổi thông dịch viên Python của các hành động địa phương. Và do đó, các hành động địa phương sẽ thất bại, bởi vì (

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
6 không tồn tại cục bộ).

  • Cách giải quyết hiện tại là chỉ định rõ ràng
    $ source ./hacking/env-setup
    $ python3 $(which ansible) localhost -m ping
    $ python3 $(which ansible-playbook) sample-playbook.yml
    
    4 trên mọi hành động cục bộ là tẻ nhạt và dễ bị lỗi

Questions::

  • Giải pháp lý tưởng là, nếu chúng ta có thể thêm
    $ source ./hacking/env-setup
    $ python3 $(which ansible) localhost -m ping
    $ python3 $(which ansible-playbook) sample-playbook.yml
    
    8 dưới dạng dự phòng cho phiên dịch viên-python-fallback-nhưng tôi nghĩ điều này là không thể
  • Có cách nào để đặt trình thông dịch Python chỉ cho các máy chủ từ xa - và giữ mặc định cho localhost không?
  • Hoặc có thể ghi đè rõ ràng trình thông dịch Python cho máy chủ cục bộ?

Hỏi ngày 26 tháng 8 năm 2019 lúc 10:24Aug 26, 2019 at 10:24

Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python

1

Bạn nên đặt

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
4 ở cấp độ chủ.

Vì vậy, có, có thể đặt rõ ràng trình thông dịch cho localhost trong kho của bạn.

localhost   ansible_connection=local ansible_python_interpreter=/usr/bin/python

Và tôi cho rằng bạn cũng có thể sử dụng

# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3
0 trên
# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3
1 trên máy chủ Localhost hoặc Docker của bạn.

Có một bài viết rực rỡ về

# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3
0 trên
# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3
3! ;-P

Đã trả lời ngày 26 tháng 8 năm 2019 lúc 11:23Aug 26, 2019 at 11:23

Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python

Xenloxenloxenlo

7231 Huy hiệu vàng6 Huy hiệu bạc21 Huy hiệu đồng1 gold badge6 silver badges21 bronze badges

1

Nhờ các câu trả lời hữu ích khác, tôi đã tìm thấy một giải pháp dễ dàng:

  • Ở cấp độ playbook, chúng tôi đặt trình thông dịch Python thành
    $ source ./hacking/env-setup
    $ python3 $(which ansible) localhost -m ping
    $ python3 $(which ansible-playbook) sample-playbook.yml
    
    3
  • Sau đó, chúng tôi sử dụng một tác vụ
    # Example inventory that makes an alias for localhost that uses Python3
    localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
    
    # Example of setting a group of hosts to use Python3
    [py3_hosts]
    ubuntu16
    fedora27
    
    [py3_hosts:vars]
    ansible_python_interpreter=/usr/bin/python3
    
    0 để ghi đè người phiên dịch chỉ cho localhost
    • Chúng ta cũng phải ủy thác các sự kiện
    • Chúng ta có thể sử dụng biến Magic
      # Example inventory that makes an alias for localhost that uses Python3
      localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
      
      # Example of setting a group of hosts to use Python3
      [py3_hosts]
      ubuntu16
      fedora27
      
      [py3_hosts:vars]
      ansible_python_interpreter=/usr/bin/python3
      
      6, trong đó đề cập đến trình thông dịch Python đã được sử dụng trên máy chủ ansible (cục bộ) để bắt đầu playbook: xem tài liệu ansible

Dưới đây là những phần quan trọng khi bắt đầu

$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
5:

---
- name: Playbook 2
  vars:
  - ansible_python_interpreter: "{{ '/usr/bin/env python-docker' }}"
  ...
  tasks:
  - set_fact:
      ansible_python_interpreter: '{{ ansible_playbook_python }}'
    delegate_to: localhost    
    delegate_facts: true

Đã trả lời ngày 26 tháng 8 năm 2019 lúc 15:40Aug 26, 2019 at 15:40

Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python

TmtrontmtronTmTron

14.7K7 Huy hiệu vàng87 Huy hiệu bạc131 Huy hiệu đồng7 gold badges87 silver badges131 bronze badges

Cố gắng sử dụng

# Example inventory that makes an alias for localhost that uses Python3
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3

# Example of setting a group of hosts to use Python3
[py3_hosts]
ubuntu16
fedora27

[py3_hosts:vars]
ansible_python_interpreter=/usr/bin/python3
0 cho
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
4 ở cấp độ chủ trong Playbook đầu tiên.

Đã trả lời ngày 26 tháng 8 năm 2019 lúc 10:40Aug 26, 2019 at 10:40

Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python

George Shuklingeorge ShuklinGeorge Shuklin

6.2408 Huy hiệu vàng35 Huy hiệu bạc68 Huy hiệu Đồng8 gold badges35 silver badges68 bronze badges

2

Trên toàn cầu, sử dụng khóa

$ ansible localhost-py3 -m ping
$ ansible-playbook sample-playbook.yml
0 trong phần
$ ansible localhost-py3 -m ping
$ ansible-playbook sample-playbook.yml
1 của tệp
$ ansible localhost-py3 -m ping
$ ansible-playbook sample-playbook.yml
2.

interpreter_python = auto_silent

Yuri

3.9601 Huy hiệu vàng25 Huy hiệu bạc43 Huy hiệu đồng1 gold badge25 silver badges43 bronze badges

Đã trả lời ngày 18 tháng 5 năm 2020 lúc 1:52May 18, 2020 at 1:52

Hướng dẫn localhost ansible_python_interpreter python - localhost ansible_python_interpreter python