Skip to content
Snippets Groups Projects
Commit eba3e448 authored by Nicolas KAROLAK's avatar Nicolas KAROLAK
Browse files

document image build | refs #30562

parent 5ec31b4e
No related branches found
No related tags found
No related merge requests found
......@@ -83,7 +83,7 @@ endif
.PHONY: image
## image: Run Packer image build : build=<path-to-packer-file>
image: image-validate
packer build -force $(build)
packer build -on-error=ask -force $(build)
.PHONY: docker-build
## docker-build: Run docker image build for CI and devcontainer
......
......@@ -7,7 +7,7 @@ How to deploy UbiCast products:
- [Installation of required tools](/doc/install.md)
- [Configuration of the controller and inventory](/doc/config.md)
- [Deployment of UbiCast softwares](/doc/deploy.md)
- [Build an image]() (TODO)
- [Build an image](/doc/image.md)
## Development
......
# Image build
## Requirements
- [Packer](https://packer.io): this is the tool that will automate all the steps of image creation
- [VMware OVF Tool](https://code.vmware.com/web/tool/4.4.0/ovf): this is required by Packer to export the image from the VMware Hypervisor
- A running and reachable VMware ESXi Hypervisor
## Prepare Packer file
Copy the example Packer file `packer/example.json`, for example to `packer/mymediaserver.json`, and edit the copied file.
These variable must be configured:
- `variables.name`: used to set the output filename and the machine hostname
- `variables.esx_*`: VMware hypervisor connection settings
- `variables.network_*`: used to pre-configure network settings, leave empty to ignore
- `variables.skyreach_*`: use either `system_key` or `activation_key` and leave the other empty
Then you need the groups that will be applied to the machine, for example for a MediaServer:
```json
{
[...]
"provisioners": [
[...]
{
"type": "ansible",
[...]
"groups": [
"monitor",
"postgres",
"manager",
"wowza",
"celerity",
"server",
"import"
]
}
]
}
```
For a worker:
```json
{
[...]
"provisioners": [
[...]
{
"type": "ansible",
[...]
"groups": [
"worker"
]
}
]
}
```
You can also pass additional variables to ansible in `provisionners['1'].extra_arguments`.
## Build image
Check that the Packer file is valid (the hypervisor must be reachable):
```
make image-validate build=packer/mymediaserver.json
```
Build the OVA:
```sh
make image build=packer/mymediaserver.json
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment