diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml deleted file mode 100644 index ff7a5dc..0000000 --- a/.github/workflows/build-and-push-images.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build and Push Images - -on: - push: - tags: - - "*" - branches: - - master - pull_request: - branches: - - master - -env: - REGISTRY: ghcr.io - IMAGE_NAME: start-portainer-stack - -jobs: - build-and-push-image: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - - name: Log in to the Container registry - uses: docker/login-action@49ed152c8eca782a232dede0303416e8f356c37b - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@69f6fc9d46f2f8bf0d5491e4aabe0bb8c6a4678a - with: - images: ${{ env.REGISTRY }}/chatton/${{ env.IMAGE_NAME }} - - - name: Build and push Docker image - uses: docker/build-push-action@e551b19e49efd4e98792db7592c17c09b89db8d8 - with: - context: scripts/portainer - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 1690bfc..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Test Playbook -on: - pull_request: - push: - branches: - - "master" - -jobs: - homelab-test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 -# - name: "pull image" -# run: docker pull geerlingguy/docker-debian10-ansible:latest -# - name: Molecule -# uses: gofrolist/molecule-action@v2 -# with: -# molecule_command: test -# molecule_working_dir: ansible/roles/setup_docker -# env: -# ANSIBLE_FORCE_COLOR: '1' -# PY_COLORS: "1" diff --git a/_ansible/homelab/hosts b/.old/homelab/hosts similarity index 100% rename from _ansible/homelab/hosts rename to .old/homelab/hosts diff --git a/_ansible/homelab/playbooks/mount-hdds.yml b/.old/homelab/playbooks/mount-hdds.yml similarity index 100% rename from _ansible/homelab/playbooks/mount-hdds.yml rename to .old/homelab/playbooks/mount-hdds.yml diff --git a/_ansible/homelab/playbooks/redeploy-dashy.yml b/.old/homelab/playbooks/redeploy-dashy.yml similarity index 100% rename from _ansible/homelab/playbooks/redeploy-dashy.yml rename to .old/homelab/playbooks/redeploy-dashy.yml diff --git a/_ansible/homelab/playbooks/restore-all.yml b/.old/homelab/playbooks/restore-all.yml similarity index 100% rename from _ansible/homelab/playbooks/restore-all.yml rename to .old/homelab/playbooks/restore-all.yml diff --git a/_ansible/homelab/playbooks/setup-home-lab.yml b/.old/homelab/playbooks/setup-home-lab.yml similarity index 100% rename from _ansible/homelab/playbooks/setup-home-lab.yml rename to .old/homelab/playbooks/setup-home-lab.yml diff --git a/_ansible/homelab/playbooks/volume-restore.yml b/.old/homelab/playbooks/volume-restore.yml similarity index 100% rename from _ansible/homelab/playbooks/volume-restore.yml rename to .old/homelab/playbooks/volume-restore.yml diff --git a/_ansible/homelab/tasks/checkout-git-repos-tasks.yml b/.old/homelab/tasks/checkout-git-repos-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/checkout-git-repos-tasks.yml rename to .old/homelab/tasks/checkout-git-repos-tasks.yml diff --git a/_ansible/homelab/tasks/create-stack-tasks.yml b/.old/homelab/tasks/create-stack-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/create-stack-tasks.yml rename to .old/homelab/tasks/create-stack-tasks.yml diff --git a/_ansible/homelab/tasks/install-dev-tooling-tasks.yml b/.old/homelab/tasks/install-dev-tooling-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/install-dev-tooling-tasks.yml rename to .old/homelab/tasks/install-dev-tooling-tasks.yml diff --git a/_ansible/homelab/tasks/install-docker-tasks.yml b/.old/homelab/tasks/install-docker-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/install-docker-tasks.yml rename to .old/homelab/tasks/install-docker-tasks.yml diff --git a/_ansible/homelab/tasks/install-sudo-tasks.yml b/.old/homelab/tasks/install-sudo-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/install-sudo-tasks.yml rename to .old/homelab/tasks/install-sudo-tasks.yml diff --git a/_ansible/homelab/tasks/restore-volume-tasks.yml b/.old/homelab/tasks/restore-volume-tasks.yml similarity index 100% rename from _ansible/homelab/tasks/restore-volume-tasks.yml rename to .old/homelab/tasks/restore-volume-tasks.yml diff --git a/_ansible/homelab/variables.yml b/.old/homelab/variables.yml similarity index 100% rename from _ansible/homelab/variables.yml rename to .old/homelab/variables.yml diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index bebc398..0000000 --- a/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM debian - -# Install prerequisities for Ansible -RUN apt-get update -RUN apt-get -y install python3 python3-nacl python3-pip libffi-dev - -# Install ansible -RUN pip3 install ansible - -# Copy your ansible configuration into the image -ADD ansible /ansible -COPY ansible/homelab/hosts /etc/ansible/hosts - -CMD [ "ansible-playbook", "/ansible/homelab/playbooks/setup-home-lab.yml", "-v","--connection", "local", "--skip-tags", "skip-e2e"] diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..8c71928 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,3 @@ +[defaults] +default_module_path=library +inventory=hosts.ini diff --git a/ansible/ansible.cfg b/ansible/ansible.cfg deleted file mode 100644 index b7d35ca..0000000 --- a/ansible/ansible.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[defaults] -default_module_path=ansible/library -inventory=hosts.ini diff --git a/cmd/portainer/portainer.go b/cmd/portainer/portainer.go deleted file mode 100644 index 2967710..0000000 --- a/cmd/portainer/portainer.go +++ /dev/null @@ -1,25 +0,0 @@ -package portainer - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -var ( - countFlagNumbers int - rangeFlagNumbers []string -) -var NumbersCmd = &cobra.Command{ - Use: "numbers", - Short: "Returns random numbers", - Run: func(cmd *cobra.Command, args []string) { - fmt.Println("numbers mode") - fmt.Println("--count:", countFlagNumbers) - fmt.Println("--range:", rangeFlagNumbers) - }, -} - -func NewPortainerCommand() *cobra.Command { - return nil -} diff --git a/cmd/root.go b/cmd/root.go deleted file mode 100644 index 6d796fe..0000000 --- a/cmd/root.go +++ /dev/null @@ -1,26 +0,0 @@ -package cmd - -import ( - "fmt" - "os" - - "github.com/chatton/homelab/cmd/portainer" - "github.com/spf13/cobra" -) - -func init() { - rootCmd.AddCommand(portainer.NewPortainerCommand()) -} - -var rootCmd = &cobra.Command{ - Use: "randx", - Version: "1.0.1", - Short: "Returns random numbers or letters.", -} - -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} diff --git a/docker-compose/audiobookshelf/docker-compose.yml b/docker-compose/audiobookshelf/docker-compose.yml deleted file mode 100644 index e9b9e2d..0000000 --- a/docker-compose/audiobookshelf/docker-compose.yml +++ /dev/null @@ -1,18 +0,0 @@ -services: - audiobookshelf: - container_name: audiobookshelf - image: ghcr.io/advplyr/audiobookshelf:latest - environment: - - AUDIOBOOKSHELF_UID=99 - - AUDIOBOOKSHELF_GID=100 - ports: - - 13378:80 - volumes: - - ${AUDIO_BOOKS_DIRECTORY}:/audiobooks - - ${PODCASTS_DIRECTORY}:/podcasts - - config:/config - - metadata:/metadata -volumes: - config: - metadata: - diff --git a/docker-compose/bitwarden/docker-compose.yml b/docker-compose/bitwarden/docker-compose.yml deleted file mode 100644 index 7342d2d..0000000 --- a/docker-compose/bitwarden/docker-compose.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: '3' -services: - bitwarden: - image: bitwardenrs/server - restart: always - ports: - - 80:80 - volumes: - - data:/data - environment: - WEBSOCKET_ENABLED: 'true' # Required to use websockets - SIGNUPS_ALLOWED: 'false' # set to false to disable signups -volumes: - data: \ No newline at end of file diff --git a/docker-compose/dashy/dashy-config.yml b/docker-compose/dashy/dashy-config.yml deleted file mode 100644 index c1822bd..0000000 --- a/docker-compose/dashy/dashy-config.yml +++ /dev/null @@ -1,90 +0,0 @@ -# Details about config. -# https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10 -# https://github.com/Lissy93/dashy/blob/master/docs/configuring.md -# Widgets: https://github.com/Lissy93/dashy/blob/master/docs/widgets.md ---- -pageInfo: - title: Home Lab -sections: - - name: Dashboards - widgets: - - type: gl-disk-space - options: - hostname: http://qnap:8083 - items: - - title: Dash Dot - icon: hl-dashdot - url: "http://qnap:3010" - - title: Uptime Kuma - icon: hl-uptime-kuma - url: "http://qnap:3001" - - title: Tautulli - icon: hl-tautulli - url: "http://qnap:8182" - - title: Glances - icon: hl-glances - url: "http://qnap:8083" - - name: Media Stack - items: - - title: Plex - icon: hl-plex - url: "http://qnap:32400" - statusCheck: false - - title: Sonarr - icon: hl-sonarr - url: "http://qnap:8989" - - title: Radarr - icon: hl-radarr - url: "http://qnap:7878" - - title: Overseerr - icon: hl-overseerr - url: "http://qnap:5055" - - title: Jackett - icon: hl-jackett - url: "http://qnap:9117" - statusCheckUrl: "http://qnap:9117/health" - - title: Qbittorrent - icon: hl-qbittorrent - url: "http://qnap:15000" - - name: Tools - items: - - title: Photoprism - description: Manager photos - icon: hl-photoprism - url: "http://qnap:2342" - - title: Linkding - description: Manager photos - icon: hl-linkding - url: "http://qnap:9090" - - title: Nextcloud - icon: hl-nextcloud - url: "http://qnap:8081" - - title: Mealie - icon: hl-mealie - url: "https://mealie.cianhatton.ie" - - title: Gitea - icon: hl-gitea - url: "https://git.cianhatton.ie" - - name: System Admin - items: - - title: Portainer - description: Manage docker apps using Portainer - icon: hl-portainer - url: "http://qnap:9000" - - title: Webmin - icon: hl-webmin - url: "http://qnap:10000" - - title: Adminer - description: Manage MariaDB - icon: hl-adminer - url: "http://qnap:3307" - - title: Nginx Proxy Manager - description: Manage reverse proxies - icon: hl-nginx - url: "http://qnap:8181" - -appConfig: - statusCheck: true - showSplashScreen: false - theme: dracula - language: en \ No newline at end of file diff --git a/docker-compose/dashy/docker-compose.yml b/docker-compose/dashy/docker-compose.yml deleted file mode 100644 index 78829c1..0000000 --- a/docker-compose/dashy/docker-compose.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: '3.5' -services: - dashy: - # https://github.com/Lissy93/dashy - container_name: dashy - image: lissy93/dashy - volumes: - - ./dashy-config.yml:/app/public/conf.yml - ports: - - 80:80 - environment: - - NODE_ENV=production - - UID=1000 - - GID=1000 - restart: always - # Configure healthchecks - healthcheck: - test: ['CMD', 'node', '/app/services/healthcheck'] - interval: 1m30s - timeout: 10s - retries: 3 - start_period: 40s diff --git a/docker-compose/mariadb/docker-compose.yml b/docker-compose/mariadb/docker-compose.yml deleted file mode 100644 index 220296a..0000000 --- a/docker-compose/mariadb/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3.1' -services: - db: - container_name: MariaDB - image: mariadb - restart: always - # default: 3306:3306 - ports: - - ${HOST_PORT}:3306 - volumes: - - data:/var/lib/mysql - - config:/etc/mysql/conf.d -volumes: - data: - config: \ No newline at end of file diff --git a/docker-compose/portainer/docker-compose.yml b/docker-compose/portainer/docker-compose.yml deleted file mode 100644 index ac11ea1..0000000 --- a/docker-compose/portainer/docker-compose.yml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3.2' -services: - portainer: - labels: - ie.cianhatton.backup.enabled: "true" - image: portainer/portainer-ce - container_name: "portainer" - ports: - - "9000:9000" - volumes: - - portainer_data:/data - - /var/run/docker.sock:/var/run/docker.sock - -volumes: - portainer_data: diff --git a/go.mod b/go.mod deleted file mode 100644 index 09b0662..0000000 --- a/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/chatton/homelab - -go 1.18 - -require github.com/spf13/cobra v1.5.0 - -require ( - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect -) diff --git a/ansible/hosts.ini b/hosts.ini similarity index 100% rename from ansible/hosts.ini rename to hosts.ini diff --git a/ansible/library/portainer.py b/library/portainer.py similarity index 100% rename from ansible/library/portainer.py rename to library/portainer.py diff --git a/main.go b/main.go deleted file mode 100644 index f05c023..0000000 --- a/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/chatton/homelab/cmd" - -func main() { - cmd.Execute() -} diff --git a/ansible/roles/setup_docker/.travis.yml b/roles/setup_docker/.travis.yml similarity index 100% rename from ansible/roles/setup_docker/.travis.yml rename to roles/setup_docker/.travis.yml diff --git a/ansible/roles/setup_docker/.yamllint b/roles/setup_docker/.yamllint similarity index 100% rename from ansible/roles/setup_docker/.yamllint rename to roles/setup_docker/.yamllint diff --git a/ansible/roles/setup_docker/README.md b/roles/setup_docker/README.md similarity index 100% rename from ansible/roles/setup_docker/README.md rename to roles/setup_docker/README.md diff --git a/ansible/roles/setup_docker/defaults/main.yml b/roles/setup_docker/defaults/main.yml similarity index 100% rename from ansible/roles/setup_docker/defaults/main.yml rename to roles/setup_docker/defaults/main.yml diff --git a/ansible/roles/setup_docker/handlers/main.yml b/roles/setup_docker/handlers/main.yml similarity index 100% rename from ansible/roles/setup_docker/handlers/main.yml rename to roles/setup_docker/handlers/main.yml diff --git a/ansible/roles/setup_docker/meta/main.yml b/roles/setup_docker/meta/main.yml similarity index 100% rename from ansible/roles/setup_docker/meta/main.yml rename to roles/setup_docker/meta/main.yml diff --git a/ansible/roles/setup_docker/molecule/default/converge.yml b/roles/setup_docker/molecule/default/converge.yml similarity index 100% rename from ansible/roles/setup_docker/molecule/default/converge.yml rename to roles/setup_docker/molecule/default/converge.yml diff --git a/ansible/roles/setup_docker/molecule/default/molecule.yml b/roles/setup_docker/molecule/default/molecule.yml similarity index 100% rename from ansible/roles/setup_docker/molecule/default/molecule.yml rename to roles/setup_docker/molecule/default/molecule.yml diff --git a/ansible/roles/setup_docker/molecule/default/verify.yml b/roles/setup_docker/molecule/default/verify.yml similarity index 100% rename from ansible/roles/setup_docker/molecule/default/verify.yml rename to roles/setup_docker/molecule/default/verify.yml diff --git a/ansible/roles/setup_docker/tasks/main.yml b/roles/setup_docker/tasks/main.yml similarity index 100% rename from ansible/roles/setup_docker/tasks/main.yml rename to roles/setup_docker/tasks/main.yml diff --git a/ansible/roles/setup_docker/tests/inventory b/roles/setup_docker/tests/inventory similarity index 100% rename from ansible/roles/setup_docker/tests/inventory rename to roles/setup_docker/tests/inventory diff --git a/ansible/roles/setup_docker/tests/test.yml b/roles/setup_docker/tests/test.yml similarity index 100% rename from ansible/roles/setup_docker/tests/test.yml rename to roles/setup_docker/tests/test.yml diff --git a/ansible/roles/setup_docker/vars/main.yml b/roles/setup_docker/vars/main.yml similarity index 100% rename from ansible/roles/setup_docker/vars/main.yml rename to roles/setup_docker/vars/main.yml diff --git a/ansible/roles/setup_hosted_services/.yamllint b/roles/setup_hosted_services/.yamllint similarity index 100% rename from ansible/roles/setup_hosted_services/.yamllint rename to roles/setup_hosted_services/.yamllint diff --git a/ansible/roles/setup_hosted_services/README.md b/roles/setup_hosted_services/README.md similarity index 100% rename from ansible/roles/setup_hosted_services/README.md rename to roles/setup_hosted_services/README.md diff --git a/ansible/roles/setup_hosted_services/defaults/main.yml b/roles/setup_hosted_services/defaults/main.yml similarity index 100% rename from ansible/roles/setup_hosted_services/defaults/main.yml rename to roles/setup_hosted_services/defaults/main.yml diff --git a/ansible/roles/setup_hosted_services/files/dashboards/dashy-config.yml b/roles/setup_hosted_services/files/dashboards/dashy-config.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/dashboards/dashy-config.yml rename to roles/setup_hosted_services/files/dashboards/dashy-config.yml diff --git a/ansible/roles/setup_hosted_services/files/dashboards/docker-compose.yml b/roles/setup_hosted_services/files/dashboards/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/dashboards/docker-compose.yml rename to roles/setup_hosted_services/files/dashboards/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/docker-volume-backup/docker-compose.yml b/roles/setup_hosted_services/files/docker-volume-backup/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/docker-volume-backup/docker-compose.yml rename to roles/setup_hosted_services/files/docker-volume-backup/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/gitea/docker-compose.yml b/roles/setup_hosted_services/files/gitea/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/gitea/docker-compose.yml rename to roles/setup_hosted_services/files/gitea/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/linkding/docker-compose.yml b/roles/setup_hosted_services/files/linkding/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/linkding/docker-compose.yml rename to roles/setup_hosted_services/files/linkding/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/mariadb/docker-compose.yml b/roles/setup_hosted_services/files/mariadb/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/mariadb/docker-compose.yml rename to roles/setup_hosted_services/files/mariadb/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/mealie/docker-compose.yml b/roles/setup_hosted_services/files/mealie/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/mealie/docker-compose.yml rename to roles/setup_hosted_services/files/mealie/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/nextcloud/docker-compose.yml b/roles/setup_hosted_services/files/nextcloud/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/nextcloud/docker-compose.yml rename to roles/setup_hosted_services/files/nextcloud/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/nginx-proxy-manager/docker-compose.yml b/roles/setup_hosted_services/files/nginx-proxy-manager/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/nginx-proxy-manager/docker-compose.yml rename to roles/setup_hosted_services/files/nginx-proxy-manager/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/olivetin/config.yml b/roles/setup_hosted_services/files/olivetin/config.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/olivetin/config.yml rename to roles/setup_hosted_services/files/olivetin/config.yml diff --git a/ansible/roles/setup_hosted_services/files/olivetin/docker-compose.yml b/roles/setup_hosted_services/files/olivetin/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/olivetin/docker-compose.yml rename to roles/setup_hosted_services/files/olivetin/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/overseerr/docker-compose.yml b/roles/setup_hosted_services/files/overseerr/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/overseerr/docker-compose.yml rename to roles/setup_hosted_services/files/overseerr/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/photoprism/docker-compose.yml b/roles/setup_hosted_services/files/photoprism/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/photoprism/docker-compose.yml rename to roles/setup_hosted_services/files/photoprism/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/plex/docker-compose.yml b/roles/setup_hosted_services/files/plex/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/plex/docker-compose.yml rename to roles/setup_hosted_services/files/plex/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py b/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py similarity index 100% rename from ansible/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py rename to roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py diff --git a/ansible/roles/setup_hosted_services/files/uptime-kuma/docker-compose.yml b/roles/setup_hosted_services/files/uptime-kuma/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/uptime-kuma/docker-compose.yml rename to roles/setup_hosted_services/files/uptime-kuma/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/files/vpn-stack/docker-compose.yml b/roles/setup_hosted_services/files/vpn-stack/docker-compose.yml similarity index 100% rename from ansible/roles/setup_hosted_services/files/vpn-stack/docker-compose.yml rename to roles/setup_hosted_services/files/vpn-stack/docker-compose.yml diff --git a/ansible/roles/setup_hosted_services/handlers/main.yml b/roles/setup_hosted_services/handlers/main.yml similarity index 100% rename from ansible/roles/setup_hosted_services/handlers/main.yml rename to roles/setup_hosted_services/handlers/main.yml diff --git a/ansible/roles/setup_hosted_services/meta/main.yml b/roles/setup_hosted_services/meta/main.yml similarity index 100% rename from ansible/roles/setup_hosted_services/meta/main.yml rename to roles/setup_hosted_services/meta/main.yml diff --git a/ansible/roles/setup_hosted_services/molecule/default/converge.yml b/roles/setup_hosted_services/molecule/default/converge.yml similarity index 100% rename from ansible/roles/setup_hosted_services/molecule/default/converge.yml rename to roles/setup_hosted_services/molecule/default/converge.yml diff --git a/ansible/roles/setup_hosted_services/molecule/default/molecule.yml b/roles/setup_hosted_services/molecule/default/molecule.yml similarity index 100% rename from ansible/roles/setup_hosted_services/molecule/default/molecule.yml rename to roles/setup_hosted_services/molecule/default/molecule.yml diff --git a/ansible/roles/setup_hosted_services/molecule/default/verify.yml b/roles/setup_hosted_services/molecule/default/verify.yml similarity index 100% rename from ansible/roles/setup_hosted_services/molecule/default/verify.yml rename to roles/setup_hosted_services/molecule/default/verify.yml diff --git a/ansible/roles/setup_hosted_services/tasks/main.yml b/roles/setup_hosted_services/tasks/main.yml similarity index 100% rename from ansible/roles/setup_hosted_services/tasks/main.yml rename to roles/setup_hosted_services/tasks/main.yml diff --git a/ansible/roles/setup_hosted_services/tests/inventory b/roles/setup_hosted_services/tests/inventory similarity index 100% rename from ansible/roles/setup_hosted_services/tests/inventory rename to roles/setup_hosted_services/tests/inventory diff --git a/ansible/roles/setup_hosted_services/tests/test.yml b/roles/setup_hosted_services/tests/test.yml similarity index 100% rename from ansible/roles/setup_hosted_services/tests/test.yml rename to roles/setup_hosted_services/tests/test.yml diff --git a/ansible/roles/setup_hosted_services/vars/main.yml b/roles/setup_hosted_services/vars/main.yml similarity index 100% rename from ansible/roles/setup_hosted_services/vars/main.yml rename to roles/setup_hosted_services/vars/main.yml diff --git a/ansible/roles/setup_portainer/.yamllint b/roles/setup_portainer/.yamllint similarity index 100% rename from ansible/roles/setup_portainer/.yamllint rename to roles/setup_portainer/.yamllint diff --git a/ansible/roles/setup_portainer/README.md b/roles/setup_portainer/README.md similarity index 100% rename from ansible/roles/setup_portainer/README.md rename to roles/setup_portainer/README.md diff --git a/ansible/roles/setup_portainer/defaults/main.yml b/roles/setup_portainer/defaults/main.yml similarity index 100% rename from ansible/roles/setup_portainer/defaults/main.yml rename to roles/setup_portainer/defaults/main.yml diff --git a/ansible/roles/setup_portainer/files/chain-b-logs.txt b/roles/setup_portainer/files/chain-b-logs.txt similarity index 100% rename from ansible/roles/setup_portainer/files/chain-b-logs.txt rename to roles/setup_portainer/files/chain-b-logs.txt diff --git a/ansible/roles/setup_portainer/files/docker-compose.yml b/roles/setup_portainer/files/docker-compose.yml similarity index 100% rename from ansible/roles/setup_portainer/files/docker-compose.yml rename to roles/setup_portainer/files/docker-compose.yml diff --git a/ansible/roles/setup_portainer/files/file.txt b/roles/setup_portainer/files/file.txt similarity index 100% rename from ansible/roles/setup_portainer/files/file.txt rename to roles/setup_portainer/files/file.txt diff --git a/ansible/roles/setup_portainer/handlers/main.yml b/roles/setup_portainer/handlers/main.yml similarity index 100% rename from ansible/roles/setup_portainer/handlers/main.yml rename to roles/setup_portainer/handlers/main.yml diff --git a/ansible/roles/setup_portainer/meta/main.yml b/roles/setup_portainer/meta/main.yml similarity index 100% rename from ansible/roles/setup_portainer/meta/main.yml rename to roles/setup_portainer/meta/main.yml diff --git a/ansible/roles/setup_portainer/molecule/default/converge.yml b/roles/setup_portainer/molecule/default/converge.yml similarity index 100% rename from ansible/roles/setup_portainer/molecule/default/converge.yml rename to roles/setup_portainer/molecule/default/converge.yml diff --git a/ansible/roles/setup_portainer/molecule/default/molecule.yml b/roles/setup_portainer/molecule/default/molecule.yml similarity index 100% rename from ansible/roles/setup_portainer/molecule/default/molecule.yml rename to roles/setup_portainer/molecule/default/molecule.yml diff --git a/ansible/roles/setup_portainer/molecule/default/verify.yml b/roles/setup_portainer/molecule/default/verify.yml similarity index 100% rename from ansible/roles/setup_portainer/molecule/default/verify.yml rename to roles/setup_portainer/molecule/default/verify.yml diff --git a/ansible/roles/setup_portainer/tasks/main.yml b/roles/setup_portainer/tasks/main.yml similarity index 100% rename from ansible/roles/setup_portainer/tasks/main.yml rename to roles/setup_portainer/tasks/main.yml diff --git a/ansible/roles/setup_portainer/tests/inventory b/roles/setup_portainer/tests/inventory similarity index 100% rename from ansible/roles/setup_portainer/tests/inventory rename to roles/setup_portainer/tests/inventory diff --git a/ansible/roles/setup_portainer/tests/test.yml b/roles/setup_portainer/tests/test.yml similarity index 100% rename from ansible/roles/setup_portainer/tests/test.yml rename to roles/setup_portainer/tests/test.yml diff --git a/ansible/roles/setup_portainer/vars/main.yml b/roles/setup_portainer/vars/main.yml similarity index 100% rename from ansible/roles/setup_portainer/vars/main.yml rename to roles/setup_portainer/vars/main.yml diff --git a/ansible/roles/setup_samba/.yamllint b/roles/setup_samba/.yamllint similarity index 100% rename from ansible/roles/setup_samba/.yamllint rename to roles/setup_samba/.yamllint diff --git a/ansible/roles/setup_samba/README.md b/roles/setup_samba/README.md similarity index 100% rename from ansible/roles/setup_samba/README.md rename to roles/setup_samba/README.md diff --git a/ansible/roles/setup_samba/defaults/main.yml b/roles/setup_samba/defaults/main.yml similarity index 100% rename from ansible/roles/setup_samba/defaults/main.yml rename to roles/setup_samba/defaults/main.yml diff --git a/ansible/roles/setup_samba/files/shares.conf b/roles/setup_samba/files/shares.conf similarity index 100% rename from ansible/roles/setup_samba/files/shares.conf rename to roles/setup_samba/files/shares.conf diff --git a/ansible/roles/setup_samba/files/smb.conf b/roles/setup_samba/files/smb.conf similarity index 100% rename from ansible/roles/setup_samba/files/smb.conf rename to roles/setup_samba/files/smb.conf diff --git a/ansible/roles/setup_samba/handlers/main.yml b/roles/setup_samba/handlers/main.yml similarity index 100% rename from ansible/roles/setup_samba/handlers/main.yml rename to roles/setup_samba/handlers/main.yml diff --git a/ansible/roles/setup_samba/meta/main.yml b/roles/setup_samba/meta/main.yml similarity index 100% rename from ansible/roles/setup_samba/meta/main.yml rename to roles/setup_samba/meta/main.yml diff --git a/ansible/roles/setup_samba/molecule/default/converge.yml b/roles/setup_samba/molecule/default/converge.yml similarity index 100% rename from ansible/roles/setup_samba/molecule/default/converge.yml rename to roles/setup_samba/molecule/default/converge.yml diff --git a/ansible/roles/setup_samba/molecule/default/molecule.yml b/roles/setup_samba/molecule/default/molecule.yml similarity index 100% rename from ansible/roles/setup_samba/molecule/default/molecule.yml rename to roles/setup_samba/molecule/default/molecule.yml diff --git a/ansible/roles/setup_samba/molecule/default/verify.yml b/roles/setup_samba/molecule/default/verify.yml similarity index 100% rename from ansible/roles/setup_samba/molecule/default/verify.yml rename to roles/setup_samba/molecule/default/verify.yml diff --git a/ansible/roles/setup_samba/tasks/main.yml b/roles/setup_samba/tasks/main.yml similarity index 100% rename from ansible/roles/setup_samba/tasks/main.yml rename to roles/setup_samba/tasks/main.yml diff --git a/ansible/roles/setup_samba/tests/inventory b/roles/setup_samba/tests/inventory similarity index 100% rename from ansible/roles/setup_samba/tests/inventory rename to roles/setup_samba/tests/inventory diff --git a/ansible/roles/setup_samba/tests/test.yml b/roles/setup_samba/tests/test.yml similarity index 100% rename from ansible/roles/setup_samba/tests/test.yml rename to roles/setup_samba/tests/test.yml diff --git a/ansible/roles/setup_samba/vars/main.yml b/roles/setup_samba/vars/main.yml similarity index 100% rename from ansible/roles/setup_samba/vars/main.yml rename to roles/setup_samba/vars/main.yml diff --git a/ansible/roles/setup_users/.yamllint b/roles/setup_users/.yamllint similarity index 100% rename from ansible/roles/setup_users/.yamllint rename to roles/setup_users/.yamllint diff --git a/ansible/roles/setup_users/README.md b/roles/setup_users/README.md similarity index 100% rename from ansible/roles/setup_users/README.md rename to roles/setup_users/README.md diff --git a/ansible/roles/setup_users/defaults/main.yml b/roles/setup_users/defaults/main.yml similarity index 100% rename from ansible/roles/setup_users/defaults/main.yml rename to roles/setup_users/defaults/main.yml diff --git a/ansible/roles/setup_users/handlers/main.yml b/roles/setup_users/handlers/main.yml similarity index 100% rename from ansible/roles/setup_users/handlers/main.yml rename to roles/setup_users/handlers/main.yml diff --git a/ansible/roles/setup_users/meta/main.yml b/roles/setup_users/meta/main.yml similarity index 100% rename from ansible/roles/setup_users/meta/main.yml rename to roles/setup_users/meta/main.yml diff --git a/ansible/roles/setup_users/molecule/default/converge.yml b/roles/setup_users/molecule/default/converge.yml similarity index 100% rename from ansible/roles/setup_users/molecule/default/converge.yml rename to roles/setup_users/molecule/default/converge.yml diff --git a/ansible/roles/setup_users/molecule/default/molecule.yml b/roles/setup_users/molecule/default/molecule.yml similarity index 100% rename from ansible/roles/setup_users/molecule/default/molecule.yml rename to roles/setup_users/molecule/default/molecule.yml diff --git a/ansible/roles/setup_users/molecule/default/verify.yml b/roles/setup_users/molecule/default/verify.yml similarity index 100% rename from ansible/roles/setup_users/molecule/default/verify.yml rename to roles/setup_users/molecule/default/verify.yml diff --git a/ansible/roles/setup_users/tasks/main.yml b/roles/setup_users/tasks/main.yml similarity index 82% rename from ansible/roles/setup_users/tasks/main.yml rename to roles/setup_users/tasks/main.yml index fb1bf32..c2edd65 100644 --- a/ansible/roles/setup_users/tasks/main.yml +++ b/roles/setup_users/tasks/main.yml @@ -24,3 +24,9 @@ comment: "{{homelab_user}} user" uid: 1000 group: "{{homelab_group}}" + +- name: Set authorized key + authorized_key: + user: "{{homelab_user}}" + state: present + key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}" diff --git a/ansible/roles/setup_users/tests/inventory b/roles/setup_users/tests/inventory similarity index 100% rename from ansible/roles/setup_users/tests/inventory rename to roles/setup_users/tests/inventory diff --git a/ansible/roles/setup_users/tests/test.yml b/roles/setup_users/tests/test.yml similarity index 100% rename from ansible/roles/setup_users/tests/test.yml rename to roles/setup_users/tests/test.yml diff --git a/ansible/roles/setup_users/vars/main.yml b/roles/setup_users/vars/main.yml similarity index 100% rename from ansible/roles/setup_users/vars/main.yml rename to roles/setup_users/vars/main.yml diff --git a/scripts/configure-vm-host.sh b/scripts/configure-vm-host.sh deleted file mode 100755 index 2d9dc32..0000000 --- a/scripts/configure-vm-host.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -vm_ip="${1}" - -echo "Configuring new ip of: ${vm_ip}" - -# update hosts file directly - -rsync /Users/chatton/sync/Sync/backups/portainer_portainer_data-1-8-2022.tar.gz "root@${vm_ip}:/mnt/hdds/backups/" -rsync /Users/chatton/sync/Sync/backups/linkding_data-1-8-2022.tar.gz "root@${vm_ip}:/mnt/hdds/backups/" \ No newline at end of file diff --git a/scripts/portainer/Dockerfile b/scripts/portainer/Dockerfile deleted file mode 100644 index bd89af0..0000000 --- a/scripts/portainer/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ - -# Dockerfile References: https://docs.docker.com/engine/reference/builder/ - -# Start from the latest golang base image -FROM golang:latest as builder - - -# Set the Current Working Directory inside the container -WORKDIR /app - -# Copy the source from the current directory to the Working Directory inside the container -COPY . . - -# Build the Go app -RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main . - - -######## Start a new stage from scratch ####### -FROM alpine:latest - -RUN apk --no-cache add ca-certificates - -WORKDIR /root/ - -# Copy the Pre-built binary file from the previous stage -COPY --from=builder /app/main . - -# Command to run the executable -ENTRYPOINT ["./main"] \ No newline at end of file diff --git a/scripts/portainer/client/client.go b/scripts/portainer/client/client.go deleted file mode 100644 index c7df84a..0000000 --- a/scripts/portainer/client/client.go +++ /dev/null @@ -1,159 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "fmt" - "io/ioutil" - "net/http" -) - -// api docs -// https://app.swaggerhub.com/apis/portainer/portainer-ce/2.9.3 - -type PortainerClient struct { - authToken string - baseUrl string -} - -type Credentials struct { - Username string `json:"username"` - Password string `json:"password"` - BaseUrl string `json:"baseUrl"` -} - -func (c Credentials) IsValid() bool { - return c.Username != "" && c.Password != "" && c.BaseUrl != "" -} - -func NewPortainerClient(creds Credentials) (*PortainerClient, error) { - c := &PortainerClient{ - baseUrl: creds.BaseUrl, - } - return c, c.Login(creds.Username, creds.Password) -} - -func (c *PortainerClient) IsLoggedIn() bool { - return c.authToken != "" -} - -func (c *PortainerClient) Login(username, password string) error { - payload := map[string]string{"Username": username, "Password": password} - body, err := c.post("api/auth", payload) - if err != nil { - return err - } - type JwtToken struct { - Token string `json:"jwt"` - } - token := JwtToken{} - if err := json.Unmarshal(body, &token); err != nil { - return err - } - c.authToken = token.Token - return nil -} - -func (c *PortainerClient) GetAllStacks() ([]Stack, error) { - b, err := c.get("stacks") - if err != nil { - return nil, err - } - var stacks []Stack - if err := json.Unmarshal(b, &stacks); err != nil { - return nil, err - } - return stacks, nil -} - -func (c *PortainerClient) GetStackByName(name string) (*Stack, error) { - stacks, err := c.GetAllStacks() - if err != nil { - return nil, err - } - for _, s := range stacks { - if s.Name == name { - return &s, nil - } - } - return nil, nil -} - -type ResponseMessage struct { - Message string `json:"message"` - Details string `json:"details"` -} - -func (c *PortainerClient) StartStack(stackId int) (ResponseMessage, error) { - url := fmt.Sprintf("api/stacks/%d/start", stackId) - b, err := c.post(url, nil) - msg := ResponseMessage{} - if err := json.Unmarshal(b, &msg); err != nil { - return msg, err - } - return msg, err -} - -func (c *PortainerClient) StopStack(stackId int) (ResponseMessage, error) { - url := fmt.Sprintf("api/stacks/%d/stop", stackId) - b, err := c.post(url, nil) - msg := ResponseMessage{} - if err := json.Unmarshal(b, &msg); err != nil { - return msg, err - } - return msg, err -} - -func (c *PortainerClient) post(path string, payload interface{}) ([]byte, error) { - jsonBytes, err := json.Marshal(payload) - if err != nil { - return nil, err - } - url := fmt.Sprintf("%s/%s", c.baseUrl, path) - // Create a Bearer string by appending string access token - var bearer = "Bearer " + c.authToken - // Create a new request using http - req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBytes)) - - // add authorization header to the req - req.Header.Add("Authorization", bearer) - - // Send req using http Client - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - return body, nil -} - -func (c *PortainerClient) get(path string) ([]byte, error) { - url := fmt.Sprintf("%s/api/%s", c.baseUrl, path) - - // Create a Bearer string by appending string access token - var bearer = "Bearer " + c.authToken - // Create a new request using http - req, err := http.NewRequest("GET", url, nil) - - // add authorization header to the req - req.Header.Add("Authorization", bearer) - - // Send req using http Client - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - return body, nil -} diff --git a/scripts/portainer/client/types.go b/scripts/portainer/client/types.go deleted file mode 100644 index 3848c5e..0000000 --- a/scripts/portainer/client/types.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -type Stack struct { - ID int `json:"Id"` - Name string `json:"Name"` - Type int `json:"Type"` - EndpointID int `json:"EndpointId"` - SwarmID string `json:"SwarmId"` - EntryPoint string `json:"EntryPoint"` - Env []interface{} `json:"Env"` - ResourceControl struct { - ID int `json:"Id"` - ResourceID string `json:"ResourceId"` - SubResourceIds []interface{} `json:"SubResourceIds"` - Type int `json:"Type"` - UserAccesses []interface{} `json:"UserAccesses"` - TeamAccesses []interface{} `json:"TeamAccesses"` - Public bool `json:"Public"` - AdministratorsOnly bool `json:"AdministratorsOnly"` - System bool `json:"System"` - } `json:"ResourceControl"` - Status int `json:"Status"` - ProjectPath string `json:"ProjectPath"` - CreationDate int `json:"CreationDate"` - CreatedBy string `json:"CreatedBy"` - UpdateDate int `json:"UpdateDate"` - UpdatedBy string `json:"UpdatedBy"` - AdditionalFiles interface{} `json:"AdditionalFiles"` - AutoUpdate interface{} `json:"AutoUpdate"` - GitConfig interface{} `json:"GitConfig"` - FromAppTemplate bool `json:"FromAppTemplate"` - Namespace string `json:"Namespace"` - IsComposeFormat bool `json:"IsComposeFormat"` -} diff --git a/scripts/portainer/go.mod b/scripts/portainer/go.mod deleted file mode 100644 index 007ae31..0000000 --- a/scripts/portainer/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/chatton/portainer - -go 1.18 diff --git a/scripts/portainer/main.go b/scripts/portainer/main.go deleted file mode 100644 index 5abe678..0000000 --- a/scripts/portainer/main.go +++ /dev/null @@ -1,113 +0,0 @@ -package main - -import ( - "encoding/json" - "errors" - "fmt" - "log" - "os" - "os/user" - "strings" - - "github.com/chatton/portainer/client" -) - -const ( - portainerUserNameEnv = "PORTAINER_USER_NAME" - portainerPasswordEnv = "PORTAINER_PASSWORD" - portainerBaseUrlEnv = "PORTAINER_BASE_URL" -) - -func loadCredsFromEnv() client.Credentials { - userName, _ := os.LookupEnv(portainerUserNameEnv) - password, _ := os.LookupEnv(portainerPasswordEnv) - baseUrl, _ := os.LookupEnv(portainerBaseUrlEnv) - return client.Credentials{ - Username: userName, - Password: password, - BaseUrl: baseUrl, - } -} - -func loadCreds() client.Credentials { - // look for env vars first - creds := loadCredsFromEnv() - if creds.IsValid() { - return creds - } - // fallback to file - return loadCredsFromFile() -} - -func loadCredsFromFile() client.Credentials { - usr, _ := user.Current() - credPath := fmt.Sprintf("%s/.homelab/portainer-creds.json", usr.HomeDir) - - if _, err := os.Stat(credPath); errors.Is(err, os.ErrNotExist) { - log.Fatal(fmt.Errorf("there must be a credentials file under: %s", credPath)) - } - - fileBytes, err := os.ReadFile(credPath) - if err != nil { - log.Fatal(err) - } - - creds := client.Credentials{} - if err := json.Unmarshal(fileBytes, &creds); err != nil { - log.Fatal(err) - } - return creds -} - -type StackResult struct { - Name string `json:"name"` - Id int `json:"id"` -} - -func main() { - args := os.Args - if len(args) != 2 { - fmt.Println("must specify name of stack to start!") - os.Exit(1) - } - - stackName := args[1] - creds := loadCreds() - c, err := client.NewPortainerClient(creds) - if err != nil { - log.Fatal(err) - } - s, err := c.GetStackByName(stackName) - if err != nil { - log.Fatal(err) - } - if s == nil { - log.Fatalf("no stack found with name: %s\n", stackName) - } - - _, err = c.StopStack(s.ID) - if err != nil { - log.Fatal(err) - } - - msg, err := c.StartStack(s.ID) - if err != nil { - log.Fatal(err) - } - - if msg.Details != "" && !strings.Contains(msg.Details, "is already running") { - log.Fatalf("problem starting stack: %s", msg.Details) - } - - sr := StackResult{ - Name: stackName, - Id: s.ID, - } - - bytes, err := json.Marshal(sr) - if err != nil { - log.Fatal(err) - } - // output details of the stack that was started (or is already started) - fmt.Println(string(bytes)) -} diff --git a/ansible/setup-homelab.yml b/setup-homelab.yml similarity index 91% rename from ansible/setup-homelab.yml rename to setup-homelab.yml index 55554fe..600ead0 100644 --- a/ansible/setup-homelab.yml +++ b/setup-homelab.yml @@ -2,10 +2,10 @@ - hosts: servers become: true vars_files: - - ../secrets.yml + - secrets.yml roles: - - role: 'roles/setup_samba' - role: 'roles/setup_users' + - role: 'roles/setup_samba' - role: 'roles/setup_docker' - role: 'roles/setup_portainer' - role: 'roles/setup_hosted_services'