{"id":13903249,"url":"https://github.com/containers/fetchit","last_synced_at":"2026-01-17T01:15:07.445Z","repository":{"id":37022325,"uuid":"455664976","full_name":"containers/fetchit","owner":"containers","description":"FetchIt is used to manage the life cycle and configuration of Podman containers","archived":false,"fork":false,"pushed_at":"2026-01-13T20:14:16.000Z","size":17378,"stargazers_count":155,"open_issues_count":33,"forks_count":25,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-01-13T21:35:21.644Z","etag":null,"topics":["containers","gitops","hacktoberfest","hacktoberfest2022","podman"],"latest_commit_sha":null,"homepage":"https://fetchit.readthedocs.io/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-04T19:04:45.000Z","updated_at":"2026-01-13T19:40:39.000Z","dependencies_parsed_at":"2025-12-31T05:01:22.890Z","dependency_job_id":null,"html_url":"https://github.com/containers/fetchit","commit_stats":{"total_commits":385,"total_committers":10,"mean_commits":38.5,"dds":"0.38181818181818183","last_synced_commit":"8279f53f9ce6b46a83d6ac46154b66519f71bd34"},"previous_names":["redhat-et/fetchit","redhat-et/harpoon"],"tags_count":2,"template":false,"template_full_name":"coderefinery/word-count","purl":"pkg:github/containers/fetchit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Ffetchit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Ffetchit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Ffetchit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Ffetchit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/fetchit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Ffetchit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28491229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"ssl_error","status_checked_at":"2026-01-17T00:43:11.982Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","gitops","hacktoberfest","hacktoberfest2022","podman"],"created_at":"2024-08-06T22:01:55.111Z","updated_at":"2026-01-17T01:15:07.439Z","avatar_url":"https://github.com/containers.png","language":"Go","funding_links":[],"categories":["hacktoberfest2022"],"sub_categories":[],"readme":"# Fetchit\nThe purpose of FetchIt is to allow for GitOps management of podman managed containers.\n\nThis project is currently under development. For a more detailed explanation of the project visit the docs page.\nhttps://fetchit.readthedocs.io/\n\nA quickstart example is available at https://github.com/containers/fetchit/blob/main/docs/quick_start.rst\n\n## Requirements\n\n- **Podman v5.0+** (tested with v5.7.0)\n- **Go 1.21+** (for building from source)\n- **Linux Kernel 5.2+** (required by Podman v5)\n\n## Developing\nTo develop and test changes of FetchIt, the FetchIt image can be built locally and then run on the development system.\n\n```\ngo mod tidy\ngo mod vendor\npodman build . --file Dockerfile --tag quay.io/fetchit/fetchit-amd:latest\npodman tag quay.io/fetchit/fetchit-amd:latest quay.io/fetchit/fetchit:latest\n```\n\nOnce the image has been successfully built the image can be ran using the following command.\n\n```\n\npodman run -d --rm --name fetchit --security-opt label=disable -v fetchit-volume:/opt -v ./examples/readme-config.yaml:/opt/config.yaml -v /run/user/$(id -u)/podman//podman.sock:/run/podman/podman.sock quay.io/fetchit/fetchit:latest\n```\n\n##  Running\nFetchIt requires the podman socket to be running on the host. The socket can be enabled for a specific user or for root.\n\nTo enable the socket for $USER:\n\n```\nsystemctl --user enable podman.socket --now\n```\n\nTo enable the socket for root:\n\n```\nsystemctl enable podman.socket --now\n```\n\n\n#### Verify running containers before deploying fetchit.\n\n```\npodman ps\n\nCONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES\n```\n\n\n### FetchIt launch options\nFetchIt and can be started manually or launched via systemd.\n\nDefine the parameters in your `$HOME/.fetchit/config.yaml` to relate to your git repository.\nThis example can be found in [./examples/readme-config.yaml](examples/readme-config.yaml)\n\n```\ntargetConfigs:\n- url: https://github.com/containers/fetchit\n  branch: main\n  fileTransfer:\n  - name: ft-ex\n    targetPath: examples/fileTransfer\n    destinationDirectory: /tmp\n    schedule: \"*/1 * * * *\"\n  raw:\n  - name: raw-ex\n    targetPath: examples/raw\n    schedule: \"*/1 * * * *\"\n```\n\n#### Launch using systemd\nTwo systemd files are provided to allow for FetchIt to run as a user or as root. The files are under the systemd folder, differentiated by fetchit-root and fetchit-user.\n\nEnsure that there is a config at `$HOME/.fetchit/config.yaml` before attempting to start the service.\n\nFor root\n```\ncp systemd/fetchit-root.service /etc/systemd/system/fetchit.service\nsystemctl enable fetchit --now\n```\n\nFor $USER\n```\nmkdir -p ~/.config/systemd/user/\ncp systemd/fetchit-user.service ~/.config/systemd/user/fetchit.service\nsystemctl --user enable fetchit --now\n```\n\n#### Manually launch the fetchit container using a podman volume\n\n```\npodman run -d --rm --name fetchit \\\n    -v fetchit-volume:/opt \\\n    -v $HOME/.fetchit:/opt/mount \\\n    -v /run/user/$(id -u)/podman//podman.sock:/run/podman/podman.sock \\\n    --security-opt label=disable \\\n    quay.io/fetchit/fetchit:latest\n```\n\n**NOTE:**\n* If a podman volume is not the preferred storage solution a directory can be used as well.\nAn example would be `-v ~/fetchit-volume:/opt` instead of `-v fetchit-volume:/opt`.\n* For filetransfer, the `destination directory must exist` on the host.\n\nThe container will be started and will run in the background. To view the logs:\n\n```\npodman logs -f fetchit\n\ngit clone https://github.com/containers/fetchit main --recursive\nCreating podman container from ./fetchit/examples/raw/example.json\nTrying to pull docker.io/mmumshad/simple-webapp-color:latest...\nGetting image source signatures\nCopying blob sha256:b023afffd10b07f646968c0f1405ac7b611feca6da6fbc2bb8c55f2492bdde07\nCopying blob sha256:d4eee24d4dacb41c21411e0477a741655303cdc48b18a948632c31f0f3a70bb8\nCopying blob sha256:1607093a898cc241de8712e4361dcd907898fff35b945adca42db3963f3827b3\nCopying blob sha256:b59856e9f0abefedc34fcefc3f57c4955cc384785663745532ddc31a89641c83\nCopying blob sha256:55cbf04beb7001d222c71bfdeae780bda19d5cb37b8dbd65ff0d3e6a0b9b74e6\nCopying blob sha256:13e2e806d7c88f357958d798c097b4fc0cd6e3aea888ad7e584fba5a0e7d3ec9\nCopying blob sha256:e90bc178f0458c231d8e355756f9f0f51e22a4e6c5ff8c9c6cb8e48d2c158000\nCopying blob sha256:bd415728f75acd3ee7699f4bb31dfa8c39a935d5a6acea4b580568cd730100a9\nCopying blob sha256:06d08c7638af6fc0c05f9c7e5ec43ae7b24ca72bbfaba4d065578358ed38ab15\nCopying blob sha256:98b4690dc1c724ec64b18475f1be8d37e10c058788da16aa2e4ca7260c1aac68\nCopying blob sha256:3a4e7915e2111a1546b662863d4192f98283e53a66ac34296d90823563d12040\nCopying blob sha256:b2567acc3f180ce1113a668c5950e8123b493c5b85e8e51651310ee21799c67d\nCopying blob sha256:9a8ea045c9261c180a34df19cfc9bb3c3f28f29b279bf964ee801536e8244f2f\nCopying config sha256:96bb69733441c4a81ec77348208198aba7a5a78f4dc22429e7a56b25f63d2b73\nWriting manifest to image destination\nStoring signatures\nA container named colors already exists. Removing the container before redeploy.\nContainer created.\ntime=\"2022-02-15T18:04:14Z\" level=info msg=\"Going to start container \\\"53d86851aad9fc362cb61493c495ec262217c1759e061724dc1f974c35d93d5b\\\"\"\nContainer started....Requeuing\n```\n\n#### Verify the sample applications are running\n\n```\npodman ps\n\nCONTAINER ID  IMAGE                                          COMMAND               CREATED        STATUS            PORTS                   NAMES\nedefaf7c3139  quay.io/fetchit/fetchit:latest                 /usr/local/bin/fe...  25 seconds ago  Up 26 seconds ago                          fetchit\n508106ff37c1  docker.io/mmumshad/simple-webapp-color:latest  python ./app.py       25 seconds ago  Up 25 seconds ago  0.0.0.0:7070-\u003e8080/tcp  cap1\n90556a8725db  docker.io/mmumshad/simple-webapp-color:latest  python ./app.py       24 seconds ago  Up 25 seconds ago  0.0.0.0:9090-\u003e8080/tcp  cap2\n8ce0f010231a  docker.io/mmumshad/simple-webapp-color:latest  python ./app.py       24 seconds ago  Up 25 seconds ago  0.0.0.0:8080-\u003e8080/tcp  colors1\nbe95a69686e8  docker.io/mmumshad/simple-webapp-color:latest  python ./app.py       24 seconds ago  Up 25 seconds ago  0.0.0.0:9080-\u003e8080/tcp  colors2\n```\n\nAlso, view applications at `localhost:8080` and `localhost:9080`\n\n#### Verify the file is placed on the host\n\n```\nwatch ls -al /tmp/hello.txt\n```\n\n#### Clean up\n\n```\npodman stop colors1 colors2 fetchit \u0026\u0026 podman rm colors1 colors2 \u0026\u0026 podman volume rm fetchit-volume\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Ffetchit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Ffetchit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Ffetchit/lists"}