---
title: "Creating your First WordPress Site with Ansible"
description: "A low-cost High-Availability Cloud Server is one of the best ways to host websites and other web apps. However, deploying the software can be time-consuming depending on your experience level...."
url: https://www.inmotionhosting.com/support/edu/ansible/creating-wordpress-with-ansible/
date: 2020-04-14
modified: 2020-12-03
author: "InMotion Hosting Contributor"
categories: ["Ansible Tutorials"]
type: post
lang: en
---

# Creating your First WordPress Site with Ansible

A low-cost High-Availability Cloud Server is one of the best ways to host websites and other web apps. However, deploying the software can be time-consuming depending on your experience level. Luckily, with our included [Ansible Control Node](https://www.inmotionhosting.com/ansible) and WordPress UltraStack Ansible Playbook, you can deploy a WordPress site with all necessary dependencies easily. In this guide, we’ll show you how to run an Ansible playbook to get a WordPress site up and running in just minutes.

In this article: 

- [Add SSH Keys to your Server ](#add-keys)
- [Add SSH Key and Start Ansible Control Node](#start-ansible)
- [SSH into the Ansible Control Node](#ssh-into-ansible)
- [Add Your Ansible Control Node Public Key to your Target Cloud Server](#add-key-to-target)
- [Customize and Run Ansible Playbook](#run-playbook)

## Add SSH Keys to your Server

1. If this is your first time [accessing AMP](https://www.inmotionhosting.com/support/amp/viewing-account-technicial-information-in-amp/) after purchasing a Cloud Server, clicking on “**Access My Server**” will also take you directly to the **Manage SSH Keys** section.
2. Open **Terminal** or **Powershell**.
3. Type the following then hit Enter.ssh-keygen -t rsa -b 4096
4. Press Enter again when you see a prompt to “*Enter file in which to save the key*“.
5. When prompted, type a secure passphrase, then press Enter.
6. When prompted type the secure passphrase again to confirm, then press Enter. This will generate a public and private key.
7. Open the public key (/home/username/.ssh/id_rsa.pub) and copy the entire text.
8. On the *Manage SSH Keys* page, click the blue **ADD KEY** button.
9. In the **Label** field, put a name to help you identify what the key is for.
10. In the **Public Key** field paste the public key you generated and copied in the first section. By default it will usually be called “id_rsa.pub” and the first line should start with “*ssh-rsa*“.
11. Choose your server from the “**Install To**” drop-down menu.
12. Click the **ADD KEY** button.

### Test your SSH Connection

You can test if your key was added successfully by connecting to your server via SSH.

1. Go to the main AMP page by clicking **My Account**. 
2. Click the **Account Technical Details** button.
3. Use your **IP address** or **Hostname** to SSH into your server as the “root” user. For example:ssh root@1.2.3.4ssh root@vps12345.inmotionhosting.com
4. Log out of your server with the exit command.exit

## Add SSH Key and Start Ansible Control Node

1. On the main AMP page, click the **Ansible Control Node** button.
2. On the first visit to the Ansible Control Node page, you’ll be prompted to select an existing public key or add a new key. Choose your existing key then click the **Add Key** button.
3. Now scroll down and click the **Start Ansible** Button.
4. Save the provided **username**, **port**, and **IP address**

## SSH into the Ansible Control Node

1. Open Terminal or Powershell and SSH into your Ansible Control Node using the **username**, **port**, and **IP address** you just saved. e.g. ssh username@IPaddress -p port-number.ssh ansible@1.2.3.4 -p 1234
2. Create an SSH key on the Ansible Control Node by running the following command.ssh-keygen -t rsa -b 4096Press Enter again when you see a prompt to “*Enter file in which to save the key*“.
3. When prompted, type a secure passphrase, then press Enter.
4. When prompted type the secure passphrase again to confirm, then press Enter. This will generate a public and private key.
5. Open the public key (/home/username/.ssh/id_rsa.pub) and copy the entire text.

## Add Your Ansible Control Node Public Key to your Target Cloud Server

1. In [AMP](https://www.inmotionhosting.com/support/amp/viewing-account-technicial-information-in-amp/), click the **Manage SSH Keys** button.
2. Click the blue **ADD KEY** button.
3. In the **Label** field put a name to help you identify what the key is for.
4. Paste your key into the **Public Key** field. The first line should start with “*ssh-rsa*“.
5. Choose your server from the “**Install To**” drop-down menu.
6. Click the blue **ADD KEY** button at the bottom of the popup once you have finished filling in the fields. Once the installation is complete, you will see a message stating “*Public key successfully installed*“.

## Customize and Run Ansible Playbook

1. If you are not still connected, SSH into your Ansible Control Node using the **username**, **port**, and **IP address**. ssh ansible@1.2.3.4 -p 1234
2. You should be in the /home/ansible directory. Navigate to the playbook with the following command. cd wordpress-ultrastack-ansible
3. Copy the sample inventory.yml file to a new file with this command. cp inventory.sample.yml inventory.yml
4. Edit inventory.yml in your preferred text editor. For example: nano inventory.yml
5. In the new inventory.yml file, you will need to edit the placeholder values under hosts for **site_domain**, **site_email**, **site_user**, and **site_pass**. At a minimum, you will need to change the references to **domain.tld**.  For example, instead of domain.tld you can use the IP address or hostname of your server listed under [Account Technical Details](https://www.inmotionhosting.com/support/amp/viewing-account-technicial-information-in-amp/) in AMP.
6. Run the playbook in your Ansible control Node with the following command. ansible-playbook -i inventory.yml site.deploy.yml
7. You will be prompted for your secure passphrase. Type it then click the Enter key.

After your playbook runs successfully, visit the address you chose as the replacement for “domain.tld” to see your new WordPress website!
