Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vyos/vyos-vm-images
https://github.com/vyos/vyos-vm-images
Last synced: 10 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/vyos/vyos-vm-images
- Owner: vyos
- Created: 2018-06-20T13:26:04.000Z (over 6 years ago)
- Default Branch: current
- Last Pushed: 2024-03-15T13:09:23.000Z (8 months ago)
- Last Synced: 2024-04-14T04:22:32.825Z (7 months ago)
- Language: Jinja
- Size: 128 KB
- Stars: 80
- Watchers: 15
- Forks: 48
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# vyos-vm-images
[Ansible](https://www.ansible.com/) playbooks to build VyOS VM images.
## Requirements
You need a machine with at least 20 GB free space with Debian 10 (bare-metal, virtual, Docker container with --privileged flag). Also, you need to install ansible and python3 packages:
```
sudo apt update
sudo apt install -y ansible python3
```If you want to build an OVA image, you also need `ovftool` from VMware. It should be downloaded from the [VMware site](https://code.vmware.com/tool/ovf). Also, you need a private key to sign an OVA file. It can be generated with the next command:
```
openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:1024 -keyout myself.pem -out myself.pem
```All other requirements will be installed by ansible-playbook.
## Prepare
You need to copy the ISO image with VyOS to `/tmp/vyos.iso` before running ansible-playbook. Resulting images also will be located inside `/tmp/` directory.
### Docker
The Dockerfile has all required dependencies.
1. Download the `Dockerfile`
```
wget https://raw.githubusercontent.com/vyos/vyos-vm-images/current/Dockerfile
```
2. Build local image with name `vyos-vm-images` (only if you do not have it)
```
docker build --tag vyos-vm-images:latest -f ./Dockerfile .
```
3. Start and connect to the container:
```shell
docker run --rm -it --privileged -v $(pwd):/vm-build -v $(pwd)/images:/images -w /vm-build vyos-vm-images:latest bash
```
4. Clone repo
```
git clone https://github.com/vyos/vyos-vm-images.git && cd vyos-vm-images
```## Supported Platforms
- QEMU
```
ansible-playbook qemu.yml
```- VMware Cloud-init
```
ansible-playbook vmware.yml -e vyos_vmware_private_key_path=path_to_private_key
```- VMware simple ova
```
ansible-playbook vmware.yml -e vyos_vmware_private_key_path=path_to_private_key -e cloud_init=false -e ovf_template=simple
```- Microsoft Hyper-V
```
ansible-playbook hyperv.yml
```- Vagrant libvirt
```
ansible-playbook vagrant-libvirt.yml
```## Additional (optional) parameters
- Path to local ISO image (default: /tmp/vyos.iso):
```
-e iso_local=path
```Example:
```
-e iso_local=/tmp/vyos/custom_image.iso
```- Disk size (default: 10GB):
```
-e disk_size=size
```Example for 2 GB:
```
-e disk_size=2
```- Enable Cloud-init (default: according to platform):
```
-e cloud_init=true
```- Configure custom Cloud-init datasources (default: according to platform):
```
-e cloud_init_ds=datasources
```Example:
```
-e cloud_init_ds=NoCloud,ConfigDrive,None
```- Install guest agent. It can be `qemu`, `vmware` (default: none):
```
-e guest_agent=agent
```Example:
```
-e guest_agent=qemu
```- Disable configuration stage modules in Cloud-init. Mostly useful when you are building for non-cloud environments, where Cloud-init meta-data is not available (default: false):
```
-e cloud_init_disable_config=true
```- Create an archive with files required to PXE boot (default: false):
```
-e pxe=true
```- Keep default `vyos` user with password `vyos` in configuration when building an image with Cloud-init (default: false):
```
-e keep_user=true
```- Select a type of partition table for a disk image. Supported: `mbr`, `gpt`, `hybrid` (default: `hybrid`):
```
-e parttable_type=hybrid
```
- Select default console for boot. Supported: `kvm`, `serial` (default: depending on platform):```
-e grub_console=serial
```- Install custom packages. Can be a list in the `files/custom_packages_list.txt` file separated by spaces, or deb files inside the `files/custom_debs/` directory:
```
-e custom_packages=true
```- Copy custom files. All files from inside the `files/custom_files/` directory will be copied to the target filesystem recursively:
```
-e custom_files=true
```- Enable DHCP on eth0 (default: `false`):
```
-e enable_dhcp=true
```- Enable SSH (default: `false`):
```
-e enable_ssh=true
```- Remove `login` from configuration. Unlike `keep_user`, this option will completely remove `system login` from configuration.
```
-e without_login=true
```