如何在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
选项,可以参考官方文档。