How to test your RightScale script without creating unnecessary revisions

There are certain functions in RightScale scripts (RightScripts) that you cannot test without launching a new instance. To test your script:

  1. Edit the Head revision of the RightScale script and save it,
  2. Attach the Head revision of the RightScale script to the Head revision of the RightScale Server Template,
  3. In your Self Service CAT file reference revision 0 (zero) of the Server Template (Head revision),
  4. Upload the Self Service CAT file to Self Service,
  5. Launch a server instance from Self Service.

If the script has some errors, modify the Head revision of the RightScale script and launch a new server instance.

When the script works perfectly:

  1. Commit the RightScale script, creating a new RightScale script revision,
  2. Attach the committed revision of the RightScale script to the Server Template’s Head revision,
  3. Commit the Server Template, creating a new Server Template revision,
  4. Publish the new revision of the Server Template,
  5. Reference the new revision of the Server Template in your Self Service CAT file.

Custom Git Status and Git Pull commands to work with all of your repositories

If you work with many Git repositories it is easy to miss a repository when you commit your changes, and very time consuming to pull from all repositories.

It is easy to automate both processes.

On Macintosh

In this example, we will place all files in the ~/Git/devops-scripts folder. If you want to place your files at another location change it in the files below.

Create the Bash script files

  • Create a file with the list of Git repositories and save it as ~/Git/devops-scripts/git-repositories.txt
    You can separate groups of repositories with empty lines.
~/Git/MY_REPO1

~/Git/MY_REPO2
~/Git/MY_REPO3
  • Create a file to check the status of all Git repositories and save it as ~/Git/devops-scripts/git-status.sh
#!/bin/bash
input="$HOME/Git/devops-scripts/git-repositories.txt" # Use $HOME instead of ~ to refer to the home directory

RED='\033[0;31m'
NC='\033[0m' # No Color

while IFS= read -r folder
do

  if [[ !( -z "$folder" ) ]]; then

    eval cd $folder # Need EVAL, otherwise CD does not work if the path contains ~
    pwd | tr -d '\n'

    status=$(git status)

    if [[ $status == *"Untracked files"* ]]; then
      echo -e " ---- ${RED}New files added, please ADD${NC}" | tr -d '\n' # -e tells echo to enable backslash escapes
    fi

    if [[ $status == *"Changes not staged for commit"* ]]; then
      echo -e " ---- ${RED}Files changed, please ADD${NC}" | tr -d '\n' # -e tells echo to enable backslash escapes
    fi

    if [[ $status == *"Changes to be committed"* ]]; then
      echo -e " ---- ${RED}Please COMMIT${NC}" | tr -d '\n' # -e tells echo to enable backslash escapes
    fi

    if [[ $status == *"Your branch is ahead of"* ]]; then
      echo -e " ---- ${RED}Please PUSH${NC}" | tr -d '\n' # -e tells echo to enable backslash escapes
    fi

    echo

  fi
done < "$input"
  • Create a file to pull from all Git repositories and save it as ~/Git/devops-scripts/git-pull.sh
#!/bin/bash
input="$HOME/Git/devops-scripts/git-repositories.txt"   # Use $HOME instead of ~ to refer to the home directory
while IFS= read -r folder
do

  # $folder="~/Git/devops-publicscripts"

  if [[ !( -z "$folder" ) ]]; then

    eval cd $folder # Need EVAL, otherwise CD does not work if the path contains ~
    pwd
    git pull

  fi
done < "$input"

Enable the script execution

  • Open a terminal window in the ~/Git/devops-scripts folder
  • Run these commands to enable the execution of the Bash files
chmod u+x git-status.sh
chmod u+x git-pull.sh

Create an alias

Aliases allow you to execute commands from any folder in the command line and hide the complexity of the entire command.

If you use the iTerm terminal window

iTerm reads the configuration settings from the~/.zshrc file. If you use iTerm add the alias definitions to the end of the ~/.zshrc file.

  • Open the~/.zshrc file and add these lines to the end of it
