#!/usr/bin/env bash # source this file function get-requirements(){ uv sync --prerelease=if-necessary-or-explicit for req in roles/**/*/requirements.txt; do uv pip install --prerelease=allow --requirements $req; done for req in roles/**/*/requirements.yml; do ansible-galaxy install -r $req; done ansible-galaxy collection install -r requirements.yaml ansible-galaxy role install -r requirements.yaml } function unlock(){ export BW_SESSION=$(bw unlock --raw) || return 1 echo $BW_SESSION > /tmp/urmel_ansible_bw_session } function pull-services(){ local pull_all=false while getopts "a" opt; do case $opt in a) pull_all=true ;; *) ;; esac done shift $((OPTIND -1)) local services=() if [ "$pull_all" = true ]; then services=($(find roles/)) else services=($(cat config.ini | grep "services" | cut -d= -f2- | tr ',' ' ')) fi for service in "${services[@]}"; do echo "Pulling $service" git -C roles/$service pull done } function create-role-here(){ mkdir defaults files libary tasks templates meta handlers rolename=$(pwd | rev | cut -d "/" -f 1 | rev) echo "# $rolename" > README.md cat < tasks/main.yml --- - name: "set local variables from overrides and defaults" set_fact: ${rolename}: "{{ (${rolename}_defaults | combine(${rolename}_override, recursive=True)) if ${rolename}_override else ${rolename}_defaults }}" EOF cat < defaults/main.yml path: /srv/{{ role_name }} ${rolename}_override: {} ${rolename}_defaults: {} EOF cat < meta/main.yml --- galaxy_info: author: "Niklas Freese " description: ${rolename} company: "Urmel Services" license: AGPL-3.0-or-later min_ansible_version: 2.1 # If this a Container Enabled role, provide the minimum Ansible Container version. # min_ansible_container_version: galaxy_tags: [] # List tags for your role here, one per line. A tag is a keyword that describes # and categorizes the role. Users find roles by searching for tags. Be sure to # remove the '[]' above, if you add tags to this list. # # NOTE: A tag is limited to a single word comprised of alphanumeric characters. # Maximum 20 tags per role. dependencies: - role: base EOF cat < handlers/main.yml - name: restart container community.docker.docker_compose_v2: project_src: "{{ path }}" project_name: "{{ role_name }}" recreate: "always" services: ["${rolename}"] state: "restarted" when: not _${rolename}_already_restarted EOF }