Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/containers/fetchit
FetchIt is used to manage the life cycle and configuration of Podman containers
https://github.com/containers/fetchit
containers gitops hacktoberfest hacktoberfest2022 podman
Last synced: 3 months ago
JSON representation
FetchIt is used to manage the life cycle and configuration of Podman containers
- Host: GitHub
- URL: https://github.com/containers/fetchit
- Owner: containers
- License: agpl-3.0
- Created: 2022-02-04T19:04:45.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-31T19:36:02.000Z (5 months ago)
- Last Synced: 2024-06-20T12:03:12.370Z (5 months ago)
- Topics: containers, gitops, hacktoberfest, hacktoberfest2022, podman
- Language: Go
- Homepage: https://fetchit.readthedocs.io/
- Size: 18.1 MB
- Stars: 115
- Watchers: 10
- Forks: 23
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fetchit
The purpose of FetchIt is to allow for GitOps management of podman managed containers.This project is currently under development. For a more detailed explanation of the project visit the docs page.
https://fetchit.readthedocs.io/A quickstart example is available at https://github.com/containers/fetchit/blob/main/docs/quick_start.rst
## Developing
To develop and test changes of FetchIt, the FetchIt image can be built locally and then run on the development system.```
go mod tidy
go mod vendor
podman build . --file Dockerfile --tag quay.io/fetchit/fetchit-amd:latest
podman tag quay.io/fetchit/fetchit-amd:latest quay.io/fetchit/fetchit:latest
```Once the image has been successfully built the image can be ran using the following command.
```
podman 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
```## Running
FetchIt requires the podman socket to be running on the host. The socket can be enabled for a specific user or for root.To enable the socket for $USER:
```
systemctl --user enable podman.socket --now
```To enable the socket for root:
```
systemctl enable podman.socket --now
```#### Verify running containers before deploying fetchit.
```
podman psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```### FetchIt launch options
FetchIt and can be started manually or launched via systemd.Define the parameters in your `$HOME/.fetchit/config.yaml` to relate to your git repository.
This example can be found in [./examples/readme-config.yaml](examples/readme-config.yaml)```
targetConfigs:
- url: https://github.com/containers/fetchit
branch: main
fileTransfer:
- name: ft-ex
targetPath: examples/fileTransfer
destinationDirectory: /tmp
schedule: "*/1 * * * *"
raw:
- name: raw-ex
targetPath: examples/raw
schedule: "*/1 * * * *"
```#### Launch using systemd
Two 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.Ensure that there is a config at `$HOME/.fetchit/config.yaml` before attempting to start the service.
For root
```
cp systemd/fetchit-root.service /etc/systemd/system/fetchit.service
systemctl enable fetchit --now
```For $USER
```
mkdir -p ~/.config/systemd/user/
cp systemd/fetchit-user.service ~/.config/systemd/user/fetchit.service
systemctl --user enable fetchit --now
```#### Manually launch the fetchit container using a podman volume
```
podman run -d --rm --name fetchit \
-v fetchit-volume:/opt \
-v $HOME/.fetchit:/opt/mount \
-v /run/user/$(id -u)/podman//podman.sock:/run/podman/podman.sock \
--security-opt label=disable \
quay.io/fetchit/fetchit:latest
```**NOTE:**
* If a podman volume is not the preferred storage solution a directory can be used as well.
An example would be `-v ~/fetchit-volume:/opt` instead of `-v fetchit-volume:/opt`.
* For filetransfer, the `destination directory must exist` on the host.The container will be started and will run in the background. To view the logs:
```
podman logs -f fetchitgit clone https://github.com/containers/fetchit main --recursive
Creating podman container from ./fetchit/examples/raw/example.json
Trying to pull docker.io/mmumshad/simple-webapp-color:latest...
Getting image source signatures
Copying blob sha256:b023afffd10b07f646968c0f1405ac7b611feca6da6fbc2bb8c55f2492bdde07
Copying blob sha256:d4eee24d4dacb41c21411e0477a741655303cdc48b18a948632c31f0f3a70bb8
Copying blob sha256:1607093a898cc241de8712e4361dcd907898fff35b945adca42db3963f3827b3
Copying blob sha256:b59856e9f0abefedc34fcefc3f57c4955cc384785663745532ddc31a89641c83
Copying blob sha256:55cbf04beb7001d222c71bfdeae780bda19d5cb37b8dbd65ff0d3e6a0b9b74e6
Copying blob sha256:13e2e806d7c88f357958d798c097b4fc0cd6e3aea888ad7e584fba5a0e7d3ec9
Copying blob sha256:e90bc178f0458c231d8e355756f9f0f51e22a4e6c5ff8c9c6cb8e48d2c158000
Copying blob sha256:bd415728f75acd3ee7699f4bb31dfa8c39a935d5a6acea4b580568cd730100a9
Copying blob sha256:06d08c7638af6fc0c05f9c7e5ec43ae7b24ca72bbfaba4d065578358ed38ab15
Copying blob sha256:98b4690dc1c724ec64b18475f1be8d37e10c058788da16aa2e4ca7260c1aac68
Copying blob sha256:3a4e7915e2111a1546b662863d4192f98283e53a66ac34296d90823563d12040
Copying blob sha256:b2567acc3f180ce1113a668c5950e8123b493c5b85e8e51651310ee21799c67d
Copying blob sha256:9a8ea045c9261c180a34df19cfc9bb3c3f28f29b279bf964ee801536e8244f2f
Copying config sha256:96bb69733441c4a81ec77348208198aba7a5a78f4dc22429e7a56b25f63d2b73
Writing manifest to image destination
Storing signatures
A container named colors already exists. Removing the container before redeploy.
Container created.
time="2022-02-15T18:04:14Z" level=info msg="Going to start container \"53d86851aad9fc362cb61493c495ec262217c1759e061724dc1f974c35d93d5b\""
Container started....Requeuing
```#### Verify the sample applications are running
```
podman psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edefaf7c3139 quay.io/fetchit/fetchit:latest /usr/local/bin/fe... 25 seconds ago Up 26 seconds ago fetchit
508106ff37c1 docker.io/mmumshad/simple-webapp-color:latest python ./app.py 25 seconds ago Up 25 seconds ago 0.0.0.0:7070->8080/tcp cap1
90556a8725db docker.io/mmumshad/simple-webapp-color:latest python ./app.py 24 seconds ago Up 25 seconds ago 0.0.0.0:9090->8080/tcp cap2
8ce0f010231a docker.io/mmumshad/simple-webapp-color:latest python ./app.py 24 seconds ago Up 25 seconds ago 0.0.0.0:8080->8080/tcp colors1
be95a69686e8 docker.io/mmumshad/simple-webapp-color:latest python ./app.py 24 seconds ago Up 25 seconds ago 0.0.0.0:9080->8080/tcp colors2
```Also, view applications at `localhost:8080` and `localhost:9080`
#### Verify the file is placed on the host
```
watch ls -al /tmp/hello.txt
```#### Clean up
```
podman stop colors1 colors2 fetchit && podman rm colors1 colors2 && podman volume rm fetchit-volume
```