alias status='~/Git/devops-scripts/git-status.sh'
alias pull='~/Git/devops-scripts/git-pull.sh'

If you use the built-in OSX Terminal

The built-in Terminal windows reads the configuration settings from the~/.bash_profile file.

  • Open the ~/.bash_profile file and add these lines to it
alias status='~/Git/devops-scripts/git-status.sh'
alias pull='~/Git/devops-scripts/git-pull.sh'
  • Refresh the settings in the Bash shell environment
source ~/.bash_profile

How to use it

Open a terminal window in any folder

To check if you need to add, commit or push files in a Git repository:

status

If you have added new files to the repository you get:

/Users/YOUR_USER_NAME/Git/devops-scripts —- New files added, please ADD

If you have changed files in a Git repository you get:

/Users/YOUR_USER_NAME/Git/devops-scripts —- Files changed, please ADD

If you have already executed the git add . command, but have not yet committed the changes:

/Users/YOUR_USER_NAME/Git/devops-scripts—- Please COMMIT

If you have already committed the changes, but have not pushed the to the remote repository:

/Users/YOUR_USER_NAME/Git/devops-scripts —- Please PUSH

To pull from every Git repository before you start to work

pull

 

 

Windows 10 can’t connect to this network

If your Windows 10 computer can successfully connect to some wireless networks, but cannot connect to certain wireless networks, it is possible, that the stored credentials are out of date. To force Windows 10 to ask you for the updated username and password

  1. In the Start Menu select Settings,
     
  2. On the Windows Settings page select Network & Internet,
  3. On the left side select Wi-Fi,
  4. On the Wi-Fi page select Manage known networks,
  5. Select the network you are not able to connect and click the Forget button,
  6. In the lower right corner of the screen select the Wi-Fi network icon, select the network, and click the Connect button.

 

How to find the AWS AMI that a RightScale server template is using

When you use RightScale to launch servers in the cloud, you want to use the same base image to test your Chef cookbooks in Test Kitchen.

Packer by Hashicorp is a utility to create custom server images based on cloud images. You supply the image ID and other configuration parameters to create a new custom image.

To find the AMI ID of the base image of the RightScale Server Template

  1. Open the RightScale user interface in your browser,
  2. Select the RightScale account where the server template was created,
  3. In RightScale Cloud Management select  Design / ServerTemplates,
  4. Select the server template,
  5. Select Images,
  6. Select the MultiCloud image,
  7. Select Clouds,
  8. Select the image in the region you are working in,
  9. The Resource UID is the AMI ID of the image.

Mailbox unavailable. The server response was: No such user here

When you send email from an application, most SMTP servers require authentication. Your application needs to supply a valid username and password to be able to connect to the server. This prevents strangers to use your SMTP server and send millions of spam emails.

When your application does not supply the correct credentials to connect to the SMTP server, instead of a descriptive message you can get this:

Mailbox unavailable. The server response was: <SEND_TO@SEND_TO.com> No such user here

The error message complains about the addressee, the email address you are sending the email to, instead of the username and password you try to use to access your SMTP server.

Make sure you are using the correct username and password to connect to the SMTP server.

Unable to read data from the transport connection: net_io_connectionclosed.

When your application tries to send an email using a Gmail account you may get the error message:

Unable to read data from the transport connection: net_io_connectionclosed.

One of the causes can be, when “Less secure apps” are not allowed to use the Gmail account.

To enable “Less secure apps” to use the Gmail account

  1. Log into Gmail and navigate to
    https://www.google.com/settings/security/lesssecureapps
  2. Select the Turn on radio button

 

The .NET MVC model has to have a parameterless constructor

When you create a class to be used as the model in a .NET MVC application, the class has to have a parameterless constructor. It is called during the POST when the user clicks the submit button of the form. If the class does not have a parameterless constructor, we will get the following generic error message. None of the breakpoints can help you to find the cause, and there is no entry in the event log.

The website cannot display the page
HTTP 500

Most likely causes:
•The website is under maintenance.
•The website has a programming error.

What you can try:
Refresh the page.
Go back to the previous page.
More information