2018-05-12 00:18:21 +00:00
<!DOCTYPE html>
<!-- [if IE 8]><html class="no - js lt - ie9" lang="en" > <![endif] -->
<!-- [if gt IE 8]><! --> < html class = "no-js" lang = "en" > <!-- <![endif] -->
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2019-07-29 22:17:38 +00:00
< title > composer-cli — Lorax 31.9 documentation< / title >
2018-05-12 00:18:21 +00:00
2019-03-27 23:44:14 +00:00
< script type = "text/javascript" src = "_static/js/modernizr.min.js" > < / script >
2018-05-12 00:18:21 +00:00
2019-03-27 23:44:14 +00:00
< script type = "text/javascript" id = "documentation_options" data-url_root = "./" src = "_static/documentation_options.js" > < / script >
< script type = "text/javascript" src = "_static/jquery.js" > < / script >
< script type = "text/javascript" src = "_static/underscore.js" > < / script >
< script type = "text/javascript" src = "_static/doctools.js" > < / script >
< script type = "text/javascript" src = "_static/language_data.js" > < / script >
< script type = "text/javascript" src = "_static/js/theme.js" > < / script >
2018-05-12 00:18:21 +00:00
2019-03-27 23:44:14 +00:00
2018-05-12 00:18:21 +00:00
2019-03-27 23:44:14 +00:00
2018-11-13 17:53:31 +00:00
< link rel = "stylesheet" href = "_static/css/theme.css" type = "text/css" / >
2018-05-12 00:18:21 +00:00
< link rel = "stylesheet" href = "_static/pygments.css" type = "text/css" / >
< link rel = "index" title = "Index" href = "genindex.html" / >
< link rel = "search" title = "Search" href = "search.html" / >
< link rel = "next" title = "Product and Updates Images" href = "product-images.html" / >
< link rel = "prev" title = "lorax-composer" href = "lorax-composer.html" / >
< / head >
< body class = "wy-body-for-nav" >
< div class = "wy-grid-for-nav" >
< nav data-toggle = "wy-nav-shift" class = "wy-nav-side" >
< div class = "wy-side-scroll" >
2019-03-27 23:44:14 +00:00
< div class = "wy-side-nav-search" >
2018-05-12 00:18:21 +00:00
< a href = "index.html" class = "icon icon-home" > Lorax
< / a >
< div class = "version" >
2019-07-29 22:17:38 +00:00
31.9
2018-05-12 00:18:21 +00:00
< / div >
< div role = "search" >
< form id = "rtd-search-form" class = "wy-form" action = "search.html" method = "get" >
< input type = "text" name = "q" placeholder = "Search docs" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< / div >
< / div >
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
< ul class = "current" >
< li class = "toctree-l1" > < a class = "reference internal" href = "intro.html" > Introduction to Lorax< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "intro.html#before-lorax" > Before Lorax< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "lorax.html" > Lorax< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "livemedia-creator.html" > livemedia-creator< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "lorax-composer.html" > lorax-composer< / a > < / li >
2018-10-24 17:07:32 +00:00
< li class = "toctree-l1 current" > < a class = "current reference internal" href = "#" > composer-cli< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "#composer-cli-cmdline-arguments" > composer-cli cmdline arguments< / a > < ul >
2018-05-12 00:18:21 +00:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#Positional Arguments" > Positional Arguments< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "#Named Arguments" > Named Arguments< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#edit-a-blueprint" > Edit a Blueprint< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#build-an-image" > Build an image< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#monitor-the-build-status" > Monitor the build status< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#download-the-image" > Download the image< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "product-images.html" > Product and Updates Images< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "modules.html" > src< / a > < / li >
< / ul >
< / div >
< / div >
< / nav >
< section data-toggle = "wy-nav-shift" class = "wy-nav-content-wrap" >
< nav class = "wy-nav-top" aria-label = "top navigation" >
< i data-toggle = "wy-nav-top" class = "fa fa-bars" > < / i >
< a href = "index.html" > Lorax< / a >
< / nav >
< div class = "wy-nav-content" >
< div class = "rst-content" >
< div role = "navigation" aria-label = "breadcrumbs navigation" >
< ul class = "wy-breadcrumbs" >
< li > < a href = "index.html" > Docs< / a > » < / li >
2018-10-24 17:07:32 +00:00
< li > composer-cli< / li >
2018-05-12 00:18:21 +00:00
< li class = "wy-breadcrumbs-aside" >
< a href = "_sources/composer-cli.rst.txt" rel = "nofollow" > View page source< / a >
< / li >
< / ul >
< hr / >
< / div >
< div role = "main" class = "document" itemscope = "itemscope" itemtype = "http://schema.org/Article" >
< div itemprop = "articleBody" >
2018-10-24 17:07:32 +00:00
< div class = "section" id = "composer-cli" >
< h1 > composer-cli< a class = "headerlink" href = "#composer-cli" title = "Permalink to this headline" > ¶< / a > < / h1 >
2019-03-27 23:44:14 +00:00
< dl class = "field-list simple" >
< dt class = "field-odd" > Authors< / dt >
< dd class = "field-odd" > < p > Brian C. Lane < < a class = "reference external" href = "mailto:bcl%40redhat.com" > bcl< span > @ < / span > redhat< span > . < / span > com< / a > > < / p >
< / dd >
< / dl >
2018-10-24 17:07:32 +00:00
< p > < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < / code > is used to interact with the < code class = "docutils literal notranslate" > < span class = "pre" > lorax-composer< / span > < / code > API server, managing blueprints, exploring available packages, and building new images.< / p >
2018-05-12 00:18:21 +00:00
< p > It requires < a class = "reference external" href = "lorax-composer.html" > lorax-composer< / a > to be installed on the
local system, and the user running it needs to be a member of the < code class = "docutils literal notranslate" > < span class = "pre" > weldr< / span > < / code >
group. They do not need to be root, but all of the < a class = "reference external" href = "lorax-composer.html#security" > security precautions< / a > apply.< / p >
2018-10-24 17:07:32 +00:00
< div class = "section" id = "composer-cli-cmdline-arguments" >
< h2 > composer-cli cmdline arguments< a class = "headerlink" href = "#composer-cli-cmdline-arguments" title = "Permalink to this headline" > ¶< / a > < / h2 >
2019-03-27 23:44:14 +00:00
< p > < p > Lorax Composer commandline tool< / p >
< / p >
2018-10-24 17:07:32 +00:00
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > usage< / span > < span class = "p" > :< / span > < span class = "n" > composer< / span > < span class = "o" > -< / span > < span class = "n" > cli< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > h< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > j< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > s< / span > < span class = "n" > SOCKET< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > log< / span > < span class = "n" > LOG< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > a< / span > < span class = "n" > APIVER< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > test< / span > < span class = "n" > TESTMODE< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > V< / span > < span class = "p" > ]< / span >
< span class = "o" > ...< / span >
2018-05-12 00:18:21 +00:00
< / pre > < / div >
< / div >
< div class = "section" id = "Positional Arguments" >
< h3 > Positional Arguments< a class = "headerlink" href = "#Positional Arguments" title = "Permalink to this headline" > ¶< / a > < / h3 >
2019-03-27 23:44:14 +00:00
< dl class = "option-list" >
< dt > < kbd > args< / kbd > < / dt >
< dd > < / dd >
< / dl >
2018-05-12 00:18:21 +00:00
< / div >
< div class = "section" id = "Named Arguments" >
< h3 > Named Arguments< a class = "headerlink" href = "#Named Arguments" title = "Permalink to this headline" > ¶< / a > < / h3 >
2019-03-27 23:44:14 +00:00
< dl class = "option-list" >
< dt > < kbd > -j, --json< / kbd > < / dt >
< dd > < p > Output the raw JSON response instead of the normal output.< / p >
< p > Default: False< / p >
< / dd >
< dt > < kbd > -s, --socket< / kbd > < / dt >
< dd > < p > Path to the socket file to listen on< / p >
< p > Default: " /run/weldr/api.socket" < / p >
< / dd >
< dt > < kbd > --log< / kbd > < / dt >
< dd > < p > Path to logfile (./composer-cli.log)< / p >
< / dd >
< dt > < kbd > -a, --api< / kbd > < / dt >
< dd > < p > API Version to use< / p >
< p > Default: " 0" < / p >
< / dd >
< dt > < kbd > --test< / kbd > < / dt >
< dd > < p > Pass test mode to compose. 1=Mock compose with fail. 2=Mock compose with finished.< / p >
< p > Default: 0< / p >
< / dd >
< dt > < kbd > -V< / kbd > < / dt >
< dd > < p > show program's version number and exit< / p >
< p > Default: False< / p >
< / dd >
< / dl >
2018-05-12 00:18:21 +00:00
< / div >
2019-03-27 23:44:14 +00:00
< p > < dl class = "simple" >
< dt > compose start < BLUEPRINT> < TYPE> < / dt > < dd > < p > Start a compose using the selected blueprint and output type.< / p >
< / dd >
< dt > compose types< / dt > < dd > < p > List the supported output types.< / p >
< / dd >
< dt > compose status< / dt > < dd > < p > List the status of all running and finished composes.< / p >
< / dd >
< dt > compose list [waiting|running|finished|failed]< / dt > < dd > < p > List basic information about composes.< / p >
< / dd >
< dt > compose log < UUID> [< SIZE> ]< / dt > < dd > < p > Show the last SIZE kB of the compose log.< / p >
< / dd >
< dt > compose cancel < UUID> < / dt > < dd > < p > Cancel a running compose and delete any intermediate results.< / p >
< / dd >
< dt > compose delete < UUID,...> < / dt > < dd > < p > Delete the listed compose results.< / p >
< / dd >
< dt > compose info < UUID> < / dt > < dd > < p > Show detailed information on the compose.< / p >
< / dd >
< dt > compose metadata < UUID> < / dt > < dd > < p > Download the metadata use to create the compose to < uuid> -metadata.tar< / p >
< / dd >
< dt > compose logs < UUID> < / dt > < dd > < p > Download the compose logs to < uuid> -logs.tar< / p >
< / dd >
< dt > compose results < UUID> < / dt > < dd > < p > Download all of the compose results; metadata, logs, and image to < uuid> .tar< / p >
< / dd >
< dt > compose image < UUID> < / dt > < dd > < p > Download the output image from the compose. Filename depends on the type.< / p >
< / dd >
< dt > blueprints list< / dt > < dd > < p > List the names of the available blueprints.< / p >
< / dd >
< dt > blueprints show < BLUEPRINT,...> < / dt > < dd > < p > Display the blueprint in TOML format.< / p >
< / dd >
< dt > blueprints changes < BLUEPRINT,...> < / dt > < dd > < p > Display the changes for each blueprint.< / p >
< / dd >
< dt > blueprints diff < BLUEPRINT> < FROM-COMMIT> < TO-COMMIT> < / dt > < dd > < p > Display the differences between 2 versions of a blueprint.
2018-05-12 00:18:21 +00:00
FROM-COMMIT can be a commit hash or NEWEST
2019-03-27 23:44:14 +00:00
TO-COMMIT can be a commit hash, NEWEST, or WORKSPACE< / p >
< / dd >
< dt > blueprints save < BLUEPRINT,...> < / dt > < dd > < p > Save the blueprint to a file, < BLUEPRINT> .toml< / p >
< / dd >
< dt > blueprints delete < BLUEPRINT> < / dt > < dd > < p > Delete a blueprint from the server< / p >
< / dd >
< dt > blueprints depsolve < BLUEPRINT,...> < / dt > < dd > < p > Display the packages needed to install the blueprint.< / p >
< / dd >
< dt > blueprints push < BLUEPRINT> < / dt > < dd > < p > Push a blueprint TOML file to the server.< / p >
< / dd >
< dt > blueprints freeze < BLUEPRINT,...> < / dt > < dd > < p > Display the frozen blueprint's modules and packages.< / p >
< / dd >
< dt > blueprints freeze show < BLUEPRINT,...> < / dt > < dd > < p > Display the frozen blueprint in TOML format.< / p >
< / dd >
< dt > blueprints freeze save < BLUEPRINT,...> < / dt > < dd > < p > Save the frozen blueprint to a file, < blueprint-name> .frozen.toml.< / p >
< / dd >
< dt > blueprints tag < BLUEPRINT> < / dt > < dd > < p > Tag the most recent blueprint commit as a release.< / p >
< / dd >
< dt > blueprints undo < BLUEPRINT> < COMMIT> < / dt > < dd > < p > Undo changes to a blueprint by reverting to the selected commit.< / p >
< / dd >
< dt > blueprints workspace < BLUEPRINT> < / dt > < dd > < p > Push the blueprint TOML to the temporary workspace storage.< / p >
< / dd >
< dt > modules list< / dt > < dd > < p > List the available modules.< / p >
< / dd >
< dt > projects list< / dt > < dd > < p > List the available projects.< / p >
< / dd >
< dt > projects info < PROJECT,...> < / dt > < dd > < p > Show details about the listed projects.< / p >
< / dd >
< dt > sources list< / dt > < dd > < p > List the available sources< / p >
< / dd >
< dt > sources info < SOURCE-NAME,...> < / dt > < dd > < p > Details about the source.< / p >
< / dd >
< dt > sources add < SOURCE.TOML> < / dt > < dd > < p > Add a package source to the server.< / p >
< / dd >
< dt > sources change < SOURCE.TOML> < / dt > < dd > < p > Change an existing source< / p >
< / dd >
< dt > sources delete < SOURCE-NAME> < / dt > < dd > < p > Delete a package source.< / p >
< / dd >
2018-05-12 00:18:21 +00:00
< / dl >
2018-08-13 23:43:20 +00:00
< p > status show Show API server status.< / p >
2018-05-12 00:18:21 +00:00
< / p >
< / div >
< div class = "section" id = "edit-a-blueprint" >
< h2 > Edit a Blueprint< a class = "headerlink" href = "#edit-a-blueprint" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-10-24 17:07:32 +00:00
< p > Start out by listing the available blueprints using < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > blueprints< / span >
< span class = "pre" > list< / span > < / code > , pick one and save it to the local directory by running < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span >
2018-05-12 00:18:21 +00:00
< span class = "pre" > blueprints< / span > < span class = "pre" > save< / span > < span class = "pre" > http-server< / span > < / code > . If there are no blueprints available you can
copy one of the examples < a class = "reference external" href = "https://github.com/weldr/lorax/tree/master/tests/pylorax/blueprints/" > from the test suite< / a > .< / p >
2018-07-20 22:51:06 +00:00
< p > Edit the file (it will be saved with a .toml extension) and change the
2018-05-12 00:18:21 +00:00
description, add a package or module to it. Send it back to the server by
2018-10-24 17:07:32 +00:00
running < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > blueprints< / span > < span class = "pre" > push< / span > < span class = "pre" > http-server.toml< / span > < / code > . You can verify that it was
saved by viewing the changelog - < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > blueprints< / span > < span class = "pre" > changes< / span > < span class = "pre" > http-server< / span > < / code > .< / p >
2018-05-12 00:18:21 +00:00
< / div >
< div class = "section" id = "build-an-image" >
< h2 > Build an image< a class = "headerlink" href = "#build-an-image" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-10-24 17:07:32 +00:00
< p > Build a < code class = "docutils literal notranslate" > < span class = "pre" > qcow2< / span > < / code > disk image from this blueprint by running < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span >
2018-05-12 00:18:21 +00:00
< span class = "pre" > compose< / span > < span class = "pre" > start< / span > < span class = "pre" > http-server< / span > < span class = "pre" > qcow2< / span > < / code > . It will print a UUID that you can use to
keep track of the build. You can also cancel the build if needed.< / p >
2018-10-24 17:07:32 +00:00
< p > The available types of images is displayed by < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > compose< / span > < span class = "pre" > types< / span > < / code > .
2019-04-17 19:12:11 +00:00
Currently this consists of: alibaba, ami, ext4-filesystem, google, hyper-v,
live-iso, openstack, partitioned-disk, qcow2, tar, vhd, vmdk< / p >
2018-05-12 00:18:21 +00:00
< / div >
< div class = "section" id = "monitor-the-build-status" >
< h2 > Monitor the build status< a class = "headerlink" href = "#monitor-the-build-status" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-10-24 17:07:32 +00:00
< p > Monitor it using < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > compose< / span > < span class = "pre" > status< / span > < / code > , which will show the status of
2018-05-12 00:18:21 +00:00
all the builds on the system. You can view the end of the anaconda build logs
2018-10-24 17:07:32 +00:00
once it is in the < code class = "docutils literal notranslate" > < span class = "pre" > RUNNING< / span > < / code > state using < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > compose< / span > < span class = "pre" > log< / span > < span class = "pre" > UUID< / span > < / code >
2018-05-12 00:18:21 +00:00
where UUID is the UUID returned by the start command.< / p >
< p > Once the build is in the < code class = "docutils literal notranslate" > < span class = "pre" > FINISHED< / span > < / code > state you can download the image.< / p >
< / div >
< div class = "section" id = "download-the-image" >
< h2 > Download the image< a class = "headerlink" href = "#download-the-image" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-10-24 17:07:32 +00:00
< p > Downloading the final image is done with < code class = "docutils literal notranslate" > < span class = "pre" > composer-cli< / span > < span class = "pre" > compose< / span > < span class = "pre" > image< / span > < span class = "pre" > UUID< / span > < / code > and it will
2018-05-12 00:18:21 +00:00
save the qcow2 image as < code class = "docutils literal notranslate" > < span class = "pre" > UUID-disk.qcow2< / span > < / code > which you can then use to boot a VM like this:< / p >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > qemu< / span > < span class = "o" > -< / span > < span class = "n" > kvm< / span > < span class = "o" > --< / span > < span class = "n" > name< / span > < span class = "n" > test< / span > < span class = "o" > -< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > m< / span > < span class = "mi" > 1024< / span > < span class = "o" > -< / span > < span class = "n" > hda< / span > < span class = "o" > ./< / span > < span class = "n" > UUID< / span > < span class = "o" > -< / span > < span class = "n" > disk< / span > < span class = "o" > .< / span > < span class = "n" > qcow2< / span >
< / pre > < / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< footer >
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
< a href = "product-images.html" class = "btn btn-neutral float-right" title = "Product and Updates Images" accesskey = "n" rel = "next" > Next < span class = "fa fa-arrow-circle-right" > < / span > < / a >
2019-03-27 23:44:14 +00:00
< a href = "lorax-composer.html" class = "btn btn-neutral float-left" title = "lorax-composer" accesskey = "p" rel = "prev" > < span class = "fa fa-arrow-circle-left" > < / span > Previous< / a >
2018-05-12 00:18:21 +00:00
< / div >
< hr / >
< div role = "contentinfo" >
< p >
2018-11-13 17:53:31 +00:00
© Copyright 2018, Red Hat, Inc.
2018-05-12 00:18:21 +00:00
< / p >
< / div >
Built with < a href = "http://sphinx-doc.org/" > Sphinx< / a > using a < a href = "https://github.com/rtfd/sphinx_rtd_theme" > theme< / a > provided by < a href = "https://readthedocs.org" > Read the Docs< / a > .
< / footer >
< / div >
< / div >
< / section >
< / div >
< script type = "text/javascript" >
jQuery(function () {
2018-06-04 23:27:56 +00:00
SphinxRtdTheme.Navigation.enable(true);
2018-05-12 00:18:21 +00:00
});
2019-03-27 23:44:14 +00:00
< / script >
2018-05-12 00:18:21 +00:00
< / body >
< / html >