Ain't Nobody Got Time For That: Intro to Automation

Post on 09-Apr-2017

333 views 3 download

transcript

AIN’T NOBODY GOT TIME FOR THAT!

MATT FROST @SHRTWHITEBLDGUY HTTPS://JOIND.IN/16027

WHO AM I?INTRODUCTION

WHAT IS AUTOMATION?DEFINITION

WHY AUTOMATE?DEFINING PURPOSE

• TASKS BECOME CLEARLY DEFINED IN ONE LOCATION

• OFFERS AN OPPORTUNITY TO REFINE PROCESSES

• ELIMINATES PROCESS VARIATION

• ELIMINATES DISRUPTIONS

WHY AUTOMATE?

WHAT WE’LL COVER

• CHALLENGES

• WHAT/WHERE/WHEN/WHY/HOW?

• OVERVIEW OF AUTOMATION TOOLS/TECHNIQUES

WHAT WE’LL COVER

AUTOMATION CHALLENGESCHALLENGES

• REQUIRES A STRONG UNDERSTANDING OF THE PROCESS

• REQUIRES A LOT OF TRUST IN THE PROCESS

• REQUIRES A PLAN IF SOMETHING GOES SIDEWAYS

AUTOMATION CHALLENGES

HOW DO WE AUTOMATE?OBJECTIVE

• TOOLS

• SCRIPTING

• EXPERIENCE

HOW DO WE AUTOMATE?

WHERE CAN WE AUTOMATE?OBJECTIVE

• LOCALLY

• DEV ENVIRONMENTS

• PRODUCTION

WHERE CAN WE AUTOMATE

LOCALLYWHERE CAN WE AUTOMATE?

WHEN YOU THINK ABOUT ALL THE THINGS YOU HAVE TO DO TO START WORKING, IT’S ANNOYING RIGHT?

THERE ARE SOME EASY OPTIONS…BUT

ALFRED!

SWEET RIGHT?

WORKFLOWS!

LOCAL SCRIPTING

TOOLS

DEPLOYMENT/CI• PHING • JENKINS • ANSIBLE • TRAVIS CI • CUSTOM SHELL SCRIPTS

MONITORING• NEW RELIC • PINGDOM • CUSTOM SHELL SCRIPTS • TESTING TOOLS

TESTING TOOLS• PHPUNIT • PHPSPEC • BEHAT • CODECEPTION • RUNSCOPE

PROVISIONING• ANSIBLE • CHEF • PUPPET • SHELL SCRIPTS

THERE ARE OPTIONSYOU DON’T NEED ALL THESE TOOLS BUT…

CREATING A SOLUTION

SERVER DEPLOYMENTCREATING A SOLUTION

DIGITAL OCEAN APICREATING A SOLUTION

I DON’T WANT TO CLICK THAT MANY TIMES…

CREATING A SOLUTION

ANSIBLECREATING A SOLUTION

SERVER SETUP CAN BE HARDCREATING A SOLUTION

HERE’S WHAT I NEEDEDCREATING A SOLUTION

• PHP (AND DEPS) • MYSQL (AND DEPS) • APACHE (I KNOW…) • WORDPRESS CONFIGS

ANSIBLE STRUCTURECREATING A SOLUTION

ROLES

• Files

• Handlers

• Meta

• Tasks

• Templates

• Vars

PLAYBOOK

--- - name: Install Apache2 apt: pkg=apache2 state=installed update_cache=true register: apache2

- name: Install Apache2 MPM Prefork apt: pkg=apache2-pmp-prefork state=installed when: apache2|success register: prefork

- name: Install Apache2 MPM Prefork apt: pkg=apache2-pmp-prefork state=installed when: apache2|success register: prefork

--- - hosts: bd roles: - setup - iptables-setup - apache2-setup - mysql-setup - php-setup - users-setup

PLAYBOOK EXAMPLE

PHINGCREATING A SOLUTION

CONSIDERATIONSCREATING A SOLUTION

<?xml version="1.0" encoding="UTF-8"?> <project name="BDSO" default="build" basedir="./"> <property file="bdso.properties" /> <target name="composer"> <echo msg="Composer automatic updates aren't enabled at this point" /> <echo msg="Running self-update on composer" /> <exec command="sudo composer self-update" passthru="true" /> <echo msg="Installing new dependencies (if necessary)" /> <exec command="composer install --no-dev --no-scripts" passthru="true" /> </target>

<target name="build"> <phingcall target="composer" /> </target>

COMPOSER INSTALL WITH PHING

INSTALLING PHINGCREATING A SOLUTION

“phing/phing”: “2.*”

RUNNING PHINGCREATING A SOLUTION

vendor/bin/phing -f path/to/build.xml

BASH SCRIPTINGCREATING A SOLUTION

SCRIPTING COMMANDSCREATING A SOLUTION

MY FAVORITE UNIX COMMAND

find ./ -type f -name ‘*.php’ -print0 | xargs -0 grep -n ‘SearchTerm’

finder -s ‘SearchTerm’

MONITORING WITH SHELL SCRIPTS

CREATING A SOLUTION

THE BASICSCREATING A SOLUTION

• MAKE SURE SERVICES ARE RUNNING • CHECK SERVER LOAD • NOTIFICATIONS

SIMPLICITY OVER ALL ELSECONCLUSION

SECURITYCONCLUSION

AUTOMATION IS ATTAINABLECONCLUSION

QUESTIONS?CONCLUSION

FEEDBACKCONCLUSION

https://joind.in/16027

Twitter: @shrtwhitebldguy

IRC: mfrost503