该系列的一部分:
如何编写 Ansible Playbooks
Ansible 是一种现代配置管理工具,不需要在远程节点上使用代理软件,仅使用 SSH 和 Python 在托管服务器上进行通信和执行命令。本系列将带您了解可用于编写服务器自动化剧本的主要 Ansible 功能。最后,我们将看到一个实际示例,说明如何创建剧本以自动设置远程 Nginx Web 服务器并向其部署静态 HTML 网站。
自动安装所需的系统包是 Ansible playbook 中的一项常见操作任务,因为典型的应用程序堆栈需要来自不同来源的软件。
该apt
模块管理基于 Debian 的操作系统(如 Ubuntu)上的系统包,Ubuntu 是本指南中我们在远程节点上使用的发行版。以下剧本将更新apt
缓存,然后确保 Vim 安装在远程节点上。
playbook-09.yml
在您的ansible-practice
目录中创建一个名为的新文件:
- nano ~/ansible-practice/playbook-09.yml
然后将以下行添加到新的剧本文件中:
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim is installed
apt:
name: vim
update_cache: yes
完成后保存并关闭文件。
请注意,我们become
在剧本的开头包含了指令。这是必需的,因为安装软件包需要管理系统权限。
以类似的方式删除包,唯一的变化是您必须将包状态定义为absent
. 该state
指令的默认值为present
,这将确保该软件包安装在系统上,而不管版本如何。如果不存在,将安装该软件包。为确保您拥有最新版本的软件包,您可以latest
改用。apt
如果请求的包不是最新版本,这将导致更新请求的包。
请记住-K
在运行此剧本时提供选项,因为它需要sudo
权限:
- ansible-playbook -i inventory playbook-09.yml -u sammy -K
OutputBECOME password:
PLAY [all] **********************************************************************************************
TASK [Gathering Facts] **********************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim is installed] **************************************************
ok: [203.0.113.10]
PLAY RECAP **********************************************************************************************
203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
安装多个软件包时,您可以使用循环并提供一个包含要安装的软件包名称的数组。下面的剧本将确保包vim
,unzip
和curl
安装,并在其最新版本。
创建一个名为新文件playbook-10.yml
在你的ansible-practice
目录,你Ansible控制节点上:
- nano ~/ansible-practice/playbook-10.yml
将以下内容添加到新的 playbook 文件中:
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim, Curl and Unzip are installed
apt:
name: "{{ item }}"
update_cache: yes
loop:
- vim
- curl
- unzip
完成后保存并关闭文件。
然后,ansible-playbook
使用与前面示例相同的连接参数运行,并且不要忘记包含该-K
选项,因为此剧本需要管理权限:
- ansible-playbook -i inventory playbook-09.yml -u sammy -K
你会看到类似这样的输出,其指示使用不同的值,我们已经提供了相同的任务过三次反复运行:vim
,curl
和unzip
:
OutputBECOME password:
PLAY [all] ***************************************************************************************************************************************
TASK [Gathering Facts] ***************************************************************************************************************************
ok: [203.0.113.10]
TASK [Update apt cache and make sure Vim, Curl and Unzip are installed] **************************************************************************
ok: [203.0.113.10] => (item=vim)
ok: [203.0.113.10] => (item=curl)
changed: [203.0.113.10] => (item=unzip)
PLAY RECAP ***************************************************************************************************************************************
203.0.113.10 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
关于如何管理系统包的更多详细信息,包括如何删除包以及如何使用高级apt
选项,可以参考官方文档。