<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Andrew Philp]]></title><description><![CDATA[DevOps & Infrastructure Consultant]]></description><link>https://andrewphilp.com/</link><image><url>https://andrewphilp.com/favicon.png</url><title>Andrew Philp</title><link>https://andrewphilp.com/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Thu, 28 Aug 2025 17:15:53 GMT</lastBuildDate><atom:link href="https://andrewphilp.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[4G Backup for Home Broadband]]></title><description><![CDATA[<p>I&apos;ve been thinking about how working from home means my wife and I are at the mercy of Virgin Media, and in 2022 we had a few outages. Nothing prolonged, but I wanted to add some automation and resiliency to ensure our internet connection is as stable as</p>]]></description><link>https://andrewphilp.com/4g-backup-for-home-broadband/</link><guid isPermaLink="false">63b5464104c8fd0001df3b66</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Fri, 06 Jan 2023 10:37:44 GMT</pubDate><content:encoded><![CDATA[<p>I&apos;ve been thinking about how working from home means my wife and I are at the mercy of Virgin Media, and in 2022 we had a few outages. Nothing prolonged, but I wanted to add some automation and resiliency to ensure our internet connection is as stable as possible. I wanted to do it for the most reasonable cost without another contract for a landline connection, so 4G seemed the obvious choice.</p><p>During any outages we&apos;ve tethered to our phones which is <em>fine</em> - but not great. Using O2 as our mobile provider means that we&apos;re still at the mercy of Virgin Media as, now they&apos;ve merged, there&apos;s a potential that O2 mobile data will be sent over VM backhaul: <a href="https://community.virginmedia.com/t5/Tech-Chatter/Could-Virgin-Leverage-O2s-backhaul-to-add-new-POPs-for-broadband/td-p/4905489">https://community.virginmedia.com/t5/Tech-Chatter/Could-Virgin-Leverage-O2s-backhaul-to-add-new-POPs-for-broadband/td-p/4905489</a> <br>This is just speculation though, I couldn&apos;t find anything concrete.</p><p>Both BT and Vodafone offer &quot;unbreakable&quot; wifi which consists of a 4G backup dongle which is plugged into the router they provide you with. From their respective websites:</p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-text">&quot;If you have Hybrid Connect and you lose your broadband connection, your Smart Hub 2 will wait a short time to see if the broadband comes back up. If it doesn&apos;t then it will automatically switch over to the EE mobile network. This takes about two to three minutes in total.&quot;</div></div><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-text">&quot;Your broadband back-up dongle is intended to give you a connection to our 4G network, when there is a total loss of service on your fixed line broadband&quot;</div></div><p>I don&apos;t like how vague this is - what&apos;s a &quot;short time&quot; or a &quot;total loss of service&quot;? How will it deal with sporadic routing issues or test the <em>quality</em> of your connection?</p><hr><p>My home network is modular - I prefer to have specific devices fulfilling their own roles, to make it easier to replace faulty equipment or upgrade one piece when new technologies come out. I use a Ubiquiti EdgeRouter ER3-Lite as my router, connected to the Virgin Media SuperHub in modem mode. Connected to the router is a TP-Link PoE switch, and connected to that is a Ubiquiti Unifi UAP-FlexHD. This setup has been working really well, and I get full Virgin Media line speed (500Mbps+) over WiFi.</p><p>As the EdgeRouter Lite has three ethernet interfaces, and I was only using two, I wondered how difficult it would be to add a 4G modem to one of the ports and use this as an automated failover connection. It turns out, not that difficult!</p><p>First of all I had to find a 4G modem which was suited to being on all the time and I found the <a href="https://teltonika-networks.com/product/trb140/">Teltonika TRB140</a> - usually used for IoT (Internet-of-Things) applications. I found one on eBay for a reasonable price (~&#xA3;50), added a power supply and LTE antenna, and put a &#xA3;5 ASDA Mobile SIM card (which runs on the Vodafone network) with 3GB of data in it just to check everything was working. The web interface is very easy to navigate, and it Just Worked (after receiving the SMS code from ASDA Mobile via the utility in the web interface to activate the SIM card and setting the mobile network APN (Access Point Name) to the correct one).</p><p>Running a speed test showed around 12Mbps down, and 20Mbps up. This isn&apos;t brilliant, but it&apos;s plenty to have one or two concurrent calls and keep connected during a Virgin Media outage. Latency was good and consistent at around 30ms pinging 1.1.1.1.</p><p>Once this was tested and working connected directly to my laptop, I changed the local IP of the modem, and connected it to the eth2 interface on the EdgeRouter. I added a static route so that traffic from my local network to the internal IP of the modem went out of the correct interface, and did the same for the SuperHub local IP (192.168.100.1) so that I can still check the status of both devices or modify configuration if needed.</p><p>I set the TRB140 to Passthrough mode, which means the EdgeRouter sees the &quot;external&quot; IP address of the modem (which is actually a CG-NAT 10.x.x.x address, not a real public IP) but is still accessible on the local IP where needed.</p><hr><p>Once this was done, I needed to configure the EdgeRouter to understand what the two interfaces were for. I didn&apos;t want some traffic going out through the 4G modem and some going out through the Virgin Media connection, so I had to do some research. I found <a href="https://help.ui.com/hc/en-us/articles/205145990-EdgeRouter-WAN-Load-Balancing">this page</a> from Ubiquiti on WAN load-balancing, which makes a passing reference to failover. However, it expects you to use the wizard which will overwrite the existing configuration - I didn&apos;t want to do this. I ran the following commands through the CLI to set things up:<br>(eth0 is the VM SuperHub, eth1 is the switch (local network), eth2 is the 4G modem)</p><pre><code># enter configure mode
configure

