def start( ctx, agent_option, token, api, agent_config_id, name, verbose, label, env, namespace, job_template, no_pull, no_cloud_logs, base_url, import_path, show_flow_logs, volume, network, no_docker_interface, max_polls, agent_address, storage_labels, hostname_label, ): """ Start an agent. DEPRECATED: use `prefect agent <agent-type> start` instead. \b Arguments: agent-option TEXT The name of an agent to start (e.g. `docker`, `kubernetes`, `local`, `fargate`). Defaults to `local` \b Options: --token, -t TEXT A Prefect Cloud API token with RUNNER scope --api, -a TEXT A Prefect API URL --agent-config--id TEXT An agent ID to link this agent instance with --name, -n TEXT A name to use for the agent --verbose, -v Enable verbose agent DEBUG logs Defaults to INFO level logging --label, -l TEXT Labels the agent will use to query for flow runs Multiple values supported e.g. `-l label1 -l label2` --env, -e TEXT Environment variables to set on each submitted flow run. Note that equal signs in environment variable values are not currently supported from the CLI. Multiple values supported. e.g. `-e AUTH=token -e PKG_SETTING=true` --max-polls INT Maximum number of times the agent should poll the Prefect API for flow runs. Will run forever if not specified. --no-cloud-logs Turn off logging to the Prefect API for all flow runs Defaults to `False` --agent-address TEXT The address to server internal api at. Currently this is just health checks for use by an orchestration layer (e.g. kubernetes). Leave blank for no api server (default). \b Local Agent: --import-path, -p TEXT Import paths which will be provided to each Flow's runtime environment. Used for Flows which might import from scripts or local packages. Multiple values supported. e.g. `-p /root/my_scripts -p /utilities` --show-flow-logs, -f Display logging output from flows run by the agent (available for Local and Docker agents only) --hostname-label Add hostname to the Agent's labels (Default to True. Disable with --no-hostname-label option) --storage-labels Add all storage labels to the Agent (Default to True. Disable with --no-storage-labels option) \b Docker Agent: --base-url, -b TEXT A Docker daemon host URL for a DockerAgent --no-pull Pull images for a DockerAgent Defaults to pulling if not provided --volume TEXT Host paths for Docker bind mount volumes attached to each Flow runtime container. Multiple values supported. e.g. `--volume /some/path` --network TEXT Add containers to an existing docker network --no-docker-interface Disable the check of a Docker interface on this machine. Note: This is mostly relevant for some Docker-in-Docker setups that users may be running their agent with. \b Kubernetes Agent: --namespace TEXT A Kubernetes namespace to create Prefect jobs in Defaults to env var `NAMESPACE` or `default` --job-template TEXT Path to a job template to use instead of the default. \b Fargate Agent Options: Any of the configuration options outlined in the docs can be provided here https://docs.prefect.io/orchestration/agents/fargate.html#configuration """ # Split context kwargs = dict() for item in ctx.args: item = item.replace("--", "") kwargs.update([item.split("=")]) tmp_config = { "cloud.agent.auth_token": token or config.cloud.agent.auth_token, } if verbose: tmp_config["cloud.agent.level"] = "DEBUG" if api: tmp_config["cloud.api"] = api with set_temporary_config(tmp_config): retrieved_agent = _agents.get(agent_option, None) if not retrieved_agent: click.secho("{} is not a valid agent".format(agent_option), fg="red", err=True) return click.secho( f"Warning: `prefect agent start {agent_option}` is deprecated, use " f"`prefect agent {agent_option} start` instead", fg="yellow", err=True, ) env_vars = dict() for env_var in env: k, v = env_var.split("=") env_vars[k] = v labels = sorted(set(label)) if agent_option == "local": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, agent_address=agent_address, import_paths=list(import_path), show_flow_logs=show_flow_logs, no_cloud_logs=no_cloud_logs, hostname_label=hostname_label, storage_labels=storage_labels, ).start() elif agent_option == "docker": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, no_cloud_logs=no_cloud_logs, agent_address=agent_address, base_url=base_url, no_pull=no_pull, show_flow_logs=show_flow_logs, volumes=list(volume), network=network, docker_interface=not no_docker_interface, ).start() elif agent_option == "fargate": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, no_cloud_logs=no_cloud_logs, agent_address=agent_address, **kwargs, ).start() elif agent_option == "kubernetes": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, namespace=namespace, job_template_path=job_template, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, no_cloud_logs=no_cloud_logs, agent_address=agent_address, ).start() else: from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, no_cloud_logs=no_cloud_logs, agent_address=agent_address, ).start()
def install( name, token, api, namespace, image_pull_secrets, resource_manager, rbac, latest, mem_request, mem_limit, cpu_request, cpu_limit, label, import_path, show_flow_logs, ): """ Install an agent. Outputs configuration text which can be used to install on various platforms. The Prefect image version will default to your local `prefect.__version__` \b Arguments: name TEXT The name of an agent to install (e.g. `kubernetes`, `local`) \b Options: --token, -t TEXT A Prefect Cloud API token --label, -l TEXT Labels the agent will use to query for flow runs Multiple values supported e.g. `-l label1 -l label2` \b Kubernetes Agent Options: --api, -a TEXT A Prefect Cloud API URL --namespace, -n TEXT Agent namespace to launch workloads --image-pull-secrets, -i TEXT Name of image pull secrets to use for workloads --resource-manager Enable resource manager on install --rbac Enable default RBAC on install --latest Use the `latest` Prefect image --mem-request TEXT Requested memory for Prefect init job --mem-limit TEXT Limit memory for Prefect init job --cpu-request TEXT Requested CPU for Prefect init job --cpu-limit TEXT Limit CPU for Prefect init job \b Local Agent Options: --import-path, -p TEXT Absolute import paths to provide to the local agent. Multiple values supported e.g. `-p /root/my_scripts -p /utilities` --show-flow-logs, -f Display logging output from flows run by the agent """ supported_agents = { "kubernetes": "prefect.agent.kubernetes.KubernetesAgent", "local": "prefect.agent.local.LocalAgent", } retrieved_agent = supported_agents.get(name, None) if not retrieved_agent: click.secho("{} is not a supported agent for `install`".format(name), fg="red") return if name == "kubernetes": deployment = from_qualified_name( retrieved_agent).generate_deployment_yaml( token=token, api=api, namespace=namespace, image_pull_secrets=image_pull_secrets, resource_manager_enabled=resource_manager, rbac=rbac, latest=latest, mem_request=mem_request, mem_limit=mem_limit, cpu_request=cpu_request, cpu_limit=cpu_limit, labels=list(label), ) click.echo(deployment) elif name == "local": conf = from_qualified_name(retrieved_agent).generate_supervisor_conf( token=token, labels=list(label), import_paths=list(import_path), show_flow_logs=show_flow_logs, ) click.echo(conf)
def start( ctx, agent_option, token, name, verbose, label, env, namespace, no_pull, no_cloud_logs, base_url, import_path, show_flow_logs, volume, max_polls, ): """ Start an agent. \b Arguments: agent-option TEXT The name of an agent to start (e.g. `docker`, `kubernetes`, `local`, `fargate`, `nomad`) Defaults to `local` \b Options: --token, -t TEXT A Prefect Cloud API token with RUNNER scope --name, -n TEXT A name to use for the agent --verbose, -v Enable verbose agent DEBUG logs Defaults to INFO level logging --label, -l TEXT Labels the agent will use to query for flow runs Multiple values supported e.g. `-l label1 -l label2` --env, -e TEXT Environment variables to set on each submitted flow run. Note that equal signs in environment variable values are not currently supported from the CLI. Multiple values supported e.g. `-e AUTH=token -e PKG_SETTING=true` --max-polls INT Maximum number of times the agent should poll Prefect Cloud for flow runs. Will run forever if not specified. --no-cloud-logs Turn off logging to Prefect Cloud for all flow runs Defaults to `False` \b Local Agent Options: --import-path, -p TEXT Import paths which will be provided to each Flow's runtime environment. Used for Flows which might import from scripts or local packages. Multiple values supported e.g. `-p /root/my_scripts -p /utilities` --show-flow-logs, -f Display logging output from flows run by the agent (available for Local and Docker agents only) \b Docker Agent Options: --base-url, -b TEXT A Docker daemon host URL for a DockerAgent --no-pull Pull images for a DockerAgent Defaults to pulling if not provided --volume TEXT Host paths for Docker bind mount volumes attached to each Flow runtime container. Multiple values supported e.g. `--volume /some/path --volume /some/other/path` \b Kubernetes Agent Options: --namespace TEXT A Kubernetes namespace to create Prefect jobs in Defaults to env var `NAMESPACE` or `default` \b Fargate Agent Options: Any of the configuration options outlined in the docs can be provided here https://docs.prefect.io/cloud/agents/fargate.html#configuration """ # Split context kwargs = dict() for item in ctx.args: item = item.replace("--", "") kwargs.update([item.split("=")]) tmp_config = { "cloud.agent.auth_token": token or config.cloud.agent.auth_token, "logging.log_to_cloud": False if no_cloud_logs else True, } if verbose: tmp_config["cloud.agent.level"] = "DEBUG" with set_temporary_config(tmp_config): retrieved_agent = _agents.get(agent_option, None) if not retrieved_agent: click.secho("{} is not a valid agent".format(agent_option), fg="red") return env_vars = dict() for env_var in env: k, v = env_var.split("=") env_vars[k] = v if agent_option == "local": from_qualified_name(retrieved_agent)( name=name, labels=list(label), env_vars=env_vars, max_polls=max_polls, import_paths=list(import_path), show_flow_logs=show_flow_logs, ).start() elif agent_option == "docker": from_qualified_name(retrieved_agent)( name=name, labels=list(label), env_vars=env_vars, max_polls=max_polls, base_url=base_url, no_pull=no_pull, show_flow_logs=show_flow_logs, volumes=list(volume), ).start() elif agent_option == "fargate": from_qualified_name(retrieved_agent)(name=name, labels=list(label), env_vars=env_vars, max_polls=max_polls, **kwargs).start() elif agent_option == "kubernetes": from_qualified_name(retrieved_agent)( namespace=namespace, name=name, labels=list(label), env_vars=env_vars, max_polls=max_polls, ).start() else: from_qualified_name(retrieved_agent)( name=name, labels=list(label), env_vars=env_vars, max_polls=max_polls, ).start()
def install( name, token, api, namespace, image_pull_secrets, resource_manager, rbac, latest, mem_request, mem_limit, cpu_request, cpu_limit, image_pull_policy, service_account_name, label, env, import_path, show_flow_logs, backend, ): """ Install an agent. Outputs configuration text which can be used to install on various platforms. The Prefect image version will default to your local `prefect.__version__` \b Arguments: name TEXT The name of an agent to install (e.g. `kubernetes`, `local`) \b Options: --token, -t TEXT A Prefect Cloud API token --label, -l TEXT Labels the agent will use to query for flow runs Multiple values supported. e.g. `-l label1 -l label2` --env, -e TEXT Environment variables to set on each submitted flow run. Note that equal signs in environment variable values are not currently supported from the CLI. Multiple values supported. e.g. `-e AUTH=token -e PKG_SETTING=true` \b Kubernetes Agent: --api, -a TEXT A Prefect API URL --namespace, -n TEXT Agent namespace to launch workloads --image-pull-secrets, -i TEXT Name of image pull secrets to use for workloads --resource-manager Enable resource manager on install --rbac Enable default RBAC on install --latest Use the `latest` Prefect image --mem-request TEXT Requested memory for Prefect init job --mem-limit TEXT Limit memory for Prefect init job --cpu-request TEXT Requested CPU for Prefect init job --cpu-limit TEXT Limit CPU for Prefect init job --image-pull-policy TEXT imagePullPolicy for Prefect init job --service-account-name TEXT Name of Service Account for Prefect init job --backend TEST Prefect backend to use for this agent Defaults to the backend currently set in config. \b Local Agent: --import-path, -p TEXT Absolute import paths to provide to the local agent. Multiple values supported. e.g. `-p /root/my_scripts -p /utilities` --show-flow-logs, -f Display logging output from flows run by the agent """ supported_agents = { "kubernetes": "prefect.agent.kubernetes.KubernetesAgent", "local": "prefect.agent.local.LocalAgent", } retrieved_agent = supported_agents.get(name, None) if not retrieved_agent: click.secho("{} is not a supported agent for `install`".format(name), fg="red") return env_vars = dict() for env_var in env: k, v = env_var.split("=") env_vars[k] = v labels = list(set(label)) if name == "kubernetes": deployment = from_qualified_name( retrieved_agent).generate_deployment_yaml( token=token, api=api, namespace=namespace, image_pull_secrets=image_pull_secrets, resource_manager_enabled=resource_manager, rbac=rbac, latest=latest, mem_request=mem_request, mem_limit=mem_limit, cpu_request=cpu_request, cpu_limit=cpu_limit, image_pull_policy=image_pull_policy, service_account_name=service_account_name, labels=labels, env_vars=env_vars, backend=backend, ) click.echo(deployment) elif name == "local": conf = from_qualified_name(retrieved_agent).generate_supervisor_conf( token=token, labels=labels, import_paths=list(import_path), show_flow_logs=show_flow_logs, ) click.echo(conf)
env_vars = dict() for env_var in env: k, v = env_var.split("=") env_vars[k] = v labels = sorted(set(label)) if agent_option == "local": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, agent_address=agent_address, import_paths=list(import_path), show_flow_logs=show_flow_logs, no_cloud_logs=no_cloud_logs, hostname_label=hostname_label, storage_labels=storage_labels, ).start() elif agent_option == "docker": from_qualified_name(retrieved_agent)( agent_config_id=agent_config_id, name=name, labels=labels, env_vars=env_vars, max_polls=max_polls, no_cloud_logs=no_cloud_logs, agent_address=agent_address,
def start(ctx, agent_option, token, name, verbose, label, no_pull, base_url): """ Start an agent. \b Arguments: agent-option TEXT The name of an agent to start (e.g. `local`, `kubernetes`, `fargate`, `nomad`) Defaults to `local` \b Options: --token, -t TEXT A Prefect Cloud API token with RUNNER scope --name, -n TEXT A name to use for the agent --verbose, -v Enable verbose agent DEBUG logs Defaults to INFO level logging --label, -l TEXT Labels the agent will use to query for flow runs Multiple values supported e.g. `-l label1 -l label2` \b Local Agent Options: --base-url, -b TEXT A Docker daemon host URL for a LocalAgent --no-pull Pull images for a LocalAgent Defaults to pulling if not provided \b Fargate Agent Options: Any of the configuration options outlined in the docs can be provided here https://docs.prefect.io/cloud/agent/fargate.html#configuration """ # Split context kwargs = dict() for item in ctx.args: item = item.replace("--", "") kwargs.update([item.split("=")]) tmp_config = { "cloud.agent.auth_token": token or config.cloud.agent.auth_token } if verbose: tmp_config["cloud.agent.level"] = "DEBUG" with set_temporary_config(tmp_config): retrieved_agent = _agents.get(agent_option, None) if not retrieved_agent: click.secho("{} is not a valid agent".format(agent_option), fg="red") return _agent = from_qualified_name(retrieved_agent) if agent_option == "local": from_qualified_name(retrieved_agent)( name=name, labels=list(label), base_url=base_url, no_pull=no_pull, ).start() elif agent_option == "fargate": from_qualified_name(retrieved_agent)(name=name, labels=list(label), **kwargs).start() else: from_qualified_name(retrieved_agent)(name=name, labels=list(label)).start()