CINXE.COM
Solutions - DC Automation (IaC) with both Technical and Human impact White Paper - Cisco
<!DOCTYPE html> <html xmlns:fb="//www.facebook.com/2008/fbml" xmlns:og="//opengraphprotocol.org/schema/" lang="en" xml:lang="en" class="no-touch no-js"> <head> <meta charset="utf-8"> <meta name="HandheldFriendly" content="True" /> <meta name="MobileOptimized" content="320" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="rei" content="3/2/2022 10.39am est" /> <script tyle="text/javascript" src="/content/dam/cdc/j/cdcrSwitch.js"></script> <script type="text/javascript"> if (typeof cdc === "undefined"){ cdc = {}; } cdc.localizedLang="en/us"; if (window.cdcext === undefined) { window.cdcext = {}; } cdcext.customEnvironment = "prod"; if (window.cdclocale === undefined) { window.cdclocale = {}; } cdclocale.locale = cdc.localizedLang=="en/us"?"en_us":cdc.localizedLang; </script> <script src="/c/dam/cdc/t/ctm-core.js"></script> <script> window['adrum-start-time'] = new Date().getTime(); window.environ = "prod" ; </script> <script> if (window.cpe === undefined) { window.cpe = {}; } cpe.accountName = "prod"; cpe.config = ["cinf","dsc","pps"]; cpe.hideMethod = "elements"; window.targetGlobalSettings = JSON.parse('{\x22timeout\x22:4000}'); window.targetPageParamsAll = () => JSON.parse('{\x22entity\x22:\x22{\\\x22id\\\x22:\\\x221721239925660309\\\x22,\\\x22categoryId\\\x22:\\\x22NetworkingSolutions,Solutions,Networking Solutions Island of Content Event\\\x22}\x22}'); const bullseyeLibrary = `/etc.clientlibs/cisco-cdc/clientlibs/clientlib-external/resources/external/bullseye.js`; import(bullseyeLibrary); </script> <script src="/etc.clientlibs/cisco-cdc/clientlibs/clientlib-external/resources/regional-mbox/regional-mbox.js"></script> <title>Solutions - DC Automation (IaC) with both Technical and Human impact White Paper - Cisco</title> <meta name="format-detection" content="telephone=no"> <meta http-equiv="Content-type" content="text/html;charset=UTF-8" /> <meta name="description" content="Automation is a crucial element of a modern Data Center to provide a similar experience as what provided by public clouds. Automation does however not only have technical challenges and implications, but also organizational and people/process related. This whitepaper will drive into the technical challenge, and the experiences/lessons learned while doing automation projects with customers. It will also go into the organizational challenges, such as siloed organizations, and people fearing the adoption of automation/digitization within the company." /> <meta name="title" content="Solutions - DC Automation (IaC) with both Technical and Human impact White Paper" /> <meta name="documentId" content="1721239924985308" /> <meta name="templateName" content="eot-toc" /> <meta property="fb:app_id" content="156494687694418" /> <meta name="ioContentSource" content="WEM" /> <meta name="concept" content="Solutions" /> <meta name="docType" content="Networking Solutions Island of Content Event" /> <meta name="iaPath" content="cisco.com#Networking Solutions#Solutions" /> <meta name="contentType" content="cisco.com#US#preSales" /> <meta name="locale" content="US" /> <meta name="language" content="en" /> <meta name="country" content="US" /> <meta name="CCID_Page" content="cc001784" /> <meta name="date" content="Wed Jul 17 11:11:55 PDT 2024" /> <meta name="accessLevel" content="Customer" /> <meta name="accessLevel" content="Guest" /> <meta name="accessLevel" content="Partner" /> <meta name="entitlementExpression" content="contains( "0,1,2,3,4,7" , $profileField[3] )" /> <meta property="og:site_name" content="Cisco" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Solutions - DC Automation (IaC) with both Technical and Human impact White Paper" /> <meta property="og:description" content="Automation is a crucial element of a modern Data Center to provide a similar experience as what provided by public clouds. Automation does however not only have technical challenges and implications, but also organizational and people/process related. This whitepaper will drive into the technical challenge, and the experiences/lessons learned while doing automation projects with customers. It will also go into the organizational challenges, such as siloed organizations, and people fearing the adoption of automation/digitization within the company." /> <meta property="og:image" content="https://www.cisco.com/web/fw/i/logo-open-graph.gif" /> <meta property="og:url" content="https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html" /> <link rel="canonical" href="https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html"/> <script src="/etc.clientlibs/clientlibs/granite/jquery.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/utils.min.js"></script> <script src="/etc.clientlibs/clientlibs/granite/jquery/granite.min.js"></script> <script src="/etc.clientlibs/foundation/clientlibs/jquery.min.js"></script> <script src="/etc.clientlibs/foundation/clientlibs/shared.min.js"></script> <script src="/etc.clientlibs/cq/personalization/clientlib/underscore.min.js"></script> <script src="/etc.clientlibs/cq/personalization/clientlib/personalization/kernel.min.js"></script> <script src="/etc.clientlibs/cq/personalization/clientlib/personalization/kernel.min.js"></script> <script type="text/javascript"> $CQ(function() { CQ_Analytics.SegmentMgr.loadSegments("\/etc\/segmentation"); CQ_Analytics.ClientContextUtils.init("\/c\/dnc\/etc\/clientcontext\/default", "\/content\/en\/us\/solutions\/collateral\/executive\u002Dperspectives\/technology\u002Dperspectives\/dc\u002Dautomation\u002Dinfrast\u002Dcode\u002Dwp"); }); </script> <link rel="stylesheet" href="/etc/designs/cdc/clientlibs/responsive/css/cisco-sans.min.css" type="text/css"> <script src="/etc/designs/cdc/clientlibs/responsive/js/foundation.min.js"></script> <link rel="stylesheet" href="/etc/designs/cdc/clientlibs/responsive/css/responsive.min.css" type="text/css"> <script> sessionStorage.setItem("logOutIntermediateMessage", 'You are being logged out.'); </script> <!-- Custom JSON LD For Products Type --> <script type="application/ld+json"> [ { "@context": "http://www.schema.org", "@type": "WebPage", "name": "DC Automation (IaC) with both Technical and Human impact White Paper", "url": "https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html", "description": "Automation is a crucial element of a modern Data Center to provide a similar experience as what provided by public clouds. Automation does however not only have technical challenges and implications, but also organizational and people/process related. This whitepaper will drive into the technical challenge, and the experiences/lessons learned while doing automation projects with customers. It will also go into the organizational challenges, such as siloed organizations, and people fearing the adoption of automation/digitization within the company.", "publisher": { "@type": "Corporation", "name": "Cisco" } }] </script> <!-- End Custom JSON LD For Products Type --> <!-- Video JSON LD --> <!-- End Video JSON LD --> <script>!function(e){var n="https://s.go-mpulse.net/boomerang/";if("False"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="GKZXC-NS3SU-A7VFH-HKBHM-U7LKH",function(){function e(){if(!o){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,i.parentNode.appendChild(e),o=!0}}function t(e){o=!0;var n,t,a,r,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(i.parentNode,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",r=(a.frameElement||a).style,r.width=0,r.height=0,r.border=0,r.display="none",i.parentNode.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(_){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void(0);",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("<bo"+"dy onload='document._boomrl();'>");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=12,window.BOOMR.url=n+"GKZXC-NS3SU-A7VFH-HKBHM-U7LKH";var i=document.currentScript||document.getElementsByTagName("script")[0],o=!1,r=document.createElement("link");if(r.relList&&"function"==typeof r.relList.supports&&r.relList.supports("preload")&&"as"in r)window.BOOMR.snippetMethod="p",r.href=window.BOOMR.url,r.rel="preload",r.as="script",r.addEventListener("load",e),r.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!o)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),i.parentNode.appendChild(r);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n=""=="true"?1:0,t="",a="bdpnbeqxgy4r2z2czvkq-f-be372d150-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,o={"ak.v":"39","ak.cp":"61004","ak.ai":parseInt("271834",10),"ak.ol":"0","ak.cr":8,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"57d783f","ak.r":37669,"ak.a2":n,"ak.m":"dsca","ak.n":"essl","ak.bpcip":"8.222.208.0","ak.cport":40080,"ak.gh":"23.53.33.212","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.0rtt.ed":"","ak.csrc":"-","ak.acc":"reno","ak.t":"1732431189","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==+FnKq2KlYuZCVq98nqzgt3Wgd+EA4g6Lry0/GjcyZQLQXOESTAcg2hl7c9/7Z4++EA0LHsVhEER2QJr0+rZtxK99Q9dg1E2xjmmVgfNlArR239jH2h0GWU6twOpMhnYiYvMLWAK9fR+2Rj2FxnQvHwDs+j8VLqFklk9Cin3BF2FwHBM+YcgRi0Mx+PWemm2WG30rIzVrb1ksB7m24hEtnByaaozG6wHoa7A9qQLO1V4S34bnFfZtuhFwxTONjGVKxWWNkB1CBjJElEkokt48BXvmsSpGyP/LDGBpQAe4v42MDIbKEY7w6vuIekL2lpawtRg4hlVPHOuo5Oci5mDLMh1XEC2w+yp76Fw9WZaesiNBg8Ia8hxdrNTgJo2ZxqMDUSWU5pxseATntrdb+xPtq3o3ldarnqAOuFcwwR9tQ4c=","ak.pv":"517","ak.dpoabenc":"","ak.tf":i};if(""!==t)o["ak.ruds"]=t;var r={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))o["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(o)},rv:function(){var e=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.0rtt.ed","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:o,akDNSPreFetchDomain:a,init:function(){if(!r.i){var e=BOOMR.subscribe;e("before_beacon",r.av,null,null),e("onbeacon",r.rv,null,null),r.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head> <body id="wcq" class=" fw-res cdc-eot cdc-eot-toc cdc-transform networking-solutions-island-of-content-event "> <div id="fw-skiplinks"> <ul class="container"> <li><a id="skiplink-content" href="#fw-content">Skip to content</a></li> <li><a id="skiplink-search" href="#">Skip to search</a></li> <li><a id="skiplink-footer" href="#fw-footer-v2" class="last">Skip to footer</a></li> </ul> </div> <script type="module" src="/site/web-components/us/en/cdc-header.js"></script> <cdc-header></cdc-header> <nav class="fw-c-header__seo-links" aria-hidden="true" style="display:none"> <ul> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/index.html">Cisco.com Worldwide</a></li> <li><a tabindex="-1" href="/c/en/us/products/index.html">Products and Services</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/solutions/index.html">Solutions</a></li> <li><a tabindex="-1" href="/c/en/us/support/index.html">Support</a></li> <li><a tabindex="-1" href="/c/en/us/training-events.html">Learn</a></li> <li><a tabindex="-1" href="//www.cisco.com/c/en/us/about/sitemap.html">Explore Cisco</a></li> <li><a tabindex="-1" href="/c/en/us/buy.html">How to Buy</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/index.html?dtid=odicdc001129">Partners Home</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/cisco-partner-program/index.html?ccid=cc000864&dtid=odiprc001129">Partner Program</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/support-help/index.html">Support</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/tools/index.html?dtid=odiprc001129">Tools</a></li> <li><a tabindex="-1" href="https://locatr.cloudapps.cisco.com/WWChannels/LOCATR/pf/index.jsp#/">Find a Cisco Partner</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/connect-with-a-partner/index.html?ccid=cc000864&dtid=odiprc001129">Meet our Partners</a></li> <li><a tabindex="-1" href="https://www.cisco.com/site/us/en/partners/index.html?dtid=odicdc001129">Become a Cisco Partner</a></li> </ul> </nav> <div id="fw-content" class="container grid"> <div class="row full" data-owner="ID"> <div class="col full "> <h1 id="fw-pagetitle" class="" data-owner="ID">DC Automation (IaC) with both Technical and Human impact White Paper</h1> <div id="fw-backtolink" data-owner="ID"> <div><span></span></div> <div> <a href="/c/en/us/solutions/executive-perspectives/index.html" target="_self">Back to Home</a> </div> </div> </div> </div> <!--googleon: index--><!--googleon: snippet--> <script type="text/javascript"> // initialize dictionary for i18n var pagelanguage = "en_us".replace("_","-"); var pagelocale = pagelanguage; Granite.I18n.setLocale(pagelocale.toLowerCase()); Granite.I18n.setUrlPrefix("/etc/designs/cdc/fw/w/responsive_components/eot/i18n/"); Granite.I18n.setUrlSuffix(".1.json"); cdc.util.ensureNamespace("cdc.rc"); cdc.rc.isEotToc = true; </script> <div class="row full blowout"> <div class="col full"> </div> </div> <div class="row full"> <div class="col full top docId"> <script> if (typeof(cdc) == "undefined") cdc={}; if (typeof(cdc.translations) == "undefined") cdc.translations={}; </script> <div class="docHeaderComponent base-blowout"> <div class="linksRow"> <div class="toolbar"> <div class="noprint" id="saveModule"> <script type="text/javascript"> cdc.util.ensureNamespace("cdc.rc.savedoc"); cdc.rc.savedoc.isLoggedIn = false; cdc.rc.savedoc.save = "Save"; cdc.rc.savedoc.saved = "Saved"; </script> <button class="save" aria-expanded="false"> <label>Save</label> </button> </div> <div class="saveDocumentMessage login cdc-expandPanel" role="region" aria-live="polite"> <a href="/c/login/index.html?referer=/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html">Log in</a> to Save Content </div> <!-- Translation Selctor --> <!-- Translation Selector is used on EOT and Books pages. if a page has a locale of en_US then it will provide a list of avaible translations, if its a translated page (non english locale) then provide the link to the english locale. --> <div class="noprint downloadDocument" ><button type="button" class="view-download-list-link anchor" aria-expanded="false"><div class="toolbarIcon downloadIcon"></div><label class="iconLabel">Download</label></button></div> <div class="noprint printDocument js-only"><button type="button" class="anchor printPage"><div class="toolbarIcon printIcon"></div><label class="iconLabel">Print</label></button></div> </div> </div> <!-- Where translation selector list of available languages is set up for EOT pages, for the javascript to work must have <ul id="translationsList"> </ul> --> <script language="javascript"> cdc.translations.map = "{en-us=https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html, x-default=https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html}";//storing the map for use in the JS cdc.translations.locale="en_us"; </script> <div class="availableLanguagesList"> <h3>Available Languages</h3> <ul id="translationsList"> </ul> </div> <div id="download-list-container" class="noprint panelRow" role="region" aria-live="polite"> <div class='download-list' aria-label="Download Options"> <h3>Download Options</h3> <ul> <li> <div class="fileText"> <a href="/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.pdf" class="download-pdf"><div class="fileIcon pdfIcon"></div>PDF</a> <span class="docSize">(1.1 MB)</span> <br /> <span class="description">View with Adobe Reader on a variety of devices</span> </div> </li> </ul> </div> </div> <div class="infobarClearFix"> <div class="infobar"> <div class="updatedDate"><span>Updated:</span>July 17, 2024</div> </div> </div> </div> <script> jQuery(document).ready(function(){ if(jQuery("body").hasClass("cdc-eot-toc") && jQuery(".cdc-eot-toc").find(".DocumentHistory").length > 0){ jQuery(".cdc-eot-toc .seeRevisions").show(); if(jQuery(window).width() >= 768){ jQuery(".cdc-eot-toc .updatedDate").nextAll(".bullet").show(); } }else{ jQuery(".cdc-eot-toc .infobar .bullet").hide(); jQuery(".cdc-eot-toc .seeRevisions"); jQuery(".cdc-eot-toc .updatedDate"); } }) </script> <div class="disclaimers marketing"> <div class="disclaimerButtons"> <div class="aboutBias"> <button aria-expanded="false" >Bias-Free Language</button> </div> </div> <div class="biasfreeContent panel"> <h3>Bias-Free Language</h3> <p>The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. <a href="https://www.cisco.com/c/en/us/about/social-justice/inclusive-language-policy.html">Learn more</a> about how Cisco is using Inclusive Language.</p> </div> </div><!-- disclaimers --> <div id="luh-holder" class="dmc-inpage-nav noprint"> </div> </div> </div> <div class="row wide-narrow flip cdc-eot-toc-banner"> <div class="col wide"> <div class="defaultBrandImage"></div> <link rel="stylesheet" href="/etc/designs/cdc/dmr/mbox/mbox.min.css" type="text/css"> <div data-version="DM:components/dgbanner/banner-mbox:V1.5.1"> <div class="mboxDefault"></div> <script type="text/javascript"> var test=""; if(test!=undefined && test.trim().length>0){ mboxCreate('en-us_dg_large_eot','type=default',''); }else{ mboxCreate('en-us_dg_large_eot','type=default'); } </script> </div> <script src="/etc/designs/cdc/dmr/libs/u.min.js"></script> <script src="/etc/designs/cdc/dmr/libs/nmsp.min.js"></script> <script src="/etc/designs/cdc/dmr/libs/log.min.js"></script> <script src="/etc/designs/cdc/dmr/libs/metrics.min.js"></script> <!-- DM:components/html/htmlblob:V1.2.6 --> <style> /*First Level Bullet*/ .cdc-eot-toc #eot-doc-wrapper p.pBulletCMT{ text-indent: -20px !important; } .cdc-eot-toc #eot-doc-wrapper p.pBullet2CMT { text-indent: -20px !important; } .CellBullet2{ padding-left:15px; margin-top: -5pt; !important; } </style> <div id="overDocWrapper" class="doctool noprint"> <script type="text/javascript"> $( document ).ready(function() { var fwt_element = $("#fw-content").find(".fwt-fatfooter"); fwt_element.addClass("noprint"); }); if (window.cdc === undefined) { window.cdc = {}; } if (cdc.rac === undefined) { cdc.rac = {}; } if (cdc.rac.getOverrideConfig === undefined) { cdc.rac.getOverrideConfig = {}; } else { //var configData = { "ratingsOnly": false, "objId":31, "source":"dummy source" }; var configData = { "ratingsOnly": false}; cdc.rac.getOverrideConfig(configData); } </script> <script> if (typeof(cdc) == "undefined") cdc={}; if (typeof(cdc.translations) == "undefined") cdc.translations={}; </script> <div class="docHeaderComponent base-blowout"> <div class="linksRow"> <div class="toolbar"> <div class="noprint" id="saveModule"> <script type="text/javascript"> cdc.util.ensureNamespace("cdc.rc.savedoc"); cdc.rc.savedoc.isLoggedIn = false; cdc.rc.savedoc.save = "Save"; cdc.rc.savedoc.saved = "Saved"; </script> <button class="save" aria-expanded="false"> <label>Save</label> </button> </div> <div class="saveDocumentMessage login cdc-expandPanel" role="region" aria-live="polite"> <a href="/c/login/index.html?referer=/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html">Log in</a> to Save Content </div> <!-- Translation Selctor --> <!-- Translation Selector is used on EOT and Books pages. if a page has a locale of en_US then it will provide a list of avaible translations, if its a translated page (non english locale) then provide the link to the english locale. --> <div class="noprint downloadDocument" ><button type="button" class="view-download-list-link anchor" aria-expanded="false"><div class="toolbarIcon downloadIcon"></div><label class="iconLabel">Download</label></button></div> <div class="noprint printDocument js-only"><button type="button" class="anchor printPage"><div class="toolbarIcon printIcon"></div><label class="iconLabel">Print</label></button></div> </div> </div> <!-- Where translation selector list of available languages is set up for EOT pages, for the javascript to work must have <ul id="translationsList"> </ul> --> <script language="javascript"> cdc.translations.map = "{en-us=https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html, x-default=https://www.cisco.com/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.html}";//storing the map for use in the JS cdc.translations.locale="en_us"; </script> <div class="availableLanguagesList"> <h3>Available Languages</h3> <ul id="translationsList"> </ul> </div> <div id="download-list-container" class="noprint panelRow" role="region" aria-live="polite"> <div class='download-list' aria-label="Download Options"> <h3>Download Options</h3> <ul> <li> <div class="fileText"> <a href="/c/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.pdf" class="download-pdf"><div class="fileIcon pdfIcon"></div>PDF</a> <span class="docSize">(1.1 MB)</span> <br /> <span class="description">View with Adobe Reader on a variety of devices</span> </div> </li> </ul> </div> </div> <div class="infobarClearFix"> <div class="infobar"> <div class="updatedDate"><span>Updated:</span>July 17, 2024</div> </div> </div> </div> <script> jQuery(document).ready(function(){ if(jQuery("body").hasClass("cdc-eot-toc") && jQuery(".cdc-eot-toc").find(".DocumentHistory").length > 0){ jQuery(".cdc-eot-toc .seeRevisions").show(); if(jQuery(window).width() >= 768){ jQuery(".cdc-eot-toc .updatedDate").nextAll(".bullet").show(); } }else{ jQuery(".cdc-eot-toc .infobar .bullet").hide(); jQuery(".cdc-eot-toc .seeRevisions"); jQuery(".cdc-eot-toc .updatedDate"); } }) </script> </div> </div> <div class="col narrow sticky noprint"> <span id="tocTop"></span> <section id="eotTocNav"> <div id="navWrapper"> </div> <div id="tocSearch"></div> <div id="eotListWrapper" data-config-metrics-group="Table of Contents"> <script type="text/javascript"> cdc.util.ensureNamespace("cdc.rc"); cdc.rc.toctitle = "Table of Contents"; </script> <h4 id="eotTocToc">Table of Contents</h4> <ul> <li><a class="head1" href="#Executivesummary" title="Executivesummary">Executive summary</a></li> <li><a class="head1" href="#Introduction" title="Introduction">Introduction</a></li> <li><a class="head1" href="#Understandingthedatacenterecosystem" title="Understandingthedatacenterecosystem">Understanding the data center ecosystem</a></li> <li><a class="head1" href="#Approachestoautomation" title="Approachestoautomation">Approaches to automation</a></li> <li><a class="head1" href="#InfrastructureascodeandDevOps" title="InfrastructureascodeandDevOps">Infrastructure as code and DevOps</a> <ul> <li><a class="head2" href="#Operateconfigurationascode" title="Operateconfigurationascode">Operate configuration as code</a></li></ul> <li><a class="head1" href="#DevOpsandCICD" title="DevOpsandCICD">DevOps and CI/CD</a> <ul> <li><a class="head2" href="#Sourceversioncontrolsystem" title="Sourceversioncontrolsystem">Source version control system</a></li> <li><a class="head2" href="#ContinuousIntegrationContinuousDeliveryCICD" title="ContinuousIntegrationContinuousDeliveryCICD">Continuous Integration/Continuous Delivery (CI/CD)</a></li></ul> <li><a class="head1" href="#Peopleandprocesschallengeswhenadoptingautomation" title="Peopleandprocesschallengeswhenadoptingautomation">People and process challenges when adopting automation</a> <ul> <li><a class="head2" href="#Technicalandhumanchallenges" title="Technicalandhumanchallenges">Technical and human challenges</a></li> <li><a class="head2" href="#Thecomplexityofadatacenter" title="Thecomplexityofadatacenter">The complexity of a data center</a></li> <li><a class="head2" href="#Thehumanfactor" title="Thehumanfactor">The human factor</a></li> <li><a class="head2" href="#Organizationalchallenges" title="Organizationalchallenges">Organizational challenges</a> <ul> <li><a class="head3" href="#Littlekingdoms" title="Littlekingdoms">Little kingdoms</a></li></ul> <li><a class="head2" href="#ITasaserviceprovider" title="ITasaserviceprovider">IT as a service provider</a></li> <li><a class="head2" href="#Squadbasedorganization" title="Squadbasedorganization">Squad-based organization</a></li> <li><a class="head2" href="#Privateagendas" title="Privateagendas">Private agendas</a></li> <li><a class="head2" href="#Jobprotection" title="Jobprotection">Job protection</a></li> <li><a class="head2" href="#Trustorlackthereof" title="Trustorlackthereof">Trust or lack thereof</a></li> <li><a class="head2" href="#Summaryoforganizations" title="Summaryoforganizations">Summary of organizations</a></li></ul> <li><a class="head1" href="#Conclusion" title="Conclusion">Conclusion</a> <ul> <li><a class="head2" href="#Structuredapproach" title="Structuredapproach">Structured approach</a></li> <li><a class="head2" href="#Peopleandprocesses" title="Peopleandprocesses">People and processes</a></li> <li><a class="head2" href="#Lessonslearnedandexperience" title="Lessonslearnedandexperience">Lessons learned and experience</a></li></ul> <li><a class="head1" href="#Summary" title="Summary">Summary</a></li> <li><a class="head1" href="#Authors" title="Authors">Authors</a></li> <li><a class="head1" href="#Reviewers" title="Reviewers">Reviewers</a> <ul> <li><a class="head2" href="#Citationsandbibliography" title="Citationsandbibliography">Citations and bibliography</a></ul> </div> <!--<div id="eotTocSearch"></div> <div id="eotTocToc"></div> --> <script type="text/javascript"> cdc.util.ensureNamespace("cdc.rc.innerSearch"); cdc.rc.innerSearch.hintText = "Search"; cdc.util.ensureNamespace("cdc.rc.tableOfContents"); cdc.rc.tableOfContents.label = "Table of Contents"; </script> </section> </div> </div> <div class="row narrow-wide"> <!--style below is added to fix DE297691:TOC Headings are not clickable in Firefox/Edge Browsers --> <div class="col narrow noprint" style="position: relative;z-index: -1;"> </div> <div class="col wide document"> <div id="eot-doc-wrapper"> <html> <head> <script>!function(e){var n="https://s.go-mpulse.net/boomerang/";if("False"=="True")e.BOOMR_config=e.BOOMR_config||{},e.BOOMR_config.PageParams=e.BOOMR_config.PageParams||{},e.BOOMR_config.PageParams.pci=!0,n="https://s2.go-mpulse.net/boomerang/";if(window.BOOMR_API_key="GKZXC-NS3SU-A7VFH-HKBHM-U7LKH",function(){function e(){if(!o){var e=document.createElement("script");e.id="boomr-scr-as",e.src=window.BOOMR.url,e.async=!0,i.parentNode.appendChild(e),o=!0}}function t(e){o=!0;var n,t,a,r,d=document,O=window;if(window.BOOMR.snippetMethod=e?"if":"i",t=function(e,n){var t=d.createElement("script");t.id=n||"boomr-if-as",t.src=window.BOOMR.url,BOOMR_lstart=(new Date).getTime(),e=e||d.body,e.appendChild(t)},!window.addEventListener&&window.attachEvent&&navigator.userAgent.match(/MSIE [67]\./))return window.BOOMR.snippetMethod="s",void t(i.parentNode,"boomr-async");a=document.createElement("IFRAME"),a.src="about:blank",a.title="",a.role="presentation",a.loading="eager",r=(a.frameElement||a).style,r.width=0,r.height=0,r.border=0,r.display="none",i.parentNode.appendChild(a);try{O=a.contentWindow,d=O.document.open()}catch(_){n=document.domain,a.src="javascript:var d=document.open();d.domain='"+n+"';void(0);",O=a.contentWindow,d=O.document.open()}if(n)d._boomrl=function(){this.domain=n,t()},d.write("<bo"+"dy onload='document._boomrl();'>");else if(O._boomrl=function(){t()},O.addEventListener)O.addEventListener("load",O._boomrl,!1);else if(O.attachEvent)O.attachEvent("onload",O._boomrl);d.close()}function a(e){window.BOOMR_onload=e&&e.timeStamp||(new Date).getTime()}if(!window.BOOMR||!window.BOOMR.version&&!window.BOOMR.snippetExecuted){window.BOOMR=window.BOOMR||{},window.BOOMR.snippetStart=(new Date).getTime(),window.BOOMR.snippetExecuted=!0,window.BOOMR.snippetVersion=12,window.BOOMR.url=n+"GKZXC-NS3SU-A7VFH-HKBHM-U7LKH";var i=document.currentScript||document.getElementsByTagName("script")[0],o=!1,r=document.createElement("link");if(r.relList&&"function"==typeof r.relList.supports&&r.relList.supports("preload")&&"as"in r)window.BOOMR.snippetMethod="p",r.href=window.BOOMR.url,r.rel="preload",r.as="script",r.addEventListener("load",e),r.addEventListener("error",function(){t(!0)}),setTimeout(function(){if(!o)t(!0)},3e3),BOOMR_lstart=(new Date).getTime(),i.parentNode.appendChild(r);else t(!1);if(window.addEventListener)window.addEventListener("load",a,!1);else if(window.attachEvent)window.attachEvent("onload",a)}}(),"".length>0)if(e&&"performance"in e&&e.performance&&"function"==typeof e.performance.setResourceTimingBufferSize)e.performance.setResourceTimingBufferSize();!function(){if(BOOMR=e.BOOMR||{},BOOMR.plugins=BOOMR.plugins||{},!BOOMR.plugins.AK){var n=""=="true"?1:0,t="",a="bdpnbeqxgy4r2z2czvkq-f-be372d150-clientnsv4-s.akamaihd.net",i="false"=="true"?2:1,o={"ak.v":"39","ak.cp":"61004","ak.ai":parseInt("271834",10),"ak.ol":"0","ak.cr":8,"ak.ipv":4,"ak.proto":"http/1.1","ak.rid":"57d783f","ak.r":37669,"ak.a2":n,"ak.m":"dsca","ak.n":"essl","ak.bpcip":"8.222.208.0","ak.cport":40080,"ak.gh":"23.53.33.212","ak.quicv":"","ak.tlsv":"tls1.2","ak.0rtt":"","ak.0rtt.ed":"","ak.csrc":"-","ak.acc":"reno","ak.t":"1732431189","ak.ak":"hOBiQwZUYzCg5VSAfCLimQ==+FnKq2KlYuZCVq98nqzgt3Wgd+EA4g6Lry0/GjcyZQLQXOESTAcg2hl7c9/7Z4++EA0LHsVhEER2QJr0+rZtxK99Q9dg1E2xjmmVgfNlArR239jH2h0GWU6twOpMhnYiYvMLWAK9fR+2Rj2FxnQvHwDs+j8VLqFklk9Cin3BF2FwHBM+YcgRi0Mx+PWemm2WG30rIzVrb1ksB7m24hEtnByaaozG6wHoa7A9qQLO1V4S34bnFfZtuhFwxTONjGVKxWWNkB1CBjJElEkokt48BXvmsSpGyP/LDGBpQAe4v42MDIbKEY7w6vuIekL2lpawtRg4hlVPHOuo5Oci5mDLMh1XEC2w+yp76Fw9WZaesiNBg8Ia8hxdrNTgJo2ZxqMDUSWU5pxseATntrdb+xPtq3o3ldarnqAOuFcwwR9tQ4c=","ak.pv":"517","ak.dpoabenc":"","ak.tf":i};if(""!==t)o["ak.ruds"]=t;var r={i:!1,av:function(n){var t="http.initiator";if(n&&(!n[t]||"spa_hard"===n[t]))o["ak.feo"]=void 0!==e.aFeoApplied?1:0,BOOMR.addVar(o)},rv:function(){var e=["ak.bpcip","ak.cport","ak.cr","ak.csrc","ak.gh","ak.ipv","ak.m","ak.n","ak.ol","ak.proto","ak.quicv","ak.tlsv","ak.0rtt","ak.0rtt.ed","ak.r","ak.acc","ak.t","ak.tf"];BOOMR.removeVar(e)}};BOOMR.plugins.AK={akVars:o,akDNSPreFetchDomain:a,init:function(){if(!r.i){var e=BOOMR.subscribe;e("before_beacon",r.av,null,null),e("onbeacon",r.rv,null,null),r.i=!0}return this},is_complete:function(){return!0}}}}()}(window);</script></head> <body> <code><script type="text/javascript"></script> <link rel="stylesheet" href="wemdcmt.css"/> <link rel="stylesheet" href="/etc/designs/cdc/transformation/wemdcmt.css"/></code> <div class="WordSection1"> <p class="pBody"> </p> <p class="pIntroCMT" style="page-break-before:always">Overcoming the human and technical challenges to achieve an effective automation implementation</p> <p class="pToC_Subhead1"><a name="_Toc171708243">Executive summary</a></p> <p class="pBody">Today, automation is becoming a must to cope with the demands of rapid changes and updates to data center elements such as network, storage, compute, security, and more. This comes with various challenges that relate to technology and people and processes. </p> <p class="pBody">One of the most complex infrastructure domains to automate is the data center, as automation of the entire IT infrastructure includes approvals, requests, and other IT Infrastructure Library (ITIL<span class="Superscript"><sup class=" cSuperscript">®</sup></span>) related processes. It spans across multiple silos such as networking, compute and virtualization, cloud, security, etc. Automating these components requires a comprehensive understanding of their interdependencies and the ability to orchestrate and manage them effectively. In addition, many companies have these technology domains as separate organizations, each with its own management team, and sometimes they may even have different high-level goals and objectives. The network team will, of course, have different objectives than the compute team at a direct level, but the two teams’ “north star” ideally should be the same. It may also involve discussions such as moving from the User Interface and Command-Line Interface (UI/CLI) to DevOps, but other aspects, such as platform engineering, could benefit from this white paper as well.</p> <p class="pBody">This white paper dives not only into the technical challenges but also into practical experiences and lessons learned from automation projects with multiple customers. It will go into the organizational challenges, such as siloed organizations and personnel not being comfortable with automation and digitization within the company. Very commonly automation also must navigate security considerations, which can be complex and challenging to satisfy.</p> <p class="pBody">We will address how these challenges can be overcome, as well as describe different ways that the automation can be approached, depending on where the company is on its automation journey.</p> <p class="pToC_Subhead1" style="page-break-before:always"><a name="_Toc171708244">Introduction</a></p> <p class="pBody">Data centers are complex environments made up of multiple technologies, often under the responsibility of different teams, which can very quickly lead to silos within an organization. Adding to the structural and internal complexity are software and firmware versions, change frequencies, and the use of multiple vendors. The data center can also suffer from organic growth as part of expansions and acquisitions, or just technology refresh cycles. The scale itself, and the number of changes to be made, are strong drivers for introducing automation to help process all the changes required to run the business, but other drivers involve changes at scale, agility, reliability, configuration consistency, reduction of human errors, maintenance of a history log of network changes—and the list continues. </p> <p class="pBody">The value of automation can be broken into the following measurable categories.</p> <p class="pBody"><img width="576" height="317" id="Picture 2" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_0.png" alt="Infrastructure as code value"/></p> <div class=" pDefault"> Figure 1. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Infrastructure as code value</p> <p class="pBody"><b>Cost </b>reduction is related not only to the financial cost of operating and managing the data center but also to the cost in terms of personnel and efforts required. Automating tasks previously performed manually enables people to refocus their efforts on other tasks that bring value to the company.</p> <p class="pBody"><b>Speed</b> improvements with the use of automation relate not only to faster configuration of the infrastructure, but also to the ability to provide visibility and predict how long a given task will take. Such visibility and predictability help other teams within the company to work more efficiently.</p> <p class="pBody"><b>Risk</b> relates to the removal of human errors such as misconfigurations, etc. This in turn decreases the risk of outages and increases the reliability of the infrastructure. These outcomes can help companies move toward a culture of DevOps and further enhance and expand the role of automation.</p> <p class="pBody">Often automation is thought of in the context of configuring things, but it is equally important to consider automation when deprovisioning things. Automation can help to implement full lifecycle management of the infrastructure configuration to avoid situations where a configuration is left behind due to questions like “What’s that do?” that are answered with “We’re not sure, but we’re afraid to remove it because it may break something.”</p> <p class="pBody">Similarly, another key benefit of automation is the ability to perform a rollback in the event of an unsuccessful change, as the automation system will be able to clean up the bad configuration faster than any engineer is able to—especially in the case of a complex change involving multiple devices.</p> <p class="pBody" style="page-break-before:always">There are also some challenges that could be highlighted, such as:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>The need to educate/upskill the staff</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>The cost to maintain and update the automation framework, such as scripts, tools, etc.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>The time required to implement new automation tasks</p> <p class="pBody" style="margin-top:7.0pt">However, in our experience, these challenges do not outweigh the benefits of automation.</p> <p class="pToC_Subhead1"><a name="_Toc171708245">Understanding the data center ecosystem</a></p> <p class="pBody">Introducing automation into a data center can be challenging, as there are many factors that can slow down the adoption. To better evaluate the problem of introducing automation, we introduce the following model, to provide an understanding of the various parts of a data center.</p> <p class="pBody"><img width="720" height="293" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_1.png" alt="Data center model"/></p> <div class=" pDefault"> Figure 2. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Data center model</p> <p class="pBody">This figure identifies how the various areas of a data center interlock. The data center consists of the following areas, (top to bottom):</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Governance</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Security</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Applications and platforms</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Automation</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Converged infrastructure (compute, storage, network)</p> <p class="pBody" style="margin-top:7.0pt;page-break-before:always">Using this model when automating a solution will help you understand how everything interacts and must work in unison to make the solution successful. The following example illustrates this with the use case of a simplified way of deploying a Kubernetes cluster using automation:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Governance to approve the process</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Allocate a network/subnet</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Allocate compute resources</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Allocate persistent storage</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Deploy a Kubernetes controller and worker nodes</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Create a Kubernetes cluster</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Update security rules to allow communication to and from the cluster</p> <p class="pBody" style="margin-top:7.0pt">It is not uncommon for a use case to involve multiple departments, highlighting technical and nontechnical challenges as previously stated.</p> <p class="pBody">For automation to be successful, it must effectively bridge organizational silos and seamlessly integrate technology across different domains. First, we will explore the technical side, with DevOps and Continuous Integration/Continuous Delivery (CI/CD) and explain why this approach is becoming the most common for automation, one reason being that CI/CD pipelines enable shorter time to market for new features, creating quicker results and thus lowering the strain on development. Later in this white paper will we elaborate on the organizational challenges and constraints associated with the execution of automation projects.</p> <p class="pToC_Subhead1"><a name="_Toc171708246">Approaches to automation</a></p> <p class="pBody">One of the initial drivers that causes organizations to look at automation is the ability to reduce the time it takes to complete a given task. While there are multiple ways to automate a configuration task, not all of them necessarily give the same return when it comes to time savings.</p> <p class="pBody">The following illustration shows different approaches to operate a network and the time it takes to execute a given task across a large number of devices.</p> <p class="pBody"><img width="864" height="369" id="Picture 8" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_2.png" alt="Approaches to infrastructure automation"/></p> <div class=" pDefault"> Figure 3. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Approaches to infrastructure automation</p> <p class="pBody">A common starting point for automation is to create standalone scripts that automate the execution of a given task by automating the interaction needed toward each network element. While this gives an immediate increase in speed for that task, it may not give the rest of the organization much improvement in speed, as such scripts are not often shared throughout the organization. Knowledge about how such scripts work is also typically confined to the author who created them and tends to lack documentation. This results in tribal knowledge and introduces risk if the author leaves the company, as the scripts are often stored by the author without proper controls or repositories. </p> <p class="pBody">An alternative approach to automation is the introduction of a controller-based architecture. In such architectures, the controller is responsible for translating the intended configuration provided by the engineer to a device-level configuration for each of the devices it manages. The controller in this context can be anything from an integral part of the infrastructure architecture, such as the Cisco<span class="Superscript"><sup class=" cSuperscript">®</sup></span> Application Policy Infrastructure Controller (APIC) [<a href="#ONe">1</a>], Cisco Intersight<span class="Superscript"><sup class=" cSuperscript">®</sup></span> [<a href="#two">2</a>], Nutanix Prism [<a href="#thre">3</a>], or Red Hat Ansible Automation Platform [<a href="#four">4</a>] to an automation solution developed in-house that automates the infrastructure in question.</p> <p class="pBody">Even when the infrastructure architecture has a centralized controller, it often makes sense to build an automation solution using the controller API to eliminate manual configuration through the controller’s user interface. Such a solution can provide an abstraction that simplifies the work required to specify the intended configuration.</p> <p class="pBody">It is, however, unlikely that you will find a single controller that spans the breadth of all technologies in the data center. Instead, it is often better to ensure that all technology domains follow the same principles, often referred to as a design pattern. This gives each technology domain enough flexibility to implement the optimal solution for its needs while ensuring some level of consistency in terms of a way of working for engineers across technology domains.</p> <p class="pToC_Subhead1"><a name="_Toc171708247">Infrastructure as code and DevOps</a></p> <p class="pBody">As described in the previous section, one can have multiple approaches and design patterns to choose from when it comes to data center automation. Infrastructure as code (IaC) is one of these approaches. It is centered around managing the infrastructure configuration through machine-readable definition files rather than directly through interactive configuration tools like a CLI, GUI, etc. provided by the underlying hardware and software solutions.</p> <p class="pBody">IaC is applicable in the scenario where the infrastructure devices are configured directly, as well as when the infrastructure itself provides a controller that acts as single point of entry for configuration tasks.</p> <p class="pToC_Subhead2" style="page-break-before:always">Operate configuration as code</p> <p class="pBody">A key concept with IaC is the use of machine-readable definition files used to store the configuration. While multiple file formats exist for such definition files (JSON, XML, YAML, etc.), it is important that these are also human readable. </p> <p class="pBody">The YAML definition file shown in Figure 4 is defining the Kubernetes cluster, which describes not only the cluster itself but also the characteristics of the virtual machines on which it runs.</p> <p class="pBody"><img border="0" width="670" height="907" id="Picture 19" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_3.png" alt="Sample YAML code for IaC"/></p> <div class=" pDefault"> Figure 4. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Sample YAML code for IaC</p> <p class="pBody" style="page-break-before:always">As illustrated in the figure, YAML is human readable and therefore easy to read and update. This is one of the reasons why YAML is used in many IaC implementations.</p> <p class="pBody">Describing the desired infrastructure configuration in human and machine-readable definition files is, however, only one piece of the puzzle in an IaC implementation. It is also necessary to define and implement the engine that will consume these definitions and translate them into device-level configurations that can be pushed to the infrastructure.</p> <p class="pBody"><img border="0" width="929" height="545" id="Picture 23" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_4.png" alt="IaC automation engine"/></p> <div class=" pDefault"> Figure 5. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">IaC automation engine</p> <p class="pBody">The automation engine is responsible for the following tasks:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Ensuring that the automation inputs are valid, from both a syntax and semantics point of view, with the goals of catching errors prior to pushing the configuration to the network. This is often referred to as pre-change validation, which may, depending on the implementation, be leveraging the target’s API.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Translating the desired configuration into device-level configurations that can be pushed to the infrastructure.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Verifying that the desired configuration has been successfully applied to the infrastructure without error. This is often referred to as post-change validation, which will be leveraging the target’s API.</p> <p class="pBody" style="margin-top:7.0pt">When it comes to the implementation of the automation engine, there are several fundamentally different approaches that can be chosen:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Imperative/procedural vs. declarative</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Stateful vs. stateless</p> <p class="pBody" style="margin-top:7.0pt;page-break-before:always">The <b>imperative/procedural</b> approach specifies the sequence of steps required to achieve a certain outcome—i.e., do task A, do task B, verify task C, and do task D, in that exact order. Such an approach is not ideal for configuration tasks, as the described procedure often assumes a given state of the infrastructure when starting the workflow. As an example, how would the workflow detect that task A has already been completed and therefore can be skipped—especially if the operation in task A is not idempotent, meaning that if it is run again for the same target it will not create the same results. The imperative/procedural approach to automation is often required for use cases like software upgrades, as these typically need a specific sequence of tasks to be executed in a predetermined sequence of steps and validations.</p> <p class="pBody">The <b>declarative </b>approach to automation instead focuses on describing the desired state for the infrastructure and leaves it up to the automation system to derive the changes and sequence of actions that need to occur in order for the infrastructure to have the desired state. A declarative implementation is ideally suited for managing infrastructure configuration.</p> <p class="pBody">With a <b>stateless</b> approach to automation, the automation solution does not have any knowledge about what it has done previously. Good candidates for automation tasks using a stateless approach are software upgrades, etc., where only an indication of success or failure after the execution is needed.</p> <p class="pBody">A <b>stateful </b>approach to automation, on the other hand, stores the state of the infrastructure between execution runs, allowing for detection of configuration changes performed outside of the automation framework—also known as configuration drift. Stateful implementations of automation are typically seen when the automation solution is used to manage the configuration of the infrastructure. </p> <p class="pBody">For the implementation of the automation system, multiple tools and solutions are typically used. Popular choices for the configuration management elements include:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>RedHat Ansible</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>HashiCorp Terraform</p> <p class="pBody" style="margin-top:7.0pt">Ansible [<a href="#five">5</a>] is an automation tool from RedHat that simplifies the management and configuration of a wide range of systems. it uses YAML to define the order in which the tasks should be executed on the target devices to achieve the desired configuration. Ansible does not require any agents to be installed on the target systems. It is based on an imperative/procedural approach to automation in the sense that you define a sequence of tasks that are executed in the specified sequence, but it is possible to achieve declarative behavior with Ansible. This does, however, required special care and considerations when writing the Ansible Playbooks and comes with some additional complexity—especially if state is required between executions to achieve the declarative behavior, as Ansible is stateless by nature.</p> <p class="pBody">Terraform [<a href="#six">6</a>] is an infrastructure automation tool from HashiCorp that enables a wide range of infrastructure resources to be configured based on a declarative intent definition. This definition is specified using a human-readable format called HashiCorp Configuration Language (HCL). Once the desired state is specified, Terraform will automatically determine the configuration additions, updates, and removals required in the infrastructure to ensure that it matches the defined intent. Terraform keeps state between executions, and this state information is used when determining the actions required to achieve the defined intent.</p> <p class="pBody">Ansible and Terraform each have their strengths and weaknesses, which means there often is not one tool that fits all automation use cases. Ansible is often used to implement use cases like software upgrades of network devices or to manage the lifecycle of software packages on server workloads, while Terraform is used to manage the lifecycle of infrastructure configurations like networks/VLANs, deployment of VMs, etc.</p> <p class="pToC_Subhead1"><a name="_Toc171708248">DevOps and CI/CD</a></p> <p class="pBody">IaC provides the technical implementation of the automation solution using machine-readable definition files. This ability to treat configuration as code enables organizations to evolve the way they are working using DevOps principles.</p> <p class="pBody">DevOps introduces a paradigm shift from infrequent large changes to frequent small changes that allow for real-time course corrections based on business and customer feedback.</p> <p class="pBody"><img border="0" width="669" height="409" id="Picture 20" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_5.png" alt="DevOps model"/></p> <div class=" pDefault"> Figure 6. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">DevOps model</p> <p class="pBody">Another key element in the DevOps paradigm shift is the use of practices known from the software development world for infrastructure management. With this, we mean the adoption of version control, automated testing to ensure the success of a planned change both before and after the change, as well as automatic deployment of the change using automation.</p> <p class="pBody">Standardization plays a vital role in the effectiveness of automation. Complex customizations are not feasible in automated tasks. An obstacle often encountered in automation projects is the extensive range of customization options provided for each IT service offering. Standardizing the service offerings into a limited number of flavors significantly increases the probability of successful automation.</p> <p class="pBody">A concrete example is to provision a virtual machine. If we were to list all the possible customization options, the list would be endless and impossible to realize into code. Instead, we could agree on a set of configuration flavors such as the ones listed in Table 1.</p> <p class="pTableCaptionCMT" style="page-break-before:always"><b>Table 1.<span style="font:7.0pt "Times New Roman""> </span></b>Sample sizes for virtual machines</p> <div> <table border="1" cellpadding="6" cellspacing="0" width="100%" bordercolor="#ADADAD"> <thead> <tr valign="top" align="left"> <td> <p class="Cellhead1"><span style="color:white">Size</span></p> </td> <td> <p class="Cellhead1"><span style="color:white">Memory</span></p> </td> <td> <p class="Cellhead1"><span style="color:white">vCPUs</span></p> </td> <td> <p class="Cellhead1"><span style="color:white">Storage</span></p> </td> </tr> </thead> <tbody> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>XL</b></p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">128 GB</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">20</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">20 TB</p> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>L</b></p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">64 GB</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">16</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">10 TB</p> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>M</b></p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">32 GB</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">16</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">1 TB</p> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>S</b></p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">16 GB</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">8</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">10 GB</p> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>XS</b></p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">8 GB</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">4</p> </td> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none">2 GB</p> </td> </tr> </tbody> </table> </div> <p class="pBody" style="margin-top:7.0pt">If we were to map all existing workloads into these five configuration flavors, automation would be much easier, without the need for custom approaches.</p> <p class="pToC_Subhead2">Source version control system</p> <p class="pBody">When operating an environment that is defined by IaC, a source version control system is a must. The de facto standard for source version control in today's world is Git [<a href="#seve">7</a>]. Git is an open-source tool for version control that operates in a distributed manner, where the change history is stored both in the central repository and on the local copy of the repository on each engineer's workstation.</p> <p class="pBody">When it comes to implementing Git, there are multiple options, such as GitHub, GitLab, Bitbucket, etc. In an IaC implementation, Git is often used to store the source of truth for the intended configuration. This configuration is then what is pushed to the infrastructure using tools like Ansible or Terraform.</p> <p class="pToC_Subhead2">Continuous Integration/Continuous Delivery (CI/CD)</p> <p class="pBody">In the context of IaC and DevOps, CI/CD can be used as the process orchestrator that connects the different elements together using one or more pipelines. Several pipeline tools are available; some commonly used ones include Jenkins, GitHub Actions, and GitLab CI.</p> <p class="pBody">In an infrastructure automation solution, the pipeline is responsible for executing the different automation tasks in the correct sequence. The following figure shows an example of a network infrastructure pipeline. The example pipeline is taken from the Nexus as Code [<a href="#eigh">8</a>] solution available on Cisco DevNet.</p> <p class="pBody"><img border="0" width="929" height="112" id="Picture 13" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_6.png" alt="Network infrastructure CI/CD pipeline example"/></p> <div class=" pDefault"> Figure 7. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Network infrastructure CI/CD pipeline example</p> <p class="pBody">If this had been a sample pipeline for other data center technologies such as virtual machine deployment, firewall configuration, storage provisioning, etc. it would look very similar.</p> <p class="pBody">The validate stage ensures that the desired state is defined using the correct syntax and, where possible, also validates the semantics of the defined state. In other words, this stage aims at catching errors prior to deploying the configuration to the production network.</p> <p class="pBody">The plan stage determines the actions (add, modify, delete) that are required in the infrastructure to match the desired state. The output of this stage can be used as input into the change management process required to approve the configuration change (if applicable). </p> <p class="pBody">The deploy stage modifies the configuration of the infrastructure to ensure that it matches the desired state. Depending on the nature of the change and the maturity of automation within the organization, this stage may be executed after an automatic change approval, or it may be triggered manually after an approval of the change.</p> <p class="pBody">The two test stages (test-idempotency and test-integration) are executed after the deploy stage to ensure that the required changes have been successfully applied to the infrastructure. These stages are typically executed using automated testing tools that inspect things like interface status, error messages, etc.</p> <p class="pBody">The final stage in an infrastructure pipeline is the notification stage, where the success or failure of the pipeline is communicated. Such notification can be done in multiple ways, depending on the maturity and desire of the organization, but commonly used methods include instant messaging, email, etc.</p> <p class="pToC_Subhead1"><a name="_Toc171708249">People and process challenges when adopting automation</a></p> <p class="pToC_Subhead2">Technical and human challenges</p> <p class="pBody">This section explores in more details the various types of organizational challenges that we have experienced.</p> <p class="pToC_Subhead2">The complexity of a data center</p> <p class="pBody">As described earlier, the data center is complex due to its wide range of technologies, platforms, and vendors. In addition, it is an area with a high frequency of changes such as add/modify VM, add/modify ACL, attach switch port to network segment, etc. This can pose constraints to automation initiatives, making it challenging to ensure compatibility, standardize processes, and adapt to evolving technology.</p> <p class="pToC_Subhead2">The human factor</p> <p class="pBody">People in general do not feel comfortable embracing change. Change is often seen as scary, or there is a lack of understanding of why it is needed. The resistance to change when introducing automation is a very key factor to address to achieve success. One way to help motivate the adoption of automation is to address the benefits, such as:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Fewer human errors</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Consistency of deployments</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Easy rollback</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Risk reduction</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Automated testing and validation</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Self-documenting infrastructure</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Complete audit trail of deployments</p> <p class="pBody" style="margin-top:7.0pt;page-break-before:always">Stopping the need to perform boring and repetitive tasks will free up time for more personal development, as the automation is supporting the changes required, or configuration updates. The main driver contributing to resistance to change is the fear of losing one’s job or being made obsolete by technology. </p> <p class="pBody">The other aspect of IaC in particular is that the whole configuration of devices is kept outside of the device itself in a version control code repository. If you are or have been a developer, this would appear very normal, but a traditional systems/network administrator may be uncomfortable with this approach. However, the repository can be beneficial during an audit, where everything is verified; having the source of truth outside of the devices will greatly support the audit process.</p> <p class="pBody">When IaC gets introduced, it is often done in an all-or-nothing approach, since also performing direct configuration on a device would offset the configuration stored in the code repository and lead to configuration drift. Moving the configuration outside of the actual device is by far the biggest change to accept and really trust. However, it is important to make sure that it does not become an all-or-nothing approach. Try to begin by adopting even small automation tasks that feed into the bigger automation strategy.</p> <p class="pToC_Subhead2">Organizational challenges</p> <p class="pToC_Subhead3">Little kingdoms</p> <p class="pBody">To better understand the organizational challenges mentioned previously, we first take a look at the classic hierarchy. </p> <p class="pBody"><img border="0" width="928" height="396" id="Picture 14" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_7.png" alt="Classic organizational hierarchy"/></p> <div class=" pDefault"> Figure 8. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Classic organizational hierarchy</p> <p class="pBody">In the classic hierarchy, the business is separated from the infrastructure services. The infrastructure is then separated into network, compute, and storage, thus making automation a challenge, since it touches multiple areas. If we collapsed this into a more functional organization, it could work better, but it is only one solution of many. Another possible way is to have clear design patterns during an automation implementation, so they can merge ideas and toolsets, resulting in immediate synergies. It is also quite common for security to form its own department, which creates another challenge on top of automation.</p> <p class="pBody">What if we took this organization, collapsed the infrastructure, and make a dotted line between the silos? It would then turn into something like the following.</p> <p class="pBody"><img border="0" width="928" height="396" id="Picture 15" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_8.png" alt="Updated organization"/></p> <div class=" pDefault"> Figure 9. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Updated organization</p> <p class="pBody">What could make this scenario more likely to succeed? Notice that we now have a single team responsible for infrastructure services. This could be seen as IT as a service, with a common goal of having the best working private/hybrid cloud. Automation is now easier to implement, as things are now seen as services provided to the business manager. There could then be multiple application areas. </p> <p class="pBody">There are other types of siloed organizations that would also challenge automation. This scenario is aimed more at people who are facing the change with fear, which automatically leads to pushback when something is unknown or new. Here the key would be education, and helping people embrace the future by starting with automation of small and noncomplex tasks. Also very important would be to drive smaller automation projects to get some small successes that can later be used to scale up the model. This would also build confidence with the team.</p> <p class="pToC_Subhead2" style="page-break-before:always">IT as a service provider</p> <p class="pBody">Another scenario would be to organize based on complete service transparency. This would mean that the service provided could almost be seen as an external company.</p> <p class="pBody"><img border="0" width="1009" height="431" id="Picture 1" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_9.png" alt="IT as a service provider"/></p> <div class=" pDefault"> Figure 10. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">IT as a service provider</p> <p class="pBody">One of the challenges here would be local cost vs. profit. Another important aspect to address in the absence of shared management is ownership and budget allocation. When multiple organizations are involved, determining who should invest in licenses and other resources can be a challenge, particularly in larger enterprises. Resolving this issue is not always easy, but it can be facilitated by engaging an external consultant or vendor who could provide support. By collaborating with the various organizations within the customer, a consultant can foster an environment where there is an incentive to work together toward a unified approach, rather than having separate independent solutions. This allows for a more strategic and cohesive approach to be implemented across the entire organization. </p> <p class="pBody">To facilitate this process, it would be advantageous to implement a service catalog. A service catalog serves as a framework that drives the automation of services and clearly outlines the available offerings. By having a well-defined service catalog in place, organizations can proactively prevent issues such as shadow IT (the use of technology or software within an organization without the knowledge, approval, or oversight of the IT department). Additionally, to drive an automation initiative forward, it is beneficial to have a global goal that encompasses IT. When there is a shared objective that includes IT, it becomes easier to implement changes, even if they are taken in small steps. This approach allows for a gradual and systematic implementation of a unified strategy across the organization. It would also show a measured way of success, whether services are repeated or just one-offs.</p> <p class="pToC_Subhead2" style="page-break-before:always">Squad-based organization</p> <p class="pBody">Another scenario we often encounter is the formation of functional squads, consisting of representatives from various areas such as security, network, applications, and more. Squad teams offer several positive aspects that can contribute to their success, including diverse experience, improved collaboration, and efficient decision-making.</p> <p class="pBody">While this approach allows for cross-functional collaboration and expertise, the challenge lies in establishing a common goal among the squads. However, with some strategic thinking and setting aside personal emotions, this challenge can be effectively addressed.</p> <p class="pBody"><img border="0" width="928" height="384" id="Picture 17" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_10.png" alt="Squad-based organization"/></p> <div class=" pDefault"> Figure 11. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Squad-based organization</p> <p class="pBody">Another challenge associated with squad-based organizations is cost and priorities. If the development squad wants to buy a license but the production squad may also need it, where should the cost go? There are, of course, benefits to keeping the functional areas together, but it also creates these types of challenges.</p> <p class="pBody">One benefit of this model could be the competitive aspect between squads, which could lead to increased innovation but can also create friction between them related to budget and resource allocation.</p> <p class="pToC_Subhead2">Private agendas</p> <p class="pBody">An important aspect to consider is the potential for individuals to focus on personal goals and establish their own "kingdoms," rather than prioritizing the collective greater good. It is important to note that this behavior is not always the fault of the employee, as it can stem from management not providing a clear vision and motivation. However, by fostering a positive work environment, organizations can address these challenges. Encouraging open communication, providing a clear direction, and promoting collaboration can inspire employees to align their efforts toward the organization's success. </p> <p class="pToC_Subhead2">Job protection</p> <p class="pBody">People often perceive automation as a potential threat to their job security, which makes it a common concern when considering whether to adopt automation. Of course, protecting oneself is a natural reaction. However, based on our experience, individuals who embrace new technologies and adapt to new ways of working actually enhance their personal value on the job market.</p> <p class="pToC_Subhead2">Trust or lack thereof</p> <p class="pBody">Implementing automation can sometimes require a leap of faith. Many individuals may have experienced the initial hesitation of running an automated process and then waiting anxiously for it to complete, meticulously checking logs to ensure that it was successful. Even when running the automation repeatedly, there may still be lingering doubt as to whether it will perform as expected. To establish confidence in automation, incorporating testing is key. Integrating thorough testing into the automation workflow can ensure that the system promptly identifies any issues or failures. This approach enables real-time feedback, notifying you if something didn't work as intended.</p> <p class="pToC_Subhead2">Summary of organizations</p> <p class="pBody">Let us now compare the various types of organizations. The following table outlines some pros and cons of the various styles we have discussed.</p> <p class="pTableCaptionCMT"><b>Table 2.<span style="font:7.0pt "Times New Roman""> </span></b>Comparison of organizations</p> <div> <table border="1" cellpadding="6" cellspacing="0" width="100%" bordercolor="#ADADAD"> <thead> <tr valign="top" align="left"> <td> <p class="Cellhead1"><span style="color:white">Type of organization</span></p> </td> <td> <p class="Cellhead1"><span style="color:white">Pros</span></p> </td> <td> <p class="Cellhead1"><span style="color:white">Cons</span></p> </td> </tr> </thead> <tbody> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>Little kingdoms</b></p> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Commonly used and understood </div> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Less visibility into strategy </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>IT separated from the business </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Siloed organizations, even inside IT </div> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>IT as a service provider</b></p> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Transparency of IT cost for the provided services </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Clear visibility into provided IT services </div> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Requires a clear definition of all the provided IT services </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Higher risk of shadow IT due to the speed of services, costs, and processes to request a new service </div> </td> </tr> <tr valign="top" align="left"> <td> <p class="pChart_bodyCMT" style="font-style: normal; font-variant: normal; font-weight: normal; margin-bottom: 3pt; margin-left: 3pt; margin-right: 3pt; margin-top: 3pt; text-align: left; text-decoration: none; text-indent: 0pt; text-transform: none"><b>Squad-based organization</b></p> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Each squad could be set up to be competitive </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Faster changes </div> </td> <td> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Isolated knowledge </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>Defined silos </div> <div class=" pCellBulletCMT"> <span style="font-size:7.0pt;font-family:"Arial","sans-serif";layout-grid-mode:line">●<span style="font:7.0pt "Times New Roman""> </span></span>No cost sharing such as Enterprise Agreements on licenses </div> </td> </tr> </tbody> </table> </div> <p class="pToC_Subhead1"><a name="_Toc171708250">Conclusion</a></p> <p class="pBody">There is no “magic bullet” to completely solve every challenge that arises, but we have tried to share our experiences and give our view of what a successful automation implementation could look like. We base our conclusion on the following three topics:</p> <p class="pToC_Subhead2">Structured approach</p> <p class="pBody">One of the most important things to learn from this white paper is the need for a structured approach to automation, and this includes people and processes. When a process has structure, it is much easier to follow, measure, and see the progress made. Seeing progress will help build trust in the organization. It is also vital for the structure to be reviewed on a regular basis, since a long-term plan is valid only when it comes to the details for the short term. This is mainly because everything is evolving, and we must adapt the plan accordingly. </p> <p class="pBody">One of the key things we have seen is that technology cannot be the only driver. Working with people and the corresponding processes has to occur side by side.</p> <p class="pBody" style="page-break-before:always">So do we have a golden recipe for making automation a success?</p> <p class="pBody">The recipe we have seen to be successful is a repeatable three-stage approach:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Automate a task or IT service by starting with low-complexity, high-impact tasks before tackling more complex tasks.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Build on the benefit realized from the automated tasks or IT services to implement full automation of additional tasks or IT services.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Use the benefits (time saved and ease of deployment) to build trust in automation, both from a technical perspective and a people and process perspective.</p> <p class="pBody" style="margin-top:7.0pt"><img border="0" width="456" height="409" id="Picture 21" src="/c/dam/en/us/solutions/collateral/executive-perspectives/technology-perspectives/dc-automation-infrast-code-wp.docx/_jcr_content/renditions/dc-automation-infrast-code-wp_11.png" alt="Automation journey"/></p> <div class=" pDefault"> Figure 12. <span style="font:7.0pt "Times New Roman""> </span> </div> <p class="FigureCaptionText">Automation journey</p> <p class="pBody">As part of this journey, make sure to advertise the success of automation to make it “popular,” which then will inspire others to adopt automation in their technical domain.</p> <p class="pBody">Automation naturally requires a clearly documented plan to be in place, but it must be revisited frequently and adapted to the ongoing change, digitization of the organization, and changes to the way of working. If a plan is created and defined to encompass 3 years, the plan should be revalidated at least every 6 months to provide guidance (quarterly, semiannually, in alignment with the audit cycle but 2 months before the actual audit), and then should be amended based on progress and any other developments. A company in general will always continue to grow, so the goals that were set in the beginning may not be the same over time. In addition, technology advances with tremendous speed.</p> <p class="pBody">Another good flipside of having a working automation framework could be the reporting function, which can show how many times a device or system has been updated, changed, added, or deleted, thus enabling the organization to track time spent, implementation costs, potential cost savings, and similar metrics.</p> <p class="pToC_Subhead2" style="page-break-before:always">People and processes</p> <p class="pBody">In our experience, this is the most overlooked aspect to address to make automation successful. Technology can solve a lot of problems, but we must consider the overall company as well. If we stop now and then, rethink, and adapt, that is a good start. It is very important to reiterate the long-term goals and translate them into short-term, tangible, actionable items. This allows the people and processes to grow with the technology, so they don’t end up fighting it.</p> <p class="pBody">Quickly going back to the data center model, we feel it is important to keep dissolving those silos and to clearly define common goals that everyone can not only benefit from but also see the reasons behind. It is very easy to state that automation is a must, but very easy to forget the true complexity of the relationship between humans and technology.</p> <p class="pToC_Subhead2">Lessons learned and experience</p> <p class="pBody">We have listed numerous challenges and issues, and recommendations for overcoming them. Here we will try to structure this into an approach that we have seen working in practice based on years of experience with implementing automation for our customers:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Break through the organizational silos and define common Key Performance Indicators (KPIs).</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Provide training and information so people use the same terminology and have a full understanding of both the technology and the automation goals.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>See information as something to be shared, and encourage information sharing on all levels: executives, directors, managers, architects, engineers. Encourage more transparency between roles and positions.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Understand the complexity and risks associated with “doing it ourselves” vs. purchasing off-the-shelf products or solutions.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Start small and grow, so the organization can evolve at the same pace as the software.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>All opinions and inputs count, but emotions must be put aside for critical decisions. Once a decision has been reached, everyone must agree to follow that path.</p> <p class="pToC_Subhead1"><a name="_Toc171708251">Summary</a></p> <p class="pBody">We trust you have gained some new insights from this white paper, and that it is fostering some discussions. To help you with these discussions, we’ve distilled a short list of things to consider. One of the biggest challenges is the link between technologies, organizations, and human processes. When introducing a new technology, organizations frequently forget to let the people adapt and evolve as well. </p> <p class="pBody">It does not have to be hard to implement automation for a data center; it just requires some thinking, planning, and agreement. It also requires an open mind. The following list summarizes some key tasks:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Define and validate why automation would help.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Create common KPIs across organizations.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Decide how to automate: Classic automation vs. infrastructure as code.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Choose between home-grown vs. off-the-shelf solutions, as both should be considered.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Train people and update organizational structure.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Define a clear roadmap spanning 2 to 3 years, and review it constantly.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Implement one use case to prove the framework.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Use sprint-based development to add new automation use cases.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Provide ongoing training and documentation.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Provide cross-organizational updates and sprint demos.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Keep track of ongoing lessons learned.</p> <p class="pBody" style="margin-top:7.0pt">There is no order to these points, but they are all important to reflect on and define.</p> <p class="pBody">In conclusion, here are the truths as we see them:</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>There is no magic bullet.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>There is no single technical solution that fits all.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Investment from the business is vital.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Evolution and building trust take time, even in a modern age.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Involve multiple areas of the business to ensure a higher chance of success.</p> <p class="pBulletCMT" style="font-style: normal; font-variant: normal; font-weight: normal;margin-bottom: 3pt; margin-right: 0pt; margin-top: 0pt; text-decoration: none; text-transform: none"><span style="font-size:7.0pt;font-family:"Arial","sans-serif";position:relative;top:-.5pt">●<span style="font:7.0pt "Times New Roman""> </span></span>Promote standardization of IT services.</p> <p class="pToC_Subhead1"><a name="_Toc171708252">Authors</a></p> <p class="pBody">Peter Charpentier,<b> </b>Principal Architect, Cisco Customer Experience</p> <p class="pBody">Morten Skriver,<b> </b>Principal Architect, Cisco Customer Experience</p> <p class="pToC_Subhead1"><a name="_Toc171708253">Reviewers</a></p> <p class="pBody">Asier Arlegui Lacunza, Principal Architect, Cisco Customer Experience</p> <p class="pBody">Michael Tievenow, Senior Solution Architect, Cisco Customer Experience</p> <p class="pBody">Nicole Wajer, Technical Solutions Architect, Cisco Sales</p> <p class="pBody">Steve Shaw, Solutions Development Architect, Cisco Customer Experience</p> <p class="pBody">Greg Simmons, Customer Success Enablement Leader, Cisco Customer Experience</p> <p class="pBody">Hank Preston, Principal Engineer, Learning and Certifications</p> <p class="pBody">Roger Dickinson, WW Solutions Engineer, CISG</p> <p class="pToC_Subhead2" style="page-break-before:always">Citations and bibliography</p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="ONe"></a>1] <a href="https://www.cisco.com/site/us/en/products/networking/cloud-networking/application-centric-infrastructure/index.html">Cisco Application Centric Infrastructure (ACI)</a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="two"></a>2] <a href="https://intersight.com/">Cisco Intersight</a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in"><span lang="FR-CA">[<a name="thre"></a>3] </span><a href="https://www.nutanix.com/products/prism."><span lang="FR-CA">Nutanix Prism</span></a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in"><span lang="FR-CA">[<a name="four"></a>4] </span><a href="https://www.redhat.com/en/technologies/management/ansible"><span lang="FR-CA">RedHat Ansible Automation Platform</span></a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="five"></a>5] <a href="https://www.ansible.com/">RedHat, Ansible</a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="six"></a>6] <a href="https://www.terraform.io">HashiCorp, Terraform</a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="seve"></a>7] <a href="https://git-scm.com">Git, Distributed Version Control System</a></p> <p class="pBody" style="margin-left:.25in;text-indent:-.25in">[<a name="eigh"></a>8] <a href="https://developer.cisco.com/docs/nexus-as-code/">Cisco, Nexus as Code</a></p> <p class="pBody"> </p> <p class="pBody"> </p> <p class="pBody"> </p> </div> </body> </html> <cdc:do action="com.cisco.wem.framework.service.command.eotcontent.EOTResponsiveContent@274f6a85" returnTypedAs="eotResponsiveContainerVo" id="eotResponsiveContainerVo" /> <div class="row full visitedlinks" style="padding: 0px; margin:0px"> <div class="col full" > </div> </div> </div> <script> if (window.cdc === undefined) { cdc = {}; } if (cdc.eot === undefined) { cdc.eot = {}; } cdc.eot.isEot = true; cdc.eot.isToc = true; jQuery(document).ready(function () { if (jQuery('.unpublished').length > 0) { let lastRel = "1.0"; if (jQuery('.published').length > 0) { lastRel = Number(jQuery('.published td')[0].innerText) + 1 + ".0"; } jQuery('.preview_revision').text(lastRel); } const linkItemsLen = jQuery("#eot-doc-wrapper link[rel='stylesheet']").length; function addNewTocStyleSheet() { const fileName = "/etc/designs/cdc/transformation/wemdcmt_responsive.css", linkElement = `<link rel="stylesheet" href="" type="text/css" />`; document.head.append(linkElement); } if (cdc.eot.isToc && !linkItemsLen) { addNewTocStyleSheet(); } else if (cdc.eot.isEot) { jQuery("#eot-doc-wrapper link[rel='stylesheet']").each(function () { const linkTag = jQuery(this), hrefVal = jQuery(linkTag).attr("href"); if (hrefVal != undefined && hrefVal.indexOf("support-responsive.css") == -1 && hrefVal.indexOf("_responsive.css") == -1) { let fileName = hrefVal.substr(hrefVal.lastIndexOf("/") + 1, hrefVal.length).split(".css")[0]; const filePath = "/etc/designs/cdc/transformation/"; if (fileName == "ccimr") { fileName = "techdocs_responsive"; } else if (fileName == "support-docs") { fileName = "support-responsive"; } else if (fileName == "framework") { fileName = "responsiveframework"; } else if (fileName == "dcmt") { fileName = "wemdcmt_responsive"; } else if (fileName == "techdocs_85_11_word") { fileName = "techdocs_85_11_word"; if (cdc.eot.isToc) { addNewTocStyleSheet(); } } else { fileName += "_responsive"; } jQuery(linkTag).attr("href", filePath + fileName + ".css"); } if (hrefVal.indexOf("support-responsive.css") > -1) { jQuery(linkTag).attr("href", "/etc/designs/cdc/transformation/support-responsive.css"); } }); jQuery("#eot-doc-wrapper > table").wrap("<div></div>"); jQuery("#eot-doc-wrapper table:not('.olh_note')").parent().css({ overflowX: "auto" }); } }); </script> <div class="noprint"> </div> <div class="noprint"> <script> console.log("Getting INVALID_TAGs from data object") </script> </div> <div id="learnMore" class="noprint"> <h3>Learn more</h3> </div> <div class="row halves noprint"> <div class="col half showComponent"> <div class="eot-vav"> <ul> </ul> </div> </div> <!-- Fix for US251354 --> <div class="col half"></div> </div> <div class="noprint"> </div> </div> </div> <!--googleoff: index--><!--googleoff: snippet--> <!-- end: responsive fat footer re-use wrapper--> </div> <script type="module" src="/site/web-components/us/en/cdc-footer.js"></script> <cdc-footer></cdc-footer> <script type="text/javascript"> if(document.querySelector('#privacy-manager')!=null){ document.querySelector('#privacy-manager').href='#cookies'; } </script> <div id="fw-overlay"></div> <script src="/etc/designs/cdc/clientlibs/responsive/js/responsive.min.js"></script> <!-- change to new clientlib, and metricsrules if applicable --> <script src="/etc/designs/cdc/fw/m/eot_metricsrule.js" type="text/javascript"></script> <script src="/etc/designs/cdc/fw/lib/jqmodal.js" type="text/javascript"></script> <!-- SiteCatalyst code version: H.24.4. --> <noscript><img src="//cisco.112.2o7.net/b/ss/cisco-mobile/5/12345" width="2" height="2" border="0" alt=""/></noscript> </body> </html>