CONDOR_ANNEX(1)
okay bestie, sit down, hydrate, because this one is a whole moment ๐ this is condor_annex, straight out of the HTCondor Manual, and it's about to give your compute pool main character energy. adding cloud resources? obsessed. let's get into it.
โจ NAME โจ
condor_annex โ adds cloud resources to the pool</p>. that's the whole serve. ๐ฆ
๐ธ SYNOPSIS ๐ธ
okay so there are eight ways to summon this thing and you need to know all of them, no skipping ๐
condor_annex -help
condor_annex [-aws-region <region>] -setup [FROM
INSTANCE|[/full/path/to/access/key/file
[/full/path/to/secret/key/file]]]
condor_annex [-aws-on-demand ] -annex-name <name of the annex> -count
<integer number of instances> [-aws-on-demand-* ] [common options ]
condor_annex [-aws-spot-fleet ] -annex-name <name of the annex> -slots
<integer weight> [-aws-spot-fleet-* ] [common options ]
condor_annex -annex-name <name of the annex> -duration hours
condor_annex [-annex-name <name of the annex>] -status [-classad ]
condor_annex -check-setup
condor_annex <condor_annex options> status <condor_status options>
๐ DESCRIPTION ๐
so condor_annex adds cloud resources to the pool. and yes, "the pool" means whatever the usual HTCondor daemons and tools think it means โ it's determined in the usual manner for HTCondor daemons and tools, iykyk. ๐ซถ
this version supports only Amazon Web Services (AWS), so if you were hoping for another cloud, bestie, not today. ๐ญ
- wanna add "on-demand" instances? use the third form up there.
- wanna add "spot" instances? use the fourth form.
- confused about any of these terms? go read either the HTCondor manual's Cloud Computing chapter or the AWS docs. both are giving textbook. ๐
the one-time setup thing (it's giving โจinitiation ritualโจ)
using condor_annex with AWS requires a one-time setup procedure, and you do it by invoking condor_annex with the -setup flag (that's the second form in the synopsis). ๐
you can check whether that procedure has already been done with the -check-setup flag (the seventh form). lowkey a vibe check for your setup. โ
and here's the cute part: if you run the setup flag on an instance whose role gives it sufficient privileges, you can skip specifying your API keys entirely โ just pass FROM INSTANCE to -setup and ask condor_annex to use the instance's role credentials instead. no keys, no stress, no cap. ๐
resetting the lease โณ
to reset the lease on an existing annex, invoke condor_annex with only the -annex-name option and the -duration flag. that's the fifth form listed above. simple, clean, slay.
the status era ๐
to figure out which of the instances you previously requested for a particular annex are not currently in the pool, invoke condor_annex with the -status flag and the -annex-name option โ the sixth form.
the output of this command is intended to be human-readable ๐ but if you specify the -classad flag you get the exact same information in ClassAd format instead. and if you omit -annex-name, you get info for all annexes. all of them. the whole roster. ๐
the 8.7.3 glow-up ๐
starting in 8.7.3, you can instead invoke condor_annex with status as a command argument โ that's the eighth form listed above. this makes condor_annex use condor_status to present annex instance data. iconic behaviour honestly.
arguments and options on the command line after status get passed unmodified to condor_status โ but heads up, not all arguments and options will behave as expected (more on that below, keep reading bestie ๐).
here's what's actually happening under the hood:
condor_annexconstructs an ad for each annex instance.- it passes that information to
condor_status. condor_statuswill โ unless you specify otherwise using its own command line โ query the collector for more information about the instances.
information from the collector gets presented as usual. โจ but instances that did not have ads in the collector get presented last, in their own table. why? because the annex instance ads generated by condor_annex do not (and can not) have the same information in them as ads generated by a condor_startd running inside the instance. it's not a bug, it's just literally impossible, ok? ๐ญ
see the condor_status manual page for the details about the "merge" mode of condor_status used by this command argument.
โ ๏ธ important bestie warning: bothcondor_annexandcondor_statushave-annex-nameoptions! if you care about one particular annex, put this flag on the command line before thestatuscommand argument, otherwise you'll get confusing results and nobody wants that. ๐
how the options are organised ๐๏ธ
the ordering is: common options first, then AWS-specific options, then AWS on-demand instance options, then AWS spot instance options, then options intended for use by experts. very organised, very demure.
๐ OPTIONS ๐
the common ones ๐ซถ
-helpโ print a usage reminder. the little nudge you need. ๐ซ-setup [/full/path/to/access/key/file/full/path/to/secret/key/file]โ do the first-time setup. (yes, that's the flag's whole little bracket situation, we're keeping it exactly as it is.)-duration hoursโ set the maximum lease duration in decimal hours. after this amount of time, all instances will be terminated, regardless of their idleness. defaults to 50 minutes. โฐ-idle hoursโ set the maximum idle duration in decimal hours. an instance that's been idle longer than this duration will terminate itself. defaults to 15 minutes. bye bestie, you're done here. ๐-yesโ start the annex automatically without the yes/no confirmation prompt. no questions, just vibes. โก-tag name valueโ add a tag named name with value value to each instance in the requested annex. only works at annex creation. this option may be specified more than once. ๐ท๏ธ-config-dir /full/path/to/directoryโ copy the contents of/full/path/to/directoryto each instance's configuration directory. ๐-owner owner[, owner]*โ configure the annex so that only owner may start jobs there. by default, the annex is configured so that only the user runningcondor_annexmay start jobs there. ๐ค-no-ownerโ configure the annex so that anyone in the pool may use the annex. it's a party, everyone's invited. ๐-aws-region regionโ specify the region in which to create the annex. ๐
AWS ones โ๏ธ
-aws-user-data user-dataโ set the instance user data to user-data.-aws-user-data-file /full/path/to/fileโ set the instance user data to the contents of the file/full/path/to/file.-aws-default-user-data user-dataโ set the instance user data to user-data, if it's not already set. only applies to spot fleet requests. ๐ ๏ธ-aws-default-user-data-file /full/path/to/fileโ set the instance user data to the contents of the file/full/path/to/file, if it's not already set. only applies to spot fleet requests. ๐ ๏ธ
AWS on-demand instance ones ๐
-aws-on-demand-instance-type instance-typeโ this annex will request instances of type instance-type. the default for v8.7.1 is'm4.large'.-aws-on-demand-ami-id ami-idโ this annex will start instances of the AMI ami-id. the default for v8.7.1 is'ami-35b13223', a GPU-compatible Amazon Linux image with HTCondor pre-installed. pre-installed!! ๐-aws-on-demand-security-group-ids group-id[,group-id]โ this annex will start instances with the listed security group IDs. the default is the security group created by-setup.-aws-on-demand-key-name key-nameโ this annex will start instances with the key pair named key-name. the default is the key pair created by-setup.
AWS spot fleet ones ๐ฏ
-aws-spot-fleet-config-file /full/path/to/fileโ use the JSON blob in/full/path/to/filefor the spot fleet request.
the experts-only section ๐ง โจ
-aws-access-key-file /full/path/to/access-key-fileโ experts only.-aws-secret-key-file /full/path/to/secret-key-fileโ experts only.-aws-ec2-url https://ec2.<region>.amazonaws.comโ experts only.-aws-events-url https://events.<region>.amazonaws.comโ experts only.-aws-lambda-url https://lambda.<region>.amazonaws.comโ experts only.-aws-s3-url https://s3.<region>.amazonaws.comโ experts only.
the developers-only section ๐ ๏ธ๐
-aws-spot-fleet-lease-function-arn sfr-lease-function-arnโ developers only.-aws-on-demand-lease-function-arn odi-lease-function-arnโ developers only.-aws-on-demand-instance-profile-arn instance-profile-arnโ developers only.
๐ GENERAL REMARKS ๐
currently, only AWS is supported. the AMI configured by setup runs HTCondor v8.6.10 on Amazon Linux 2016.09, and the default instance type is "m4.large".
and here's the cute part: the default AMI has the appropriate drivers for AWS' GPU instance types. ๐ฎ GPU-ready out of the box, we love to see it.
๐ EXAMPLES ๐
example one: baby's first annex ๐ฃ
to start an on-demand annex named 'MyFirstAnnex' with one core, using the default AMI and instance type, run:
$ condor_annex -count 1 -annex-name MyFirstAnnex
you will be asked to confirm that the defaults are what you want. ๐ (unless you passed -yes, but that's a whole other thing.)
example two: the expensive one ๐ธ
as of 2017-04-17, the following example will cost a minimum of $90. not a typo. ninety. dollars. ๐
to start an on-demand annex with 100 GPUs that job owners 'big' and 'little' may use (be sure to include yourself!), run:
$ condor_annex -count 100 -annex-name MySecondAnnex \
-aws-on-demand-instance-type p2.xlarge -owner "big, little"
๐ซถ bestie please reread that "be sure to include yourself" bit. if you're not in the -owner list you just bought 100 GPUs for other people. iconic of you, but devastating.
โ EXIT STATUS โ
condor_annex will exit with a status value of 0 (zero) on success. clean exit, no drama. โจ
๐ AUTHOR ๐
HTCondor Team
๐ COPYRIGHT ๐
1990-2024, Center for High Throughput Computing, Computer Sciences Department, University of Wisconsin-Madison, Madison, WI, US. Licensed under the Apache License, Version 2.0.
and that's the whole page, bestie ๐ this was CONDOR_ANNEX(1) from the HTCondor Manual, dated Sep 19, 2025 โ go add some cloud resources to that pool and make it everyone's problem (in a good way). ๐โจ
๐ฆ where this page comes from
- fedora 43: condor 23.9.6-11.fc43 ยท Apache-2.0
- fedora 43: condor 23.9.6-11.fc43 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms