111 lines
2.8 KiB
Plaintext
111 lines
2.8 KiB
Plaintext
local copy_script(name) = {
|
|
name: 'podman | Install ' + name + ' wrapper script',
|
|
template: {
|
|
src: name + '.j2',
|
|
dest: '{{ xdg_dir.bin_home }}/' + name,
|
|
mode: '755',
|
|
},
|
|
};
|
|
|
|
local podman(name) = std.prune(
|
|
{
|
|
local normalized_name = std.strReplace(name, '-', '_'),
|
|
local version_variable = '{{ ' + normalized_name + '_version }}',
|
|
|
|
name: 'podman | Create ' + name + ' shim',
|
|
tags: name,
|
|
block: [
|
|
{
|
|
name: 'podman | Build ' + name + ' container image',
|
|
'containers.podman.podman_image': {
|
|
name: name,
|
|
build: { extra_args: '--build-arg ' + std.asciiUpper(normalized_name) + '_VERSION=' + version_variable },
|
|
path: '{{ role_path }}/build_dirs/' + name,
|
|
tag: version_variable,
|
|
state: 'present',
|
|
},
|
|
},
|
|
copy_script(name),
|
|
],
|
|
}
|
|
);
|
|
|
|
// Special container images
|
|
local special_containers = [
|
|
{
|
|
local name = 'aports-dev',
|
|
local normalized_name = 'aports_dev',
|
|
|
|
name: 'podman | Create aports development environment',
|
|
tags: name,
|
|
block: [
|
|
{
|
|
name: 'podman | Get current date as ' + name + "'s image tag",
|
|
command: '/bin/date -u "+%Y-%m-%d"',
|
|
changed_when: false,
|
|
register: normalized_name + '_version',
|
|
},
|
|
{
|
|
name: 'podman | Build ' + name + ' container image',
|
|
'containers.podman.podman_image': {
|
|
name: name,
|
|
path: '{{ role_path }}/build_dirs/' + name,
|
|
tag: '{{ ' + normalized_name + '_version.stdout }}',
|
|
state: 'present',
|
|
},
|
|
},
|
|
copy_script(name),
|
|
],
|
|
},
|
|
{
|
|
local name = 'vagrant',
|
|
|
|
name: 'podman | Create ' + name + ' shim',
|
|
tags: name,
|
|
vars: {
|
|
vagrant_image_repository: 'docker.io/vagrantlibvirt/vagrant-libvirt',
|
|
vagrant_image_tag: 'latest-slim',
|
|
},
|
|
block: [
|
|
{
|
|
name: 'podman | Keep vagrant Docker image up-to-date',
|
|
'containers.podman.podman_image': {
|
|
name: '{{ vagrant_image_repository }}',
|
|
tag: '{{ vagrant_image_tag }}',
|
|
force: true,
|
|
},
|
|
},
|
|
copy_script(name),
|
|
],
|
|
},
|
|
{
|
|
local name = 'kcli',
|
|
|
|
name: 'podman | Install ' + name + ' scripts',
|
|
tags: name,
|
|
block: [
|
|
{
|
|
name: 'podman | Create ' + name + ' shim',
|
|
template: {
|
|
src: name + '.j2',
|
|
dest: '{{ xdg_dir.bin_home }}/' + name,
|
|
mode: '755',
|
|
},
|
|
},
|
|
{
|
|
name: 'podman | Symlink kweb script to ' + name,
|
|
file: {
|
|
src: './' + name,
|
|
dest: '{{ xdg_dir.bin_home }}/kweb',
|
|
state: 'link',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
// Images to be built in a uniform way
|
|
local images = ['ltex-ls', 'translate-shell', 'marksman'];
|
|
|
|
std.manifestYamlDoc([podman(x) for x in images] + special_containers)
|