Added package role
This commit is contained in:
parent
ba9d94fe69
commit
0de8837ac7
9
inventories/group_vars/pi.yml
Normal file
9
inventories/group_vars/pi.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
install_packages:
|
||||||
|
- vim
|
||||||
|
- bc
|
||||||
|
- netcat
|
||||||
|
- curl
|
||||||
|
- wget
|
||||||
|
- telnet
|
||||||
|
...
|
9
inventories/group_vars/seboto.yml
Normal file
9
inventories/group_vars/seboto.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
install_packages:
|
||||||
|
- vim
|
||||||
|
- bc
|
||||||
|
- netcat
|
||||||
|
- curl
|
||||||
|
- wget
|
||||||
|
- telnet
|
||||||
|
...
|
7
playbooks/packages.yml
Normal file
7
playbooks/packages.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- name: Manage Packages
|
||||||
|
hosts: all
|
||||||
|
remote_user: root
|
||||||
|
roles:
|
||||||
|
- packages
|
||||||
|
...
|
25
roles/packages/.travis.yml
Normal file
25
roles/packages/.travis.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
services: docker
|
||||||
|
|
||||||
|
env:
|
||||||
|
- distro: centos7
|
||||||
|
- distro: centos6
|
||||||
|
- distro: fedora27
|
||||||
|
- distro: ubuntu1710
|
||||||
|
- distro: ubuntu1604
|
||||||
|
- distro: ubuntu1404
|
||||||
|
|
||||||
|
script:
|
||||||
|
# Configure test script so we can run extra tests after playbook is run.
|
||||||
|
- export container_id=$(date +%s)
|
||||||
|
- export cleanup=false
|
||||||
|
|
||||||
|
# Download test shim.
|
||||||
|
- wget -O ${PWD}/tests/test.sh https://gist.github.com/brentwg/64f90bdda32a51360f71558d3171fcbb/raw/
|
||||||
|
- chmod +x ${PWD}/tests/test.sh
|
||||||
|
|
||||||
|
# Run tests.
|
||||||
|
- ${PWD}/tests/test.sh
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
webhooks: https://galaxy.ansible.com/api/v1/notifications/
|
||||||
|
|
47
roles/packages/README.md
Normal file
47
roles/packages/README.md
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# Ansible Role: Packages
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/brentwg/ansible-role-packages.svg?branch=master)](https://travis-ci.org/brentwg/ansible-role-packages)
|
||||||
|
|
||||||
|
A simple Ansible role used to install, remove, and update distrobution base repository software packages.
|
||||||
|
|
||||||
|
(No feature currently exists for enabling additional, third-party repositories.)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
Ansible minimum version: 2.4
|
||||||
|
|
||||||
|
## Role Variables
|
||||||
|
Available default values are listed below (See `defaults/main.yml`):
|
||||||
|
```
|
||||||
|
# for software package updates
|
||||||
|
install_all_package_updates: true
|
||||||
|
|
||||||
|
# list of packages to install
|
||||||
|
install_packages: []
|
||||||
|
|
||||||
|
# list of packages to remove
|
||||||
|
remove_packages: []
|
||||||
|
|
||||||
|
# list of packages to update
|
||||||
|
update_packages: []
|
||||||
|
|
||||||
|
```
|
||||||
|
Set `install_all_package_updates` to `true` to enable the automated installation of all software package updates. Set it to `false` to disable all updates.
|
||||||
|
|
||||||
|
`install_packages`, `remove_packages`, and `update_packages` expect to receive a list of package names that are specific to whichever Linux distribution you are running.
|
||||||
|
|
||||||
|
**NOTE**: If you've already set `install_all_package_updates` to `true`, then there is naturally no requirement to redundantly list additional packages in `update_packages`; however, program logic would still allow this (since there is *probably* no harm done).
|
||||||
|
## Dependencies
|
||||||
|
None.
|
||||||
|
|
||||||
|
## Example Playbook
|
||||||
|
```
|
||||||
|
- hosts: all
|
||||||
|
|
||||||
|
vars:
|
||||||
|
install_all_package_updates: true
|
||||||
|
install_packages:
|
||||||
|
- vim-enhanced
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- brentwg.packages
|
||||||
|
```
|
13
roles/packages/defaults/main.yml
Normal file
13
roles/packages/defaults/main.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
# for software package updates
|
||||||
|
install_all_package_updates: true
|
||||||
|
|
||||||
|
# list of packages to install
|
||||||
|
install_packages: []
|
||||||
|
|
||||||
|
# list of packages to remove
|
||||||
|
remove_packages: []
|
||||||
|
|
||||||
|
# list of packages to update
|
||||||
|
update_packages: []
|
||||||
|
|
28
roles/packages/meta/main.yml
Normal file
28
roles/packages/meta/main.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
dependencies: []
|
||||||
|
|
||||||
|
galaxy_info:
|
||||||
|
author: brentwg
|
||||||
|
description: A simple Ansible role used to install and update software packages.
|
||||||
|
company: "None"
|
||||||
|
license: "None"
|
||||||
|
min_ansible_version: 2.4
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- 6
|
||||||
|
- 7
|
||||||
|
- name: Fedora
|
||||||
|
versions:
|
||||||
|
- 26
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- artful
|
||||||
|
- xenial
|
||||||
|
- trusty
|
||||||
|
galaxy_tags:
|
||||||
|
- system
|
||||||
|
- packages
|
||||||
|
- install
|
||||||
|
- remove
|
||||||
|
- updates
|
21
roles/packages/tasks/install-package-updates.yml
Normal file
21
roles/packages/tasks/install-package-updates.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- name: "Working around an Ansible/Aptitude issue..."
|
||||||
|
apt:
|
||||||
|
pkg: aptitude
|
||||||
|
state: latest
|
||||||
|
become: true
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
|
|
||||||
|
- name: Install all software package updates
|
||||||
|
package:
|
||||||
|
name: "*"
|
||||||
|
state: "latest"
|
||||||
|
become: true
|
||||||
|
when: install_all_package_updates
|
||||||
|
|
||||||
|
- name: Install specified software package updates
|
||||||
|
package:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: latest
|
||||||
|
become: true
|
||||||
|
with_items: "{{ update_packages }}"
|
14
roles/packages/tasks/install-remove-packages.yml
Normal file
14
roles/packages/tasks/install-remove-packages.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
- name: Install additional software packages
|
||||||
|
package:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
with_items: "{{ install_packages }}"
|
||||||
|
|
||||||
|
- name: Remove specified software packages
|
||||||
|
package:
|
||||||
|
name: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
become: true
|
||||||
|
with_items: "{{ remove_packages }}"
|
4
roles/packages/tasks/main.yml
Normal file
4
roles/packages/tasks/main.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
- import_tasks: install-package-updates.yml
|
||||||
|
|
||||||
|
- import_tasks: install-remove-packages.yml
|
11
roles/packages/tests/README.md
Normal file
11
roles/packages/tests/README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Ansible Role tests
|
||||||
|
|
||||||
|
To run the test playbook(s) in this directory:
|
||||||
|
|
||||||
|
1. Install and start Docker.
|
||||||
|
1. Download the test shim (see .travis.yml file for the URL) into `tests/test.sh`:
|
||||||
|
`wget -O tests/test.sh https://gist.github.com/brentwg/64f90bdda32a51360f71558d3171fcbb/raw/`
|
||||||
|
1. Make the test shim executable: `chmod +x tests/test.sh`.
|
||||||
|
1. Run (from the role's root directory) `distro=[distro] playbook=[playbook] ./tests/test.sh`
|
||||||
|
|
||||||
|
If you **don't** want the container to be automatically deleted after the test playbook is run, then add the following environment variables: `cleanup=false container_id=$(date +%s)`
|
11
roles/packages/tests/test.yml
Normal file
11
roles/packages/tests/test.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
|
||||||
|
pre_tasks:
|
||||||
|
- name: Update apt cache.
|
||||||
|
apt: update_cache=yes cache_valid_time=600
|
||||||
|
when: ansible_os_family == 'Debian'
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role_under_test
|
Loading…
Reference in New Issue
Block a user