如果您厌倦了手动管理 Python 库和依赖项,请让 Ansible pip 模块完成这些脏活累活。Ansible pip 模块允许您自动执行 Python 库和依赖项管理。
使用 Ansible PIP 导入 Python 模块
Python 标准库包含几个精心设计的 Python 模块,以便于重用,例如表示数据、处理数据、与操作系统和文件系统交互以及 Web 编程。
如果计划安装单个包或导入单个 Python 模块,则运行临时命令就足够了。Ad hoc 命令是一种快速有效的方法,用于运行单个命令以在远程计算机上安装包、更新存储库或任何 Python 配置。
登录到 Ansible 控制器并运行以下 ansible 命令以将 (-m ansible.builtin.pip) 连接到本地主机(即您的机器)。
下面的命令传递一个参数 (-a
),告诉 Ansible 在您的 Ubuntu 机器中安装 bottle 模块,而不管该模块是否已经安装 (name=bottle state=forcereinstall)。
ansible localhost -m ansible.builtin.pip -a "name=bottle state=forcereinstall"
命令完成后,您将看到一条 CHANGED 消息,如下所示,确认 Ansible 已成功安装软件。
使用临时命令安装模块
在 Playbook 中安装 Ansible Python pip 模块
执行 Ansible 命令非常适合一次性操作。但也许您需要执行多项任务。如果是这样,请创建一个 Ansible playbook,其中包含安装多个依赖项和 Python 软件的大量任务。
1. 在 Ansible 控制器主机中打开终端,然后运行以下命令以创建名为 ~/ansible_python_pip_module 的目录并切换到该目录。
此目录将包含用于调用 Ansible pip 模块的 playbook 和所有必需的配置文件。
# Create directory
mkdir ~/ansible_python_pip_module
# Switch the working directory
cd ~/ansible_python_pip_module
2. 接下来,创建一个名为 pip.yml 的文件,在 ~/ansible_python_pip_module 目录中打开您喜欢的文本编辑器。
使用以下 YAML playbook 内容填充 pip.yml 文件。下面的 playbook 包含三个多个任务,用于正确安装 Ansible PIP 模块。
虚拟环境(即 virtualenv)是轻量级的,因为它们包含与系统目录隔离的目录。他们也有自己的 Python 二进制文件,这是一组独立的已安装的 Python 包。
---
- name: Ansible Python pip module demo
hosts: localhost
tasks:
- name: Install bottle using the 'pip3.3' executable
ansible.builtin.pip:
name: bottle
executable: pip
- name: Install specified Python requirements
ansible.builtin.pip:
requirements: /my_app/requirements.txt
- name: Install bottle Python package on version 0.12
ansible.builtin.pip:
name: bottle==0.12.23
- name: Install multi python packages with version specifiers
ansible.builtin.pip:
name:
- django>1.11.0,<1.12.0
- name: Install bottle, forcing reinstallation if it's already installed
ansible.builtin.pip:
name: bottle
state: forcereinstall
- name: Install bottle module within a user home directory
ansible.builtin.pip:
name: bottle
extra_args: --user
- name: Install specified python requirements in indicated (virtualenv)
ansible.builtin.pip:
requirements: /my_app/requirements.txt
virtualenv: /my_app
- name: Install bottle while ensuring the umask is 0022 (so other users can use it)
ansible.builtin.pip:
name: bottle
umask: "0022"
become: True
3. 运行下面的 ansible-playbook 命令以执行pip.yml playbook。
ansible-playbook pip.yml
在下面,您可以看到某些任务显示状态已更改,这表明 Ansible 已成功安装 pip 模块并修改了任务的状态以运行该命令。相反,您会看到“正常”状态,因为某些任务不需要更改。
在 Ubuntu 机器中执行 Ansible Playbook
验证 Python 库的模块
您已在 playbook 中使用 Ansible pip 成功安装模块。但是,为了安全起见,必须验证模块。
运行以下 pip show 命令以验证已安装的 bottle 模块。
pip show bottle
如下图所示,以下输出显示了已安装的模块以及版本和所有其他重要细节。
验证 Python-pip 模块
现在,运行以下命令来验证是否安装了 Django 包。
pip show django
与上一步一样,下面的输出显示了 Django 包的详细信息。此输出确认你已成功安装 Django 包。
验证 Python-pip Django 包
结论
无论您是只签出 Python 模块还是安装多个模块,Ansible pip 模块都是值得考虑的。
Ansible pip 模块是有效处理远程主机上的 Python 库和模块的快速方法。