Cloud based distributed TLC
    1 Motivation
    
      - Move long running model checking off local machine into
      the cloud (Short running models not ideal because instance
      spin-up time is approximately five minutes)
 
      - Maximize cloud instance resource utilization by providing
      fine-tuned TLC parameter pre-sets optimized for the given
      cloud instance type
 
      - Minimizes costs by terminating cloud instances
      immediately after TLC model checking has ended
        
          - Unless email delivery of model checking result fails
          (n this case the machine remains running for the user to
          pick up the result manually)
 
          - User then has to terminate the instance
          manually!
 
        
       
    
    2 Warning
    
      Using cloud based TLC launches compute instances at your
      cloud provider which may incur costs. While the cloud based
      distributed TLC tries to minimize costs by terminating
      instances as soon as possible, do not rely on it. Always
      check if cloud instances have been correctly terminated.
    
    3 Limitation
    
      - Only supports two cloud providers (Amazon EC2 and Microsoft
      Azure) as of now
        
          - On Azure, the VM instances just stoppes but does not
          
          deallocate automatically. Please make sure to
          manually shutdown the VM instance after TLC
          finishes.
 
        
       
      - Runs TLC in non-distributed mode on a single cloud
      instance only as of now
 
      - Only a single instance type per cloud (m4.2xlarge
      and 
      D14) supported as of now
 
      - Cloud based distributed TLC cannot recover from a
      checkpoint
 
    
    4 Usage
    
    
      - Set 
        AWS access key and secret as environment
        variables prior to launching the Toolbox. See the
        example with dummy keys below.
        
          
            - 
              
                
export AWS_ACCESS_KEY_ID=AKIA7D89HCLJKHZASD7F
export AWS_SECRET_ACCESS_KEY=6FDASAIG7DAS976TYDKHCGQAS5D\FA77
               
             
            - 
              
             
            - Alternatively for Azure (assuming you already have
            an Azure subscription), please follow 
            Use the portal to create an Azure AD application and
            service principal that can access resources.
            As Sign-on URL you can choose the TLA+ GitHub
            URL: https://github.com/tlaplus/tlaplus 
            - Finally configure the Azure specific environment
            variables as shown below for Command Prompt and
            PowerShell.
              
                
## Called "Application ID" in the Azure manual
export AZURE_COMPUTE_SERVICE_PRINCIPAL=TheAzureApplicationID
## Called "Value" in the Azure manual
export AZURE_COMPUTE_SERVICE_PRINCIPAL_PASSWORD=TheAzureApplicationKeyValue
## Called "Directory ID" in the Azure manual
export AZURE_COMPUTE_TENANT=TheAzureDirectoryId
## The "Subscription ID" shown in the overview section of "Cost Management + Billing" in Azure Portal
export AZURE_COMPUTE_SUBSCRIPTION=YourAzureSubscriptionId
        
               
             
            - On Windows in the Command Prompt, set the
            environment variable with:
              
set AZURE_COMPUTE_SERVICE_PRINCIPAL=TheAzureApplicationID
set AZURE_COMPUTE_SERVICE_PRINCIPAL_PASSWORD=TheAzureApplicationKey
set AZURE_COMPUTE_TENANT=TheAzureDirectoryId
set AZURE_COMPUTE_SUBSCRIPTION=YourAzureSubscriptionId
If you prefer PowerShell, do (notice the quotes):
              
$env:AZURE_COMPUTE_SERVICE_PRINCIPAL="ThePasswordUsedForTheCertificate"
$env:AZURE_COMPUTE_SERVICE_PRINCIPAL_PASSWORD="TheAzureApplicationKey"
$env:AZURE_COMPUTE_TENANT="TheAzureDirectoryId"
$env:AZURE_COMPUTE_SUBSCRIPTION="YourAzureSubscriptionId"
                
To set the variables permanently, use the
              
              setx command.
              DO NOT use Cygwin shell to set the environment
              variables and launch the Toolbox. It will lead to
              obscure exceptions at runtime.
             
            - 
              
             
            - Besides AWS and Azure, packet.net's
            t1.small.x86 baremetal instances provide a budget
            environment to run Cloud TLC.
              
                
## Called "API Key" in app.packet.net
export PACKET_NET_APIKEY=YourPacketNetAPIKey
## Called "Organization ID" in app.packet.net
export PACKET_NET_PROJECT_ID=YourOrganizationId
                                
               
             
          
         
       
      - Create a specification and a model
 
      - Open your model in the model editor
        
      
 
      - Expand the “How to run” section of the “Model Overview”
      page
        
      
 
      - Select “aws-ec2” from the “Run in distributed mode” drop
      down
        
      
 
      - Enter an email address into “Result mailto address” at
      which you want to receive the model checking result
        
      
 
      - Click “Run TLC” to start model checking in the cloud and
      wait for the start-up to finish (it takes approximately five
      minutes to set-up the cloud instance)
        
          - The Toolbox switches to the “Model checking results”
          page and opens a progress dialog indicating the state of
          cloud instance provisioning
            
          
 
          - After provisioning the cloud instance, the Toolbox
          prompts the user to open a website in a browser.
            This website is hosted on the cloud instance and
            shows the TLC process output as well as runtime
            statistics similar to Toolbox stats
            
          
 
        
       
      - Walk out and enjoy the weekend while TLC is busy
      checking
 
      - On Monday expect to find an email in your inbox
        
      
 
      - Save MC.out file somewhere to disc
 
      - Switch back to the Toolbox and open the model editor
 
      - Open the “Model Checking Results” page
        
      
 
      - 
        Import the MC.out from disc
        
      
 
      - Voilá
        
      
 
    
    5 Common problems