

How To Install and Manage System Packages in Ansible Playbooks
source link: https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-system-packages-in-ansible-playbooks
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Tutorial
How To Install and Manage System Packages in Ansible Playbooks
UbuntuConfiguration ManagementAnsible
-
By Erika Heidi
Published onApril 15, 2021 31 views
Ansible is a modern configuration management tool that doesn’t require the use of an agent software on remote nodes, using only SSH and Python to communicate and execute commands on managed servers. This series will walk you through the main Ansible features that you can use to write playbooks for server automation. At the end, we’ll see a practical example of how to create a playbook to automate setting up a remote Nginx web server and deploy a static HTML website to it.
Automating the installation of required system packages is a common operational task in Ansible playbooks, since a typical application stack requires software from different sources.
The apt
module manages system packages on Debian-based operating systems such as Ubuntu, the distribution we’re using on remote nodes throughout this guide. The following playbook will update the apt
cache and then make sure Vim is installed on remote nodes.
Create a new file called playbook-09.yml
in your ansible-practice
directory:
nano ~/ansible-practice/playbook-09.yml
Then add the following lines to the new playbook file:
---
- hosts: all
become: yes
tasks:
- name: Update apt cache and make sure Vim is installed
apt:
name: vim
update_cache: yes
Save and close the file when you’re done.
Notice that we’ve included the become
directive in the beginning of the play. This is required since installing packages requires administrative system permissions.
Removing a package is done in a similar way, the only change is that you have to define the package state to absent
. The state
directive has a default value of present
, which will make sure that the package is installed on the system, regardless of the version. The package will be installed if not present. To assure you have the latest version of a package, you can use latest
instead. This will cause apt
to update the requested package if that is not on their latest version.
Remember to provide the -K
option when running this playbook, since it requires sudo
permissions:
ansible-playbook -i inventory playbook-09.yml -u sammy -K
Output
BECOME 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
When installing multiple packages, you can use a loop and provide an array containing the names of the packages you want to install. The following playbook will make sure the packages vim
, unzip
, and curl
are installed and in their latest version.
Create a new file called playbook-10.yml
in your ansible-practice
directory, on your Ansible control node:
nano ~/ansible-practice/playbook-10.yml
Add the following content to the new playbook file:
---
- 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
Save and close the file when you have finished.
Then, run ansible-playbook
with the same connection arguments from the previous examples, and don’t forget to include the -K
option since this playbook requires administrative privileges:
ansible-playbook -i inventory playbook-09.yml -u sammy -K
You’ll see output like this, indicating that the same task run through three iterations using the different values we have provided: vim
, curl
, and unzip
:
Output
BECOME 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
For more details on how to manage system packages, including how to remove packages and how to use advanced apt
options, you can refer to the official documentation.
Recommend
-
84
README.md Ansible Jupyter Kernel
-
33
Ubuntu 16.04 and 18.04 (and likely future versions) often don't have Python 2 installed by default. Sometimes Python 3 is installed, available at /usr/bin/python3 , but for many minimal images I've used,...
-
38
Ansible allows us to automate the configuration management of systems and add any number of clients as we wish. Have you ever wondered how complex this can get? Have you ever wondered how long and confusing the playbooks...
-
56
README.rst ceph-ansible Ansible playbooks for Ceph, the distributed filesystem. Please refer to our hosted documentation here:
-
16
Introduction Sovereign is a set of Ansible playbooks that you can use to build and maintain your own
-
12
Tutorial How To Create and Use Templates in Ansible Playbooks Ubuntu
-
1
Tutorial How To Access System Information (Facts) in Ansible Playbooks Configuration Management
-
6
Tutorial How To Define and Use Handlers in Ansible Playbooks Ubuntu
-
5
Tutorial How To Use Loops in Ansible Playbooks Configuration Management
-
5
Tutorial Understanding Privilege Escalation in Ansible Playbooks Configuration Management
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK