{"id":44361904,"url":"https://github.com/ctdk/schob","last_synced_at":"2026-02-11T17:37:30.991Z","repository":{"id":20034160,"uuid":"23302264","full_name":"ctdk/schob","owner":"ctdk","description":"The client for running goiardi shovey jobs.","archived":false,"fork":false,"pushed_at":"2020-04-14T01:34:08.000Z","size":64,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-19T23:14:32.799Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctdk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-25T04:50:19.000Z","updated_at":"2019-11-12T12:02:25.000Z","dependencies_parsed_at":"2022-08-27T03:17:52.294Z","dependency_job_id":null,"html_url":"https://github.com/ctdk/schob","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ctdk/schob","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctdk%2Fschob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctdk%2Fschob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctdk%2Fschob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctdk%2Fschob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctdk","download_url":"https://codeload.github.com/ctdk/schob/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctdk%2Fschob/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29339769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T16:14:43.024Z","status":"ssl_error","status_checked_at":"2026-02-11T16:14:15.258Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-02-11T17:37:30.840Z","updated_at":"2026-02-11T17:37:30.985Z","avatar_url":"https://github.com/ctdk.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Schob\n\nSchob is a client for \"shovey\", a mechanism for pushing jobs to client nodes. \nCurrently it's specific to goiardi, but a more general implementation is \nplanned.\n\nDependencies\n------------\n\nRunning schob requires a goiardi server (both to send jobs to the schob client,\nand for the schob client to send reports to) and serf running with the goiardi\nserver and on every client node that will run shovey jobs.\n\nThe `knife-shove` plugin from https://github.com/ctdk/knife-shove or rubygems is\nrequired to submit and administer shovey jobs.\n\nSchob has the following golang dependencies outside of the standard library:\ngo-flags, toml, logger, the go-chef chef library, serf, go-uuid, and the \nchefcrypto library from goiardi (only for tests). The easiest way to install\nthese dependencies is to include the `-t` flag when using `go get` to install\nschob.\n\nInstallation\n------------\n\nThe easiest way to install schob is with the shovey-jobs cookbook, located at\nhttps://github.com/ctdk/shovey-jobs. At the moment it only supports Debian,\nthough, so for now installing on non-Debian platforms will have to install schob\nby hand. If you already have a binary you can skip to number 2.\n\n0. Set up go and configure go. (http://golang.org/doc/install.html)\n1. Download schob and its dependencies.\n\t\u003e go get -t github.com/ctdk/schob\n2. Install the schob binary.\n\t\u003e go install github.com/ctdk/schob\n   Alternately, if you downloaded a precompiled binary, put that binary \n   somewhere in your PATH.\n3. Make sure goiardi is running on its server, along with serf, and that it's\n   configured to use serf and shovey. You will also need to make the RSA\n   public/private key pair for signing and verifying shovey jobs.\n4. Start up serf on the node, making sure that it joins the same serf cluster\n   goairdi's serf is running in.\n5. Make sure the shovey signing public RSA key is installed on the node.\n6. Create a whitelist.json file for the node, with whitelisted jobs that are\n   allowed to run on the node. See the example whitelist.json file in \n   `test/whitelist.json` for guidance.\n7. Run schob. Schob can take a configuration file (an example is provided in\n   `test/schob-example.conf`, or it can use the following command line options:\n\n```\n  -v, --version          Print version info.\n  -V, --verbose          Show verbose debug information. Repeat for more\n                         verbosity.\n  -c, --config=          Specify a configuration file.\n  -L, --log-file=        Log to this file.\n  -s, --syslog           Use syslog for logging. Incompatible with\n                         -L/--log-file.\n  -e, --endpoint=        Server endpoint\n  -n, --node-name=       This node's name\n  -k, --key-file=        Path to node client private key\n  -m, --time-slew=       Time difference allowed between the node's clock and\n                         the time sent in the serf command from the server.\n                         Formatted like 5m, 150s, etc. Defaults to 15m.\n  -w, --whitelist=       Path to JSON file containing whitelisted commands\n  -t, --run-timeout=     The time, in minutes, to wait before stopping a job.\n                         Separate from the timeout set from the server, this is\n                         a fallback. Defaults to 45 minutes.\n  -p, --sign-pub-key=    Path to public key used to verify signed requests from\n                         the server.\n      --serf-addr=       IP anddress and port to use for RPC communication with\n                         the serf agent. Defaults to 127.0.0.1:7373.\n  -q, --queue-save-file= File to save running job status to recover jobs that\n                         didn't finish if schob is suddenly shut down without a\n                         chance to clean up.\n```\n\n  Options specified on the command line override options in the config file. A\n  typical command line invocation of schob looks like `schob -VVVV -e http://chef-server.local:4545 -n node-name.local -k /path/to/node.key -w /path/to/schob/test/whitelist.json -p /path/to/public.key --serf-addr=127.0.0.1:7373`.\n\nUsage\n-----\n\nOnce schob is running on a node, run jobs on it with the `knife-shove` plugin.\nThe full documentation for that can be found at \nhttps://github.com/ctdk/knife-shove, but here's a cheat sheet:\n\n* To start a job:\n  \u003e knife goiardi start \u003ccommand\u003e node1, node2,...\n\n* To start a job on all nodes in the webapp role, where 90% of the nodes must\n  be up:\n  \u003e knife goiardi job start -quorum 90% 'chef-client' --search 'role:webapp'\n\n* To see a job's status:\n  \u003e knife goiardi job status \u003cjob id\u003e\n\n* To get detailed information on a job on one node:\n  \u003e knife goiardi job info \u003cjob id\u003e \u003cnode name\u003e\n\n* To stream a running job:\n  \u003e knife goiardi job stream \u003cjob id\u003e \u003cnode name\u003e\n\n* To cancel a job:\n  \u003e knife goiardi job cancel \u003cjob id\u003e \u003cnode name\u003e\n\n* To get a node's status:\n  \u003e knife goiardi node status\n\n\nContributing\n------------\n1. Fork the repository on Github\n2. Create a named feature branch (like `add_component_x`)\n3. Write your change\n4. Write tests for your change (if applicable)\n5. Run the tests, ensuring they all pass\n6. Submit a Pull Request using Github\n\nSee Also\n--------\n\n* goiardi (https://github.com/ctdk/goiardi)\n* knife-shove (https://github.com/ctdk/knife-shove)\n* shovey-jobs cookbook (https://github.com/ctdk/shovey-jobs)\n* Goiardi's shovey documentation (http://goiardi.readthedocs.org/en/latest/features/serf_and_shovey.html#shovey)\n* Shovey API documentation (http://goiardi.readthedocs.org/en/latest/features/shovey_api.html)\n\nAuthor\n------\n\nJeremy Bingham (\u003cjbingham@gmail.com\u003e)\n\nCopyright\n---------\n\nCopyright 2014, Jeremy Bingham\n\nLicense\n-------\n\nSchob is licensed under the Apache 2.0 License. See the LICENSE file for\ndetails.\n\n\"Schob\" is German for \"shoved\".\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctdk%2Fschob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctdk%2Fschob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctdk%2Fschob/lists"}