dotfiles-ansible/roles/containers/tasks/podman.jsonnet

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)