# create a PRIVATE_NETS network group (note I didn&apos;t add 10.x/8 due to concerns with CG-NAT IPs and LAN addresses, I guess I could&apos;ve been more specific)
set firewall group network-group PRIVATE_NETS network 192.168.0.0/16
set firewall group network-group PRIVATE_NETS network 172.16.0.0/12

# modify firewall rules for private traffic
set firewall modify balance rule 10 action modify
set firewall modify balance rule 10 destination group network-group PRIVATE_NETS
set firewall modify balance rule 10 modify table main

# modify firewall rules for WAN traffic
set firewall modify balance rule 20 action modify
set firewall modify balance rule 20 destination group address-group ADDRv4_eth0
set firewall modify balance rule 20 modify table main

set firewall modify balance rule 30 action modify
set firewall modify balance rule 30 destination group address-group ADDRv4_eth2
set firewall modify balance rule 30 modify table main

set firewall modify balance rule 110 action modify
set firewall modify balance rule 110 modify lb-group G

# local traffic
set interfaces ethernet eth1 firewall in modify balance

# WAN traffic
set load-balance group G interface eth0
set load-balance group G interface eth2

commit
save</code></pre><p>Doing the above got the router using the 4G modem, and running <code>curl https://ident.me</code> &#xA0;returned a Vodafone public IP. However, this is only one part - any connections from my local network could use the 4G connection. Let&apos;s add some availability testing and failover:</p><pre><code># For VM, ping 8.8.8.8 every 20s, 20s after the interface comes up, and count success or failure as 4 failed checks (80s minimum failover time)
set load-balance group G interface eth0 route-test count success 4
set load-balance group G interface eth0 route-test count failure 4

set load-balance group G interface eth0 route-test initial-delay 20 
set load-balance group G interface eth0 route-test interval 20

set load-balance group G interface eth0 route-test type ping target 8.8.8.8

# For 4G, ping 8.8.8.8 every 120s, 5s after the interface comes up, and count success as 4 checks (8 mins) and failure as 3 checks (6 mins)
# these are higher as they&apos;re not as important as the VM checks
set load-balance group G interface eth2 route-test count success 4
set load-balance group G interface eth2 route-test count failure 3

set load-balance group G interface eth2 route-test initial-delay 5 
set load-balance group G interface eth2 route-test interval 120

set load-balance group G interface eth0 route-test type ping target 8.8.8.8

# Only use 4G as failover
set load-balance group G interface eth2 failover-only

# Load balance internal traffic
set load-balance group G lb-local enable

# When failing over, flush the connection tracking table
set load-balance group G flush-on-active enable</code></pre><p>I had originally set these checks to run way too frequently and got ICMP traffic blocked by 1.1.1.1, which caused my connection to fail over. Oops. But, this highlighted an issue that needed solved - when failing back to the Virgin Media connection, a number of devices were still using the 4G connection. It turned out we need to flush the connection table on a fail back - failing over does this with the <code>flush-on-active enable</code> directive, but seemingly not the other way. I found this very helpful script which I set up at <code>/config/scripts/notification.sh</code>: <a href="https://github.com/dennisb1/edgerouter-load-balancing-notification">https://github.com/dennisb1/edgerouter-load-balancing-notification</a> - this gives me an email when the status changes and I also added a small function to flush the connection tracking table:</p><pre><code>if [ $INTF = &quot;eth0&quot; ] &amp;&amp; [ $STATUS = &quot;active&quot; ]
then                                           
  /usr/sbin/conntrack -F                       
