Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/geerlingguy/ansible-role-packer_rhel
Ansible Role - Packer RHEL/CentOS Configuration for Vagrant VirtualBox
https://github.com/geerlingguy/ansible-role-packer_rhel
ansible box build centos hashicorp packer redhat rhel role virtualbox
Last synced: 7 days ago
JSON representation
Ansible Role - Packer RHEL/CentOS Configuration for Vagrant VirtualBox
- Host: GitHub
- URL: https://github.com/geerlingguy/ansible-role-packer_rhel
- Owner: geerlingguy
- License: mit
- Created: 2014-03-28T18:05:05.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2024-01-25T03:57:32.000Z (9 months ago)
- Last Synced: 2024-04-14T00:56:02.472Z (7 months ago)
- Topics: ansible, box, build, centos, hashicorp, packer, redhat, rhel, role, virtualbox
- Language: Jinja
- Homepage: https://galaxy.ansible.com/geerlingguy/packer_rhel/
- Size: 36.1 KB
- Stars: 52
- Watchers: 5
- Forks: 47
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-list-ansible - ansible-role-packer-rhel - Packer RHEL/CentOS Configuration for Vagrant VirtualBox (virtualbox)
README
# Ansible Role: Packer RHEL/CentOS Configuration for Vagrant VirtualBox
[![CI](https://github.com/geerlingguy/ansible-role-packer_rhel/workflows/CI/badge.svg?event=push)](https://github.com/geerlingguy/ansible-role-packer_rhel/actions?query=workflow%3ACI)
This role configures RHEL/CentOS (either minimal or full install) in preparation for it to be packaged as part of a .box file for Vagrant/VirtualBox deployment using [Packer](http://www.packer.io/).
The role may be made more flexible in the future, so it could work with other Linux flavors and/or other Packer builders besides VirtualBox, but I'm currently only focused on VirtualBox, since the main use case right now is developer VMs.
## Requirements
Prior to running this role via Packer, you need to make sure Ansible is installed via a shell provisioner, and that preliminary VM configuration (like adding a vagrant user to the appropriate group and the sudoers file) is complete, generally by using a Kickstart installation file (e.g. `ks.cfg`) with Packer. An example array of provisioners for your Packer .json template would be something like:
"provisioners": [
{
"type": "shell",
"execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
"script": "scripts/ansible.sh"
},
{
"type": "ansible-local",
"playbook_file": "ansible/main.yml",
"role_paths": [
"/Users/jgeerling/Dropbox/VMs/roles/geerlingguy.packer_rhel",
]
}
],The files should contain, at a minimum:
**scripts/ansible.sh**:
#!/bin/bash -eux
# Add the EPEL repository, and install Ansible.
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install ansible python-setuptools**ansible/main.yml**:
---
- hosts: all
sudo: yes
gather_facts: yes
roles:
- geerlingguy.packer_rhelYou might also want to add another shell provisioner to run cleanup, erasing free space using `dd`, but this is not required (it will just save a little disk space in the Packer-produced .box file).
If you'd like to add additional roles, make sure you add them to the `role_paths` array in the template .json file, and then you can include them in `main.yml` as you normally would. The Ansible configuration will be run over a local connection from within the Linux environment, so all relevant files need to be copied over to the VM; configuratin for this is in the template .json file. Read more: [Ansible Local Provisioner](http://www.packer.io/docs/provisioners/ansible-local.html).
## Role Variables
Available variables are listed below, along with default values (see `defaults/main.yml`):
packer_rhel_libselinux_package: libselinux-python
The libselinux python package to be installed. This is overridden for RHEL 8 to be `python3-libselinux`.
## Dependencies
None.
## Example Playbook
- hosts: all
roles:
- { role: geerlingguy.packer_rhel }## License
MIT / BSD
## Author Information
This role was created in 2014 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/).