介绍
在本实验中,你将探索 Ansible 的 get_url
模块,该模块允许你从互联网下载文件并将其保存到远程主机上。get_url
模块提供了多种选项来定制下载过程,包括身份验证、请求头和校验和验证。
在本实验中,你将探索 Ansible 的 get_url
模块,该模块允许你从互联网下载文件并将其保存到远程主机上。get_url
模块提供了多种选项来定制下载过程,包括身份验证、请求头和校验和验证。
在这一步中,你将使用 Ansible 的 get_url
模块从 URL 下载文件并将其保存到远程主机上。
首先,创建一个新的 Ansible playbook 文件,命名为 /home/labex/project/get_url-module-playbook.yaml
,并在文本编辑器中打开它。
将以下内容添加到 playbook 文件中:
- hosts: localhost
tasks:
- name: Download a file from a URL
get_url:
url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
dest: "/tmp/ansible-2.9.25.tar.gz"
hosts
:指定运行 playbook 的目标主机。在本例中,playbook 将在本地主机上运行,因为目标主机是 localhost
。tasks
:这是要运行的任务列表。name
:这是任务的描述性名称,用于标识任务的用途。get_url
:这是 Ansible 中的一个模块,用于从互联网下载文件。url
:此参数指定要下载文件的 URL。在本例中,它从官方 Ansible 发布页面下载 Ansible
2.9.25 版本。dest
:此参数指定目标主机上保存下载文件的目标路径。在本例中,文件将保存到 /tmp/ansible-2.9.25.tar.gz
。总结来说,这个 playbook 从指定的 URL 下载 Ansible 2.9.25 的压缩包,并将其保存到本地主机的 /tmp/ansible-2.9.25.tar.gz
。
然后,使用以下命令运行 playbook:
ansible-playbook get_url-module-playbook.yaml
观察输出,确认文件是否成功下载并保存到远程主机。
示例输出:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Download a file from a URL] **********************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证文件是否已成功下载并保存到远程主机。
ll /tmp/ansible-2.9.25.tar.gz
示例输出:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:03 /tmp/ansible-2.9.25.tar.gz
在这一步中,你将使用 Ansible 的 get_url
模块自定义文件下载过程中发送的 HTTP 请求头。
首先,修改现有的 playbook 文件,删除所有内容并添加以下内容到 playbook 文件中:
- hosts: localhost
tasks:
- name: Download a file from a URL with custom headers
get_url:
url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
dest: "/tmp/ansible-2.9.25-1.tar.gz"
headers:
Custom-Header-1: Value1
Custom-Header-2: Value2
get_url
:这是 Ansible 中的一个模块,用于从互联网下载文件。url
:此参数指定要下载文件的 URL。在本例中,它从官方 Ansible 发布页面下载 Ansible
2.9.25 版本。dest
:此参数指定目标主机上保存下载文件的目标路径。在本例中,文件将保存到 /tmp/ansible-2.9.25-1.tar.gz
。headers
:这是一个可选参数,允许你指定在下载文件时发送到服务器的 HTTP 请求中包含的自定义请求头。在本例中,它设置为包含两个自定义请求头:Custom-Header-1
的值为 Value1
,Custom-Header-2
的值为 Value2
。这些请求头可能用于身份验证、授权或文件托管服务器所需的其他用途。总结来说,这个 playbook 将从指定的 URL 下载 Ansible 2.9.25 的压缩包,并在 HTTP 请求中包含自定义请求头,然后将其保存到本地主机的 /tmp
目录下,文件名为 ansible-2.9.25-1.tar.gz
。
然后,使用以下命令运行 playbook:
ansible-playbook get_url-module-playbook.yaml
观察输出,确认文件是否成功下载并保存到远程主机,并检查自定义请求头是否包含在 HTTP 请求中。
示例输出:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] **************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Download a file from a URL with custom headers] **************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证文件是否已成功下载并保存到远程主机。
ll /tmp/ansible-2.9.25-1.tar.gz
示例输出:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:17 /tmp/ansible-2.9.25-1.tar.gz
在这一步中,你将使用 Ansible 的 get_url
模块通过校验和验证下载文件的完整性。
首先,修改现有的 playbook 文件,删除所有内容并添加以下内容到 playbook 文件中:
- hosts: localhost
tasks:
- name: Download a file and verify checksum
get_url:
url: "https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz"
dest: "/tmp/ansible-2.9.25-2.tar.gz"
checksum: "sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha"
get_url
:这是 Ansible 中的一个模块,用于从互联网下载文件。url
:此参数指定要下载文件的 URL。在本例中,它从官方 Ansible 发布页面下载 Ansible
2.9.25 版本。dest
:此参数指定目标主机上保存下载文件的目标路径。在本例中,文件将保存到 /tmp/ansible-2.9.25-2.tar.gz
。checksum
:此参数用于指定下载文件的校验和及其类型。在本例中,它设置为 sha256:https://releases.ansible.com/ansible/ansible-2.9.25.tar.gz.sha
,表示 Ansible 应使用指定 URL 提供的校验和验证下载文件的 SHA256
校验和。这确保了下载文件的完整性。总结来说,这个 playbook 将从指定的 URL 下载 Ansible 2.9.25 的压缩包,将其保存到本地主机的 /tmp
目录下,文件名为 ansible-2.9.25-2.tar.gz
,并通过与指定 URL 提供的校验和进行比较来验证其完整性。
然后,使用以下命令运行 playbook:
ansible-playbook get_url-module-playbook.yaml
观察输出,确认文件是否成功下载并保存到远程主机,并检查校验和验证是否通过。
示例输出:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Download a file and verify checksum] *************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
验证文件是否已成功下载并保存到远程主机。
ll /tmp/ansible-2.9.25-2.tar.gz
示例输出:
-rw-rw-r-- 1 labex labex 14M Mar 15 13:31 /tmp/ansible-2.9.25-2.tar.gz
恭喜!你已成功完成 Ansible get_url
模块的实验。你学会了如何从 URL 下载文件、将其保存到远程主机、自定义 HTTP 请求头以及使用校验和验证文件完整性。
get_url
模块是一个多功能工具,可以帮助你自动化文件下载并处理下载过程中的各种细节。通过掌握这些知识,你可以增强你的 Ansible playbook,并高效地管理基础设施中的文件分发。
继续探索 Ansible 文档并尝试使用不同的模块,以扩展你的自动化能力。祝你玩转 Ansible!