fi  </code></pre><p>This was added to the load-balance group by running the following commands:</p><pre><code>configure
set load-balance group G transition-script /config/scripts/notification.sh
commit
save</code></pre><p>There are some useful commands when diagnosing failover problems:</p><pre><code>user@edgerouter:~$ show load-balance status    
Group G
    Balance Local  : true
    Lock Local DNS : false 
    Conntrack Flush: true
    Sticky Bits    : 0x00000000 
 
  interface   : eth0     
  reachable   : true     
  status: active   
  gateway     : &lt;VM Gateway IP&gt;
  route table : 201
  weight: 100%     
  fo_priority : 100
  flows
      WAN Out   : 270K   
      WAN In    : 1359   
      Local ICMP: 10914  
      Local DNS : 0
      Local Data: 77376  
 
  interface   : eth2     
  reachable   : true     
  status: failover 
  gateway     : &lt;CG-NAT IP for 4G&gt;
  route table : 202
  weight: 0%
  fo_priority : 60
  flows
      WAN Out   : 0
      WAN In    : 2
      Local ICMP: 1821
      Local DNS : 0
      Local Data: 0</code></pre><pre><code>admin@router:~$ show load-balance watchdog
Group G  
  eth0   
  status: OK   
  pings: 10924 
  fails: 1     
  run fails: 0/4     
  route drops: 0     
  ping gateway: 8.8.8.8 - REACHABLE    
   
  eth2   
  status: OK   
  pings: 1822  
  fails: 51    
  run fails: 0/3     
  route drops: 2     
  ping gateway: 8.8.8.8 - REACHABLE    
  last route drop   : Thu Jan  5 11:16:34 2023     
  last route recover: Thu Jan  5 11:18:35 2023   </code></pre><hr><p>I&apos;m happy enough with how it&apos;s running, and it has been very stable since setting it up. I&apos;ll need to do a proper failover test, maybe by pulling the power out of the SuperHub coax to fibre converter so the interfaces remain up. &#xA0;I have received a couple of email notifications of brief failover events, and these line up with the Broadband Quality Monitor I have running at <a href="https://www.thinkbroadband.com/broadband/monitoring/quality">ThinkBroadband</a>.</p><p>The only change I&apos;ve made to it since is to swap to a <a href="https://www.uswitch.com/mobiles/networks/lebara-mobile/">Lebara SIM card</a> which is &#xA3;6.95/month for 15GB data - this should be more than enough. If our VM connection wasn&apos;t as reliable, there are unlimited data SIMs out there for just a bit more money per month.</p><p>If I was to do it again, I would spend a bit more on the 4G modem - the TRB140 is great but it only has a single antenna. The RUT240 has two antennas presumably to help with MIMO capability and deliver higher speeds. If I ever need to in the future though, I can easily replace the 4G modem - maybe with a 5G modem!</p>]]></content:encoded></item><item><title><![CDATA[Replacing legacy VPNs with Cloudflare Access]]></title><description><![CDATA[<p>It&apos;s been a while since I wrote a post, and I thought I&apos;d dive into more VPN-related stuff.</p><p>Traditionally you would create a VPN server to access internal resources on your network, giving client access to whoever needed it and treating users who are logged in</p>]]></description><link>https://andrewphilp.com/replacing-legacy-vpns-with-cloudflare-access/</link><guid isPermaLink="false">62c35880c339cc0001f0519b</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Mon, 04 Jul 2022 21:58:47 GMT</pubDate><content:encoded><![CDATA[<p>It&apos;s been a while since I wrote a post, and I thought I&apos;d dive into more VPN-related stuff.</p><p>Traditionally you would create a VPN server to access internal resources on your network, giving client access to whoever needed it and treating users who are logged in as trustworthy. However, this comes with some headaches such as:</p><ul><li>Uptime, patching, monitoring requirements</li><li>Supporting users with connection issues/first time setup</li><li>Revoking access for users with a current session (or disabling users once they have left, if you don&apos;t have Single-Sign On (SSO) configured)</li><li>Exposing services on a port to the outside world</li></ul><p>Recently I&apos;ve been trialling <a href="https://www.cloudflare.com/en-gb/products/zero-trust/access/">Cloudflare Access</a>, which is a completely different way to access internal network resources. Rather than setting up a single server, or a fleet of VPN servers as I have done previously with Pritunl/OpenVPN, Cloudflare Access uses the &quot;Zero Trust&quot; security model. This means that regardless of your logged-in session state, each TCP/UDP connection you make has a policy driven decision whether you can make that connection or not behind it, according to the rules specified by the organisation.<br>Another benefit is that there is a single UDP outbound connection created by the <code>cloudflared</code> service, so no inbound ports are required to be opened, improving security. Traffic is routed to the nearest Cloudflare edge location to ensure low latency.</p><p>I found setup relatively simple:</p><ol><li>Create an Azure Active Directory tenant (free)</li><li>Register an App in Azure AD</li><li>Follow the steps in <a href="https://developers.cloudflare.com/cloudflare-one/identity/idp-integration/azuread/">this article</a> to configure the App in Azure AD and allow Cloudflare Zero Trust to use it as an identity provider (I also created a group in Azure AD to restrict who is allowed to connect)</li><li>Set up <code>cloudflared</code> (in my case as a Docker container), which sets up a Cloudflare Tunnel with the appropriate network CIDR block allowed to route traffic</li><li>Follow the steps in <a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/private-net/">this article</a> to configure Cloudflare Access</li><li>Create a Gateway Policy which allows the appropriate internal traffic to flow</li><li>Download the WARP client and log in with the Azure AD user account</li><li>Done!</li></ol><p>After a few tweaks (and re-reading the instructions...) I was able to use my connection just the same way as using a traditional VPN, without the hassle of maintaining a server to do so. <code>cloudflared</code> is a very simple service to set up and only needs a token to download its configuration and bootstrap itself.</p><p>All of this is free to get started. I&apos;m looking forward to testing <a href="https://developers.cloudflare.com/cloudflare-one/tutorials/ssh/">Cloudflare Access</a> next, to get rid of SSH key authentication.</p>]]></content:encoded></item><item><title><![CDATA[Nice one Microsoft!]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>As you may have noticed from previous posts, I like Azure but it&apos;s nowhere near as good as it could be. I was suprised when I received an email the other day stating that I hadn&apos;t claimed my &quot;MCSA&quot; badge on some social network</p>]]></description><link>https://andrewphilp.com/nice-one-microsoft/</link><guid isPermaLink="false">6043d00c6a21610001e80cce</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Tue, 15 Nov 2016 22:33:34 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>As you may have noticed from previous posts, I like Azure but it&apos;s nowhere near as good as it could be. I was suprised when I received an email the other day stating that I hadn&apos;t claimed my &quot;MCSA&quot; badge on some social network (Acclaim?) which was confusing.</p>
