Use Case: How do I deploy minions using the API in a Linux environment

The goal of this use case is to programmatically install the Salt minion service on a minion by connecting a Linux VM to your Automation Config environment.
Before you can deploy a minion using the API in a Linux environment, you must:
  • Have a Automation Config environment with RaaS deployed.
  • Have a Salt master and Salt minion installed.
  • Have a Linux VM deployed.
  • Ensure port 22 is not firewalled and available for minion use.
  1. Verify that the folder
    etc/salt/cloud.deploy.d
    contains a collection of these files.These files should match the OS distribution release as well as the Salt release that your system requires.
    A list of the required files in the cloud.deploy.d directory on a Salt
                            Master
    If you do not see the files, contact support.
    The xxxx in the filename, for example, salt-xxxx-redhat-8-x86_64-amd64.tar.gz, should match the version of the Salt master. To verify the version of the Salt master, run the
    salt-master -V
    command on the Salt master.
  2. If your environment is air-gapped, complete these steps:
    1. Open the RaaS configuration file in
      /etc/raas/raas
      .
    2. Add these lines to the configuration file:
      minion_deployment: airgap_install: true
    3. Restart the RaaS service using the
      service raas restart
      command.
    If you are using a hardened Linux VM, there are some situations where scripts cannot be run from
    /tmp
    on the VM.
    • If you are using Automation Assembler version 8.10.2 or higher: Add the
      additionalAuthParams
      property to the Automation Config resource in your cloud template. For more information, see Add the Automation Config resource to the cloud template.
      additionalAuthParams: profile: tmp_dir: /var/cache/salt
    • If you are using Automation Assembler version 8.10.1 or lower: Modify the
      /etc/salt/cloud.providers.d/ssc_saltify_provider.conf
      file with
      ssc_saltify_provider: driver: saltify tmp_dir: /var/cache/salt
      If this configuration file does not exist, create it and add the setting above.
  3. To identify the FQDN of the Salt master, run the
    salt saltmaster grains.get fqdn
    command in the Salt master's terminal.
  4. Ensure that the FQDN is configured for the Salt master by running the
    ping [FQDN]
    command.
    The results of running the ping FQDN command on a Linux machine
  5. To open Python, run
    python3
    .
  6. Make this API call using an SSEAPI client with the correct credentials for your environment:
    from sseapiclient import APIClient client = APIClient('https://<master-ip>', '<ssc-username>', '<sscpassword>', ssl_validate_cert=False) client.api.minions.deploy_minion( master_id = '<master-id>', host_name_ip = '<prospective minion’s ip>', os = ‘<prospective minion’s os>’, minion_id = '<desired-minion-name-for-prospective-minion>', username = '<ssh-username-for-prospective-minion>', password = '<ssh-password-for-prospective-minion>', )
    The
    deploy.minion
    function begins running in your Automation Config environment. You can verify that the job is running in the
    Activity
    tab of the Automation Config user interface.
    If you are deploying a minion from Automation Assembler, then this API call is performed by Automation Assembler.
The minion was successfully deployed and configured from your Linux environment and API call.
Verify that the minion was deployed successfully by running a
test.ping
command against the minion using the
Run Command
window or by running the
\* test.ping
and
\* test.versions
commands in the Salt master command window.