From eba3e448202694d048da54fef01e41de471dc517 Mon Sep 17 00:00:00 2001 From: Nicolas KAROLAK <nicolas@karolak.fr> Date: Mon, 6 Apr 2020 10:08:58 +0000 Subject: [PATCH] document image build | refs #30562 --- Makefile | 2 +- README.md | 2 +- doc/image.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 doc/image.md diff --git a/Makefile b/Makefile index d61687bb..a7688479 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/README.md b/README.md index 604152bb..90669e45 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/doc/image.md b/doc/image.md new file mode 100644 index 00000000..967c86d9 --- /dev/null +++ b/doc/image.md @@ -0,0 +1,76 @@ +# 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 +``` -- GitLab