Compare commits

...

5 commits

Author SHA1 Message Date
ProgramSnail
94111b0a4b init distro (host) setup playbook 2025-08-08 22:27:09 +03:00
ProgramSnail
0605fda37e distrobox container host setup playbook 2025-08-08 22:26:14 +03:00
ProgramSnail
f7a6f59fc6 separate install and dev roles, box basic playbook 2025-08-08 21:41:02 +03:00
ProgramSnail
58966f9e4a add nano 2025-08-08 15:14:04 +03:00
ProgramSnail
ea4409c58b add shellcheck 2025-08-08 14:59:55 +03:00
14 changed files with 143 additions and 12 deletions

15
defaults.yml Normal file
View file

@ -0,0 +1,15 @@
# containers during host setup
container_names:
- dev
- txt
- haskell
# containers tool groups
container_tools:
dev:
- cpp
- js
txt:
- txt
haskell:
- haskell

View file

@ -1 +1,30 @@
- name: Configure distrobox dev container
hosts: localhost
connection: local
vars:
vars_prompt:
- name: tools_in
prompt: "Specify comma separated list of required tool packages (cpp, js, haskell, txt, lang)"
roles:
# link and copy dotfiles
- role: dotfiles
vars:
configue:
- bash
- cli
- git
- ssh
- scripts
# install apps
- role: installs
vars:
apps:
- cli
# install and setup dev tools
- role: dev
vars:
tools: "{{ tools_in.split(',') }}"
# TODO: repositories

View file

@ -1 +1,38 @@
- name: Create distrobox containers on host
hosts: localhost
connection: local
vars:
tasks:
- name: Create containers
include_role:
name: dev_host
vars:
container_name: '{{ item }}'
loop: '{{ container_names }}'
- name: Setup containers
hosts: containers
roles:
# link and copy dotfiles
- role: dotfiles
vars:
configue:
- bash
- cli
- git
- ssh
- scripts
# install apps
- role: installs
vars:
apps:
- cli
# install and setup dev tools
- role: dev
vars:
tools: "{{ container_tools['{{item}}'] }}"
# TODO: repositories

18
roles/dev/tasks/main.yml Normal file
View file

@ -0,0 +1,18 @@
- ansible.builtin.import_tasks: build.yml
- ansible.builtin.import_tasks: cpp.yml
when: "'cpp' in tools"
- ansible.builtin.import_tasks: js.yml
when: "'js' in tools"
- ansible.builtin.import_tasks: haskell.yml
when: "'haskell' in tools"
- ansible.builtin.import_tasks: txt.yml
when: "'txt' in tools"
- ansible.builtin.import_tasks: lang.yml
when: "'lang' in tools"
# TODO: ocaml, truffle, ...

View file

@ -0,0 +1,3 @@
container_name: dev
container_image: quay.io/fedora/fedora-toolbox
container_image_tag: latest

View file

@ -0,0 +1,37 @@
# os based on https://github.com/sandorex/config/blob/master/playbooks/container-dev.yml
- name: Check if container already exists
containers.podman.podman_container_info:
name: '{{ container_name }}'
register: container_info
- name: Create container using distrobox
ansible.builtin.command:
# requires distrobox version 1.7
# add python3 to allow ansible to work
# add ansible to run local roles without host (?)
cmd: >-
distrobox create --yes --no-entry --pull
--image '{{ container_image }}:{{ container_image_tag }}'
--name '{{ container_name }}'
--hostname '{{ ansible_hostname }}'
--additional-packages 'python3 ansible'
when: container_info.containers | length == 0
- name: Start the container
ansible.builtin.command:
cmd: 'distrobox enter --name {{ container_name }} -- sh -c ''exit'''
# start if not running or if not defined
when: not (container_info.containers[0].State.Running | default(false))
- name: Add container to host
changed_when: no
ansible.builtin.add_host:
name: '{{ container_name }}' # ??
groups: containers
ansible_connection: distrobox
ansible_host: '{{ container_name }}'
ansible_user: '{{ ansible_user_id }}'
fedora_version: '{{ container_image_tag }}' # ??
# container setup is done outside (?)

View file

@ -5,12 +5,16 @@
- bash
- fish
- trash-cli
# dev utils
- just
- jsonnet
- shellcheck
# edit utils
- helix
- micro
- nano
- tmux
- tmate
- ripgrep

View file

@ -1,18 +1,6 @@
- ansible.builtin.import_tasks: build.yml
when: "'build' in apps"
- ansible.builtin.import_tasks: cli.yml
when: "'cli' in apps"
- ansible.builtin.import_tasks: cpp.yml
when: "'cpp' in apps"
- ansible.builtin.import_tasks: lang.yml
when: "'lang' in apps"
- ansible.builtin.import_tasks: javascript.yml
when: "'javascript' in apps"
- ansible.builtin.import_tasks: gui.yml
when: "'gui' in apps"