如何在AnsiblePlaybooks中安装和管理系统包
自动安装所需的系统包是 Ansible playbook 中的一项常见操作任务,因为典型的应用程序堆栈需要来自不同来源的软件。
apt 模块管理基于 Debian 的操作系统(例如 Ubuntu)上的系统包,这是我们在本指南中在远程节点上使用的发行版。 以下 playbook 将更新 apt 缓存,然后确保在远程节点上安装了 Vim。
在 ansible-practice 目录中创建一个名为 playbook-09.yml 的新文件:
nano ~/ansible-practice/playbook-09.yml
然后将以下行添加到新的剧本文件中:
~/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 更新请求的包,如果该包不在其最新版本上。
请记住在运行此 playbook 时提供 -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
安装多个包时,您可以使用 loop 并提供一个包含您要安装的包名称的数组。 以下 playbook 将确保安装包 vim、unzip 和 curl 并处于最新版本。
在 Ansible 控制节点的 ansible-practice 目录中创建一个名为 playbook-10.yml 的新文件:
nano ~/ansible-practice/playbook-10.yml
将以下内容添加到新的 playbook 文件中:
~/ansible-practice/playbook-10.yml
---
- 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 选项,因为此 playbook 需要管理权限:
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选项,可以参考官方文档。