<p>The requirements for MCSA when I took the 70-534 and 70-533 exams to gain the Microsoft Certified Solutions Associate was to pass all three of the 70-{532-534} series of exams.</p>
<p>It looks like the requirements were changed in September 2016 and have applied retroactively, so now I can say that I&apos;m an MCSA: Cloud Platform!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[5 out of 5]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Today marks a massive career goal and personal achievement for me: I passed my final Amazon Web Services exam.</p>
<p>I was set a goal when I first joined Cloudreach as an Engineer in April 2014 to get my AWS Solutions Architect and SysOps Administrator exams (both Associate level) within six</p>]]></description><link>https://andrewphilp.com/5-out-of-5/</link><guid isPermaLink="false">6043d00c6a21610001e80ccd</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Wed, 25 May 2016 17:42:30 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Today marks a massive career goal and personal achievement for me: I passed my final Amazon Web Services exam.</p>
<p>I was set a goal when I first joined Cloudreach as an Engineer in April 2014 to get my AWS Solutions Architect and SysOps Administrator exams (both Associate level) within six months. I managed to do it in six months and 4 days to be exact, passing the Solutions Architect in August and the SysOps in October. As I had passed the SysOps certification I was invited to take part in the DevOps Engineer Professional exam beta, which was tough as it had double the number of questions (over 100!) and you had to wait a few weeks for your result. Thankfully I passed this in February 2015, albeit not with a great pass mark but I was sitting it to get experience to re-sit the final exam - if you failed the beta you were given a free retest.</p>
<p>I then moved on to Azure, gaining my 70-534 then 70-533 by the end of 2015.</p>
<p>I hadn&apos;t sat an AWS exam in over a year when a reminder that my Associate level Solutions Architect exam was expiring in August dropped into my inbox. I thought it&apos;d be a good challenge to get the AWS Solutions Architect Professional exam before then. Through a combination of work resources (thanks Alberto!) and watching many Re:invent videos (and failing the practice exam to know where I needed to focus) I managed to pass the exam this month (May 2016) and to complete the set I sat the Developer Associate today.</p>
<p>Here&apos;s hoping when AWS release another tier (I think there&apos;s supposed to be an Expert tier coming soon) I&apos;ll be able to achieve those too!</p>
<p>I might even stick in and get the 70-532 for Azure as well to complete that set...</p>
<p>Thanks for reading!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[My thoughts on Microsoft Azure]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I&apos;ve been using Microsoft Azure for around eight months now and have passed both the 70-533 and 70-534 exams. In that time I&apos;ve had a chance to figure out some of the &apos;peculiarities&apos; shall we say, compared to Amazon Web Services which I have</p>]]></description><link>https://andrewphilp.com/my-thoughts-on-microsoft-azure/</link><guid isPermaLink="false">6043d00c6a21610001e80cc9</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Wed, 13 Jan 2016 00:03:04 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I&apos;ve been using Microsoft Azure for around eight months now and have passed both the 70-533 and 70-534 exams. In that time I&apos;ve had a chance to figure out some of the &apos;peculiarities&apos; shall we say, compared to Amazon Web Services which I have used for the past three years.</p>
<p>First of all, there are two portals. <a href="https://portal.azure.com">portal.azure.com</a>, which is called the &quot;Azure Portal&quot; and <a href="https://manage.windowsazure.com">manage.windowsazure.com</a> which is known as the &quot;Azure Management Console&quot;. Recently Microsoft announced the availability of all services in the Azure Portal, featuring deep links to the previous console. This makes management of Azure resources a pain as the previous portal does not feature RBAC (Role Based Account Control) which means co-administrators of the &apos;subscription&apos; (a way to manage your resources and spend) have full access to the whole subscription and can do anything they want, rather than a more granular approach to permissions as seen in AWS&apos; IAM (Identity and Access Management) service. Some Azure services do not support the new portal (as of 12/01/2016) such as Service Bus which means third parties must have full administrative access to your Azure account which you won&apos;t want.</p>
<p>There are two ways of managing resources in Microsoft Azure. Azure Resource Manager (ARM) and Azure Service Management (ASM). The former is more aligned with the RBAC experience of the Azure Portal while the latter is related to the older Management Console, or &apos;Classic&apos; deployment model. Microsoft need to make the Portal the only place to manage all resources (including Classic resources), but I&apos;m not sure if or when that will arrive.</p>
<p>Another example of a peculiarity is restoring a VM backup. It is impossible to remove an OS disk, for example to roll back an OS drive to a previous version. The VM <strong>must be deleted</strong> and a new one created in its place, which won&apos;t have the same private IP. Frankly this is a crazy design choice as you can happily make this change in Hyper-V, which Azure runs on. You have to either get creative with scripts, or use Azure Backup (and that deserves its own blog post entirely!)</p>
<p>A golden rule I kept telling myself throughout my Azure training was: <em>&quot;Azure is not AWS&quot;</em>. Although I have been comparing the two during this post, the best way to learn it is to apply the usual Cloud concepts: scaling out not up, designing and preparing for failure but at the same time treating Azure as a completely new concept. For example, Azure does not have the idea of AWS&apos; Availability Zones, instead you have Availability Sets. This is a way of separating VMs within a single datacenter and ensuring they do not reside on the same physical host, network segment or power supply, thus ensuring your machine will not be taken down during physical host maintenance or an outage (in theory). Availability Zones in AWS are at the datacenter level, so you can deploy instances to multiple physical locations connected by low latency interconnects and have high availability that way. Neither is <em>the right way</em>, they are just different ways of looking at the same problem. Azure does not have a VPC, it refers to a VNet which works differently - NAT is built in and there is no &apos;private&apos; subnet by default, any VM can access the internet even if it does not have an external IP. These subtle changes can trip you up if you constantly compare it to AWS.</p>
<p>In summary, Azure is a capable platform which many companies are using with no problems. However, it&apos;s not as polished as AWS and has many annoying peculiarities as discussed in this post. I still recommend Azure, but you have to keep these differences in mind and weigh up the advantages and disadvantages of either Cloud Platform before deciding which one to use or even a combination of both!</p>
<p>I&apos;d love any feedback on this article, thanks for reading.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[The Cloud]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>It has been some time since my last post - I&apos;m going to try to resolve that!</p>
<p>I&apos;ve not touched VMware for over a year and a half now, having started at Cloudreach in April 2014. I&apos;ve gained certification during this time in multiple</p>]]></description><link>https://andrewphilp.com/the-cloud/</link><guid isPermaLink="false">6043d00c6a21610001e80cc8</guid><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 22 Oct 2015 07:17:21 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>It has been some time since my last post - I&apos;m going to try to resolve that!</p>
<p>I&apos;ve not touched VMware for over a year and a half now, having started at Cloudreach in April 2014. I&apos;ve gained certification during this time in multiple cloud platforms (Amazon Web Services and Microsoft Azure).</p>
<p>The cloud has changed the face of System Administration and Engineering for the better. No longer do you need to go and buy a server for tens of thousands of pounds and spend two weeks setting it up, upgrading components, stress testing, carrying it to the datacenter and making it live. In the cloud, things are so much easier!</p>
<p>Some key practices to live by:</p>
<ul>
<li>automate everything (everything!)</li>
<li>design for failure</li>
<li>commit your design to a repository</li>
</ul>
<p><strong>Why automate everything?</strong><br><br>
If you automate your environment, all servers (also known as Instances or VMs) will have the same configuration which allows you to use the in-built scaling features of all cloud platforms worth their salt - some examples of the tools you can use to do this are: Chef (my favourite), Ansible, SaltStack and PowerShell Desired State Configuration (DSC). It also means you don&apos;t need to log into specific servers to troubleshoot as you can send logs elsewhere for investigation and rebuild the instance with very little or no administrative effort.</p>
<p><strong>Why design for failure?</strong><br><br>
Cloud platforms are by their nature built with the most fault tolerant, up to date equipment and communication links but that doesn&apos;t stop a physical server having an issue or a digger killing a bunch of connections. Amazon Web Services specifically state you should design for failure and expect an instance to become unavailable at any time. This is worked around at an architecture level by having at least two instances per service in two separate locations (Availability Zones - AWS), or in Azure in two &quot;Fault Domains&quot;. In fact, in Azure you must deploy two VMs (in an Availability Set) for one service to get an SLA which is 99.95%.</p>
<p><strong>Commit your design to a repository?</strong><br><br>
When building a cloud environment you can use tools such as CloudFormation in AWS or Resource Manager in Azure. These templates define your infrastructure as a JSON template which you can commit to a source control system just like you would for application code or scripts. This allows your engineers to update the JSON templates for any changes to the infrastructure, upload it to the cloud platform and let it handle deploying the changes. There&apos;s no need to manually resize a volume or change the desired number of instances in an autoscaling group. Of course, you could write the template just to deploy the environment and then manage manually if you really wanted to.</p>
<p>I&apos;d be interested to hear from anyone that is having issues with cloud deployments, migrations or your thoughts on this post!</p>
<p>Thanks for reading.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[vCenter server has no network connection after copying]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>After copying my vCenter server using ovftool, I watched it boot up and could see it said there was no configuration for eth1. When the MAC address changes, it will not update the config file automatically. Here&apos;s what to do: First of all go into the vSphere Client</p>]]></description><link>https://andrewphilp.com/vcenter-server-has-no-network-connection-after-copying/</link><guid isPermaLink="false">6043d00c6a21610001e80cc1</guid><category><![CDATA[Work Things]]></category><category><![CDATA[VMware]]></category><category><![CDATA[Networking]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Fri, 13 Sep 2013 10:09:08 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>After copying my vCenter server using ovftool, I watched it boot up and could see it said there was no configuration for eth1. When the MAC address changes, it will not update the config file automatically. Here&apos;s what to do: First of all go into the vSphere Client and connect to the host which is running the vCenter server. Go to the console, give it time to boot up until you get to the prompt. Enter your root username credentials. Type the following (the second one is all one line):</p>
<p><code>cd /etc/udev/rules.d/</code><code>cp etc/udev/rules.d/70-persistent-net.rules etc/udev/rules.d/70-persistent-net.rules.original</code><code>vi 70-persistent-net.rules</code></p>
<p>vi is very old school, so you&apos;ll need to press i to get into insert mode, go to the line that says:</p>
<p><code>SUBSYSTEM==&quot;net&quot;, ACTION==&quot;add&quot;, DRIVERS==&quot;?<em>&quot;, ATTR{address}<mark>&quot;00:50:56:aa:52:39&quot;, ATTR{type}</mark>&quot;1&quot;, KERNEL==&quot;eth</em>&quot;, NAME=&quot;eth0&quot;</code></p>
<p>Comment it out with a # (shift and 3 for our UK keyboards...) and edit the line below so that the NAME changes from eth1 to eth0. Hit escape a couple of times, then type :wq and enter to save. Reboot the machine and all will be fixed.</p>
<p>Hope this helps!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Using ovftool to copy between hosts without vCenter Server]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>So, I needed to copy my vCenter Server Appliance over to another host. Obviously can&apos;t do that while it&apos;s switched on, and it takes care of the migrations in vSphere Client so what can we do? Download ovftool (I downloaded the Windows version) from <a href="http://www.vmware.com/support/developer/ovf/">http://www.</a></p>]]></description><link>https://andrewphilp.com/using-ovftool-to-copy-between-hosts-without-vcenter-server/</link><guid isPermaLink="false">6043d00c6a21610001e80cc0</guid><category><![CDATA[Networking]]></category><category><![CDATA[Work Things]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Fri, 13 Sep 2013 09:59:40 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>So, I needed to copy my vCenter Server Appliance over to another host. Obviously can&apos;t do that while it&apos;s switched on, and it takes care of the migrations in vSphere Client so what can we do? Download ovftool (I downloaded the Windows version) from <a href="http://www.vmware.com/support/developer/ovf/">http://www.vmware.com/support/developer/ovf/</a> and install it on your PC. Go to the installation directory and shift-right-click to choose &apos;Open a command window here&apos;. Type the following (note it is all one line):</p>
<p><code>ovftool -ds=&quot;Destination Datastore Name&quot; &quot;vi://username@esxihost/VM Name&quot; &quot;vi://username@esxihost&quot; </code></p>
<p>Don&apos;t make the mistake I did of including the VM name at the end of the destination. This is so quick and easy and requires no copying of an OVF template to your PC then back again, it does it straight between the hosts. Hope this helps!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Veeam fails to back up after ESXi upgrade to 5.1 from 5.0]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I found a problem when upgrading to ESXi 5.1 that Veeam won&apos;t back the servers up giving a &quot;Error: Host with uuid &apos;12345678-1a23-1b23-1234-123456789101&apos; was not found&quot; message. Having found <a href="http://tsmith.co/2012/veeam-job-fails-after-upgrade-to-vsphere-5-1/">http://tsmith.co/2012/veeam-job-fails-after-upgrade-to-vsphere-5-1/</a> (thanks Tim) he tells you how to sort it</p>]]></description><link>https://andrewphilp.com/veeam-fails-to-back-up-after-esxi-upgrade-to-5-1-from-5-0/</link><guid isPermaLink="false">6043d00c6a21610001e80cc3</guid><category><![CDATA[Networking]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 10 Jan 2013 10:54:28 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I found a problem when upgrading to ESXi 5.1 that Veeam won&apos;t back the servers up giving a &quot;Error: Host with uuid &apos;12345678-1a23-1b23-1234-123456789101&apos; was not found&quot; message. Having found <a href="http://tsmith.co/2012/veeam-job-fails-after-upgrade-to-vsphere-5-1/">http://tsmith.co/2012/veeam-job-fails-after-upgrade-to-vsphere-5-1/</a> (thanks Tim) he tells you how to sort it in an older version, but I couldn&apos;t figure out where to fix it in Veeam 6.5.</p>
<p>It&apos;s in File &gt; Help &gt; License &gt; Licensed Hosts, you need to revoke on each host then run your backup jobs as normal, it will re-add them back to the list. Hope this helps!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Easy upgrade from ESXi 5.0 to 5.1]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Well I say easy, but it&apos;s not that easy. Total time was around eight hours including server firmware updates.</p>
<ol>
<li>Upgrade vCenter Server (I used the appliance, so download the appropriate files from the VMware site) - this is done by booting both, new one has DHCP, copying keys</li></ol>]]></description><link>https://andrewphilp.com/easy-upgrade-from-esxi-5-0-to-5-1/</link><guid isPermaLink="false">6043d00c6a21610001e80cbf</guid><category><![CDATA[Networking]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 10 Jan 2013 10:38:28 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Well I say easy, but it&apos;s not that easy. Total time was around eight hours including server firmware updates.</p>
<ol>
<li>Upgrade vCenter Server (I used the appliance, so download the appropriate files from the VMware site) - this is done by booting both, new one has DHCP, copying keys in the web interface so they can speak to each other and finally restarting and deleting the old server. <strong>Make sure you update the original server through the web interface before continuing!</strong> I wasted a good two hours waiting on it upgrading&#xA0; but it never did so I had to start again.</li>
<li>Check you can connect and see all the hosts, and that everything works OK.</li>
<li>Shut down all VMs and hosts.</li>
<li>I used the easier (in my opinion) option of using iLO to upgrade ESXi, I connected through IE so I could mount the virtual disk (ESXi 5.1 HP specific ISO file) and install. This works great for Essentials or Essentials Plus customers - Enterprise customers should use the Update Manager.</li>
<li>Boot into the installer and make sure you choose the upgrade option, when it asks which disk to choose use the one without an asterisk (this is local storage, may be different for SAN) - the one(s) with asterisk(s) are your VMFS partitions containing VM files.</li>
<li>Reboot each host, check you can connect to the host, boot your vCenter, make sure you can connect to it and it should see all hosts and be working fine! You may need to update your backup software to account for having a new version of ESXi on the hosts.</li>
</ol>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Update on VMware Converter for ESXi 5.1]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>As I said in my last post about this, vCenter Converter 5.0 didn&apos;t work with ESXi 5.1. VMware released the new version, 5.0.1 on 25 October 2012. It&apos;s not fully verified with vCenter 5.1,&#xA0; but should work much better than</p>]]></description><link>https://andrewphilp.com/update-on-vmware-converter-for-esxi-5-1/</link><guid isPermaLink="false">6043d00c6a21610001e80cbe</guid><category><![CDATA[Networking]]></category><category><![CDATA[VMware]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 10 Jan 2013 10:26:22 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>As I said in my last post about this, vCenter Converter 5.0 didn&apos;t work with ESXi 5.1. VMware released the new version, 5.0.1 on 25 October 2012. It&apos;s not fully verified with vCenter 5.1,&#xA0; but should work much better than the previous version. My SSL post below should still work to speed it up, let me know if it doesn&apos;t.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[How to get system information from command line]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Here&apos;s how to get the serial number/service tag or product name from a server or client PC.</p>
<p>Open up command prompt and type:<br>
Serial number:</p>
<pre>wmic bios get serialnumber</pre>
<p>Product name:</p>
<pre>wmic csproduct get name</pre><!--kg-card-end: markdown-->]]></description><link>https://andrewphilp.com/how-to-get-system-information-from-command-line/</link><guid isPermaLink="false">6043d00c6a21610001e80cc6</guid><category><![CDATA[Networking]]></category><category><![CDATA[serial]]></category><category><![CDATA[service]]></category><category><![CDATA[tag]]></category><category><![CDATA[Work Things]]></category><category><![CDATA[number]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 01 Nov 2012 13:26:03 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Here&apos;s how to get the serial number/service tag or product name from a server or client PC.</p>
<p>Open up command prompt and type:<br>
Serial number:</p>
<pre>wmic bios get serialnumber</pre>
<p>Product name:</p>
<pre>wmic csproduct get name</pre><!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Using Linux on two Default Gateways]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>This was from about a year ago, when we were transitioning internet connections. We had two default gateways and obviously traffic can only go out one/come in one. This was for one of our web servers.</p>
<p>The solution is to tag packets:</p>
<pre>echo &quot;10 special&quot; &gt;&gt;</pre>]]></description><link>https://andrewphilp.com/using-linux-on-two-default-gateways/</link><guid isPermaLink="false">6043d00c6a21610001e80cc5</guid><category><![CDATA[Uncategorized]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 01 Nov 2012 13:10:22 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>This was from about a year ago, when we were transitioning internet connections. We had two default gateways and obviously traffic can only go out one/come in one. This was for one of our web servers.</p>
<p>The solution is to tag packets:</p>
<pre>echo &quot;10 special&quot; &gt;&gt; /etc/iproute2/rt_tables
ip route add default via &lt;second gateway ip&gt; table special
ip rule add from &lt;second gateway ip&gt; table special</pre>
<p>This way, traffic to 6.6.6.6 for example will go in and come out as normal. However if your new IP is 7.7.7.7, the traffic is tagged with &quot;special&quot; and goes out the other gateway.</p>
<p>Hope this helps!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[VMware Converter 5.0 Speed]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Converter 5.0 is slow, and doesn&apos;t work with ESXi 5.1 yet, so don&apos;t try it! Converter 5.1 is due for release in November I believe. For slow transfers with ESXi 5.0.1 or below, see the following text.</p>
<p>SSL is the issue,</p>]]></description><link>https://andrewphilp.com/vmware-converter-5-0-speed/</link><guid isPermaLink="false">6043d00c6a21610001e80cc7</guid><category><![CDATA[Uncategorized]]></category><dc:creator><![CDATA[Andrew Philp]]></dc:creator><pubDate>Thu, 01 Nov 2012 12:44:05 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Converter 5.0 is slow, and doesn&apos;t work with ESXi 5.1 yet, so don&apos;t try it! Converter 5.1 is due for release in November I believe. For slow transfers with ESXi 5.0.1 or below, see the following text.</p>
<p>SSL is the issue, VMware have switched it on by default - for a much higher transfer rate, disable SSL.</p>
<p>Here is how it is done:</p>
<p>Open the converter-worker.xml configuration file. It is located in &quot;%ALLUSERSPROFILE%\VMware\VMware vCenter Converter Standalone&quot; folder for Windows Vista or newer or in &quot;%ALLUSERSPROFILE%\Application Data\VMware\VMware vCenter Converter Standalone&quot; for older Windows versions.</p>
<p>Set the key Config/nfc/useSsl to false and save the configuration file. Restart the &quot;VMware vCenter Converter Standalone Worker&quot; service.</p>
<p>It should look like this:</p>
<pre>...
&lt;nfc&gt;
&lt;readTimeoutMs&gt;120000&lt;/readTimeoutMs&gt;
&lt;useSsl&gt;false&lt;/useSsl&gt;
...</pre><!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>