{"id":19871966,"url":"https://github.com/saltstack-formulas/salt-cloud-reactor","last_synced_at":"2025-10-28T16:49:07.263Z","repository":{"id":17026312,"uuid":"19790392","full_name":"saltstack-formulas/salt-cloud-reactor","owner":"saltstack-formulas","description":"Autonomous Minion Management via Salt Cloud","archived":false,"fork":false,"pushed_at":"2015-11-17T07:34:57.000Z","size":7,"stargazers_count":37,"open_issues_count":0,"forks_count":11,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-05-02T09:48:48.724Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html","language":"SaltStack","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saltstack-formulas.png","metadata":{"files":{"readme":"README.rst","changelog":null,"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-05-14T18:07:21.000Z","updated_at":"2024-01-15T10:28:01.000Z","dependencies_parsed_at":"2022-07-26T12:01:59.858Z","dependency_job_id":null,"html_url":"https://github.com/saltstack-formulas/salt-cloud-reactor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/saltstack-formulas/salt-cloud-reactor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltstack-formulas%2Fsalt-cloud-reactor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltstack-formulas%2Fsalt-cloud-reactor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltstack-formulas%2Fsalt-cloud-reactor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltstack-formulas%2Fsalt-cloud-reactor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saltstack-formulas","download_url":"https://codeload.github.com/saltstack-formulas/salt-cloud-reactor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltstack-formulas%2Fsalt-cloud-reactor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281476669,"owners_count":26508145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2024-11-12T16:14:05.977Z","updated_at":"2025-10-28T16:49:07.191Z","avatar_url":"https://github.com/saltstack-formulas.png","language":"SaltStack","funding_links":[],"categories":[],"sub_categories":[],"readme":"salt-cloud-reactor\n==================\n\nThis is a reactor formula, which allows supported providers in Salt Cloud to\nnotify Salt when an instance is created, so that it may be automatically\nbootstrapped and accepted by the Salt Master, or when an instance is deleted,\nso that its key can be automatically removed from the Salt Master.\n\n\nDependencies\n------------\nThe following packages must be installed:\n\n.. code-block:: yaml\n\n    - Salt (develop branch)\n\n\nMaster Configuration\n--------------------\nThe following files need to be configured on the Salt Master:\n\n.. code-block:: yaml\n\n    - /etc/salt/master\n    - /etc/salt/cloud\n    - /etc/salt/cloud.providers.d/*\n\n\n/etc/salt/master\n~~~~~~~~~~~~~~~~\n\nThe master must be set up to point the reactor to the necessary Salt Cloud\nprovider setting. Any additional settings to be used on the target minion, that\nare not configured in the provider configuration, can also be set here.\n\n.. code-block:: yaml\n\n    reactor:\n      - 'salt/cloud/*/cache_node_new':\n        - '/srv/reactor/autoscale.sls'\n      - 'salt/cloud/*/cache_node_missing':\n        - '/srv/reactor/autoscale.sls'\n\n    autoscale:\n      provider: my-ec-config\n      ssh_username: root\n\n\n/etc/salt/cloud\n~~~~~~~~~~~~~~~\n\nSalt Cloud must be configured to use the cloud cachedir, and to generate events\nbased on the contents of it. The following two options need to be set:\n\n.. code-block:: yaml\n\n    update_cachedir: True\n    diff_cache_events: True\n\nThis will cause Salt Cloud to fire events to Salt when changes are detected on\nthe configured provider.\n\nSome of these events will contain data which describe a node. Because some of\nthe fields returned may contain sensitive data, the ``cache_event_strip_fields``\nconfiguration option exists to strip those fields from the event return.\n\n.. code-block:: yaml\n\n    cache_event_strip_fields:\n      - password\n      - priv_key\n\n\n/etc/salt/cloud.providers.d/*\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nExisting Salt Cloud provider configuration can be used with this reactor.\nProfile configuration is not necessary on the master; the instance is assumed\nto already be created by the time it hits the reactor.\n\n.. code-block:: yaml\n\n    my-ec2-config:\n      id: \u003caws id\u003e\n      key: \u003caws key\u003e\n      keyname: \u003cmy key name\u003e\n      securitygroup: \u003cmy security group\u003e\n      private_key: \u003c/path/to/my/priv_key.pem\u003e\n      location: us-east-1\n      provider: ec2\n      minion:\n        master: saltmaster.example.com\n\n:Note: The openstack cloud provider is currently broken and autoscaling will not work with it until\n  `this bug \u003chttps://github.com/saltstack/salt/issues/20932#issuecomment-76043607\u003e`_ is fixed.\n\nBasic Usage\n-----------\nOnce the Salt Master has been configured, the reactor will manage itself. When\n``salt-cloud -F`` or ``salt-cloud --full-query`` is issued against a configured\nprovider, the cloud cache will up reviewed and updated by Salt Cloud. When a\nnew instance is detected, Salt Cloud will be notified to wait for it to become\navailable, and bootstrap it with Salt. Its key will be automatically accepted,\nand if the minion configuration includes the appropriate startup state, then\nthe minion will configure itself, and go to work.\n\nWhen the autoscaler spins down a machine, the Wheel system inside of Salt will\nbe notified to delete its key from the master. This causes instances to be\ncompletely autonomous, both in setup and tear-down.\n\nIn order to perform these queries on a regular basis, the above command needs\nto be issued via a scheduling system, such as cron or the Salt Scheduler. It is\nrecommended in most configuration to use no less than a 5 minute delay between\nintervals, as a measure of respect to the cloud provider.\n\nCaveats\n-------\nBecause this data is polled for, rather than being triggered directly from the\ncloud provider, there will be a delay between the instance being created, and\nSalt Cloud being able to bootstrap it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaltstack-formulas%2Fsalt-cloud-reactor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaltstack-formulas%2Fsalt-cloud-reactor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaltstack-formulas%2Fsalt-cloud-reactor/lists"}