Coo*_*ook 13 python ubuntu python-3.x ansible
尝试使用 GNS3 练习 ansible 脚本,有一个名为“网络自动化”的内置 ansible 的 docker 实例。但是,它仍然使用 Python 2.7 作为解释器:
root@Network-Automation:~# ansible --version
ansible 2.7.11
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用“ansible-playbook --version -e 'ansible_python_interpreter=/usr/bin/python3'”命令来运行 Python 版本 3 的剧本,或者我可以在剧本中指定 var:
- name: Common package
hosts: all
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3
roles:
- { role: python, tags: [ init, python, common, addusers] }
...
...
Run Code Online (Sandbox Code Playgroud)
但是,我想有一种永久的方式来强制 ansible 使用 Python3 版本。我怎样才能做到这一点?谢谢。
小智 12
为什么不在你的角色中使用 var 目录......
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 defaults\n\xe2\x94\x82 \xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 files\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 handlers\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 meta\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tasks\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tests\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 inventory\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 vars\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.yml\nRun Code Online (Sandbox Code Playgroud)\n在 vars/main.yml\n只需添加...
\n--- \n# vars file for XXXX\n ansible_python_interpreter: /usr/bin/python3\nRun Code Online (Sandbox Code Playgroud)\n
shi*_*492 10
从官方ansible文档中引用 -
可以为 Python2 或 Python3 打包单独的 Linux 分发包。当从发行版软件包运行时,您只能将 Ansible 与安装它的 Python 版本一起使用。有时发行版会提供一种安装多个 Python 版本的方法(通过单独的包或通过安装后运行的一些命令)。您需要检查您的发行版,看看这是否适用于您的情况。
在 Python 3 下运行 /usr/bin/ansible 的最简单方法是使用 Python3 版本的 pip 安装它。这将使默认的 /usr/bin/ansible 与 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)]
Run Code Online (Sandbox Code Playgroud)
如果您正在运行 Ansible Running From Source 并希望在源代码检出中使用 Python 3,请通过 python3 运行您的命令。例如:
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
Run Code Online (Sandbox Code Playgroud)
根据https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html,您可以简单地将其设置在该主机的清单中,或者在 ansible 的配置文件中(也可以在与剧本和/或库存):
要控制发现行为:
- 对于单个主机和组,使用 ansible_python_interpreter 库存变量
- 在全局范围内,使用 ansible.cfg 的 [defaults] 部分中的terpreter_python 键
| 归档时间: |
|
| 查看次数: |
46251 次 |
| 最近记录: |