# fedora-coreos-cincinnati walkthrough
* Source code: <https://github.com/coreos/fedora-coreos-cincinnati>
* web backend for https://github.com/coreos/zincati
* Pure Rust project
* For a general Rust quickstart, see Zincati one:
* https://coreos.github.io/zincati/development/quickstart/
* docker file ~dist/fedorainfra/dockerfile
* Basic utils: Rust toolchain (rustc+cargo), see https://github.com/coreos/fedora-coreos-cincinnati/blob/main/dist/fedora-infra/Dockerfile#L7
* rust extensions : rust-analyzer
* Typical scenario:
* FCOS machine,
* which is running Zincati,
* which is querying policy-engine (coreos-cincinnati frontend),
* which is talking to graph-builder (coreos-cincinnati backend)
* (Zincati eventually talks to rpm-ostree to deploy new releases)
* FCOS does auto-update between releases, according to a graph
* https://builds.coreos.fedoraproject.org/graph?stream=stable&basearch=x86_64
* According to the Cincinnati protocol
* https://coreos.github.io/zincati/development/cincinnati/protocol/
Production running on fedora-infra:
* curl -H 'Accept: application/json' 'https://raw-updates.coreos.fedoraproject.org/v1/graph?basearch=x86_64&stream=stable'
* curl -H 'Accept: application/json' 'https://updates.coreos.fedoraproject.org/v1/graph?basearch=x86_64&stream=stable&rollout_wariness=0'
* Deployment configuration: https://pagure.io/fedora-infra/ansible/blob/main/f/roles/openshift-apps/coreos-cincinnati/templates/deploymentconfig.yml
* Rust documentation for common/public libraries on https://docs.rs/
* For example, `log` is at https://docs.rs/log/0.4.17/log/
Resources for a general Rust introduction and exercises:
* https://github.com/rust-lang/rustlings
* https://rust-lang-nursery.github.io/rust-cookbook/intro.html
* START HERE --> (Getting started with cargo) https://doc.rust-lang.org/book/ch01-00-getting-started.html