<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic AppDynamics Smart Agent Management with GitHub Actions in Splunk AppDynamics</title>
    <link>https://community.splunk.com/t5/Splunk-AppDynamics/AppDynamics-Smart-Agent-Management-with-GitHub-Actions/m-p/755462#M11990</link>
    <description>&lt;DIV class=""&gt;&lt;H1&gt;AppDynamics Smart Agent Management with GitHub Actions&lt;/H1&gt;&lt;/DIV&gt;&lt;P&gt;Automated deployment and lifecycle management of AppDynamics Smart Agent across multiple EC2 hosts using GitHub Actions with a self-hosted runner.&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/tree/main" target="_blank" rel="noopener"&gt;https://github.com/chambear2809/github-actions-lab/tree/main&lt;/A&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":direct_hit:"&gt;🎯&lt;/span&gt; Overview&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;This lab demonstrates how to use GitHub Actions to manage AppDynamics Smart Agent and various AppDynamics agents (Node, Machine, DB, Java) across multiple Ubuntu EC2 instances within a single AWS VPC. The project includes 11 automated workflows covering the complete agent lifecycle.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Key Features:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Parallel Deployment&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Deploy to multiple hosts simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":counterclockwise_arrows_button:"&gt;🔄&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Complete Lifecycle Management&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Install, uninstall, stop, and clean agents&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":building_construction:"&gt;🏗&lt;/span&gt;️&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Infrastructure as Code&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All workflows version-controlled&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":locked_with_key:"&gt;🔐&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Secure&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- SSH key-based authentication, private VPC networking&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":chart_increasing:"&gt;📈&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Massively Scalable&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Deploy to thousands of hosts with automatic batching&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":control_knobs:"&gt;🎛&lt;/span&gt;️&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Self-hosted Runner&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Executes within your AWS VPC&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":bar_chart:"&gt;📊&lt;/span&gt; Architecture&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;All infrastructure runs in a single AWS VPC with a shared security group. The self-hosted runner communicates with target hosts via private IPs.&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener"&gt;View detailed architecture diagrams →&lt;/A&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt; Quick Start&lt;/H2&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;Prerequisites&lt;/H3&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;AWS VPC with EC2 instances (Ubuntu)&lt;/LI&gt;&lt;LI&gt;Self-hosted GitHub Actions runner in the same VPC&lt;/LI&gt;&lt;LI&gt;SSH key pair for authentication&lt;/LI&gt;&lt;LI&gt;AppDynamics Smart Agent package and config&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_1:"&gt;1️⃣&lt;/span&gt; Clone and Configure&lt;/H3&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;PRE&gt;git clone https://github.com/chambear2809/github-actions-lab.git
&lt;SPAN class=""&gt;cd&lt;/SPAN&gt; github-actions-lab&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_2:"&gt;2️⃣&lt;/span&gt; Set Up GitHub Secrets&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Navigate to:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Settings → Secrets and variables → Actions&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Required Secret:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;SSH_PRIVATE_KEY&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Your SSH private key (PEM format)&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_3:"&gt;3️⃣&lt;/span&gt; Set Up GitHub Variables&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Navigate to:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Settings → Secrets and variables → Actions → Variables&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Required Variable:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;DEPLOYMENT_HOSTS&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Target host IPs (one per line)&lt;DIV class=""&gt;&lt;PRE&gt;172.31.1.243
172.31.1.48
172.31.1.5&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Optional Variables:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;SMARTAGENT_USER&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- User for Smart Agent service (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;appdynamics)&lt;/LI&gt;&lt;LI&gt;SMARTAGENT_GROUP&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Group for Smart Agent service (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;appdynamics)&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_4:"&gt;4️⃣&lt;/span&gt; Deploy!&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;Via GitHub UI:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Go to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Actions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;tab&lt;/LI&gt;&lt;LI&gt;Select&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Deploy Smart Agent"&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Click&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Run workflow"&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Optionally adjust batch size (default: 256)&lt;/LI&gt;&lt;LI&gt;Click&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Run workflow"&lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Via GitHub CLI:&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;gh workflow run &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;Deploy Smart Agent&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt; --repo chambear2809/github-actions-lab

&lt;SPAN class=""&gt;# With custom batch size&lt;/SPAN&gt;
gh workflow run &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;Deploy Smart Agent&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt; --repo chambear2809/github-actions-lab -f batch_size=128&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":clipboard:"&gt;📋&lt;/span&gt; Available Workflows&lt;/H2&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;Deployment (1 workflow)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Description Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Deploy Smart Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Installs Smart Agent and starts service&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Agent Installation (4 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Command Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Node Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install node&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Machine Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install machine&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install DB Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install db&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Java Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install java&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Agent Uninstallation (4 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Command Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Node Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall node&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Machine Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall machine&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall DB Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall db&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Java Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall java&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Smart Agent Management (2 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Description Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Stop and Clean Smart Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Stops service and purges data&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Cleanup All Agents (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Deletes /opt/appdynamics directory&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;STRONG&gt;Total: 11 workflows&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All batched workflows support configurable batch sizes (default: 256)&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":books:"&gt;📚&lt;/span&gt; Documentation&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/DEPLOYMENT_GUIDE.md" target="_blank" rel="noopener"&gt;Deployment Guide&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Complete setup and configuration instructions&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener"&gt;Architecture Diagrams&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Visual infrastructure and workflow diagrams&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":hammer_and_wrench:"&gt;🛠&lt;/span&gt;️ How It Works&lt;/H2&gt;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Developer&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;pushes code or manually triggers a workflow&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GitHub Actions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;receives the event and assigns job to self-hosted runner&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Runner&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;loads target hosts from GitHub variables&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Parallel Execution&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Runner SSHs into each target host simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Commands Execute&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Install/uninstall/stop/clean operations run on each host&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Results Reported&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Success/failure status sent back to GitHub&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":locked_with_key:"&gt;🔐&lt;/span&gt; Security&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Private Network&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All communication via VPC private IPs&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;SSH Keys&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Stored securely as GitHub secrets&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;No Public Access&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Target hosts don't need public IPs&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Security Group&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Restricts SSH access to runner only&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":chart_increasing:"&gt;📈&lt;/span&gt; Scaling&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;All workflows use automatic batching to support any number of hosts:&lt;/P&gt;&lt;DIV class=""&gt;&lt;H3&gt;How It Works&lt;/H3&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Automatic batching&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Splits hosts into groups of 256 (configurable)&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Sequential batch processing&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Avoids overwhelming runner resources&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Parallel within batch&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Each batch processes all hosts simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Works at any scale&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- 1 host to thousands&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;Batching Strategy&lt;/H3&gt;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;Splits your host list into manageable batches&lt;/LI&gt;&lt;LI&gt;Processes each batch as a separate job sequentially&lt;/LI&gt;&lt;LI&gt;Deploys to all hosts within each batch in parallel using background processes&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Examples:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;10 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 1 batch, all deploy in parallel&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;500 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 2 batches × 256 hosts&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;1,000 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 4 batches × 256 hosts&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;5,000 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 20 batches × 256 hosts&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":handshake:"&gt;🤝&lt;/span&gt; Contributing&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;This is a lab/demo project. Feel free to fork and adapt for your own use cases!&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":link:"&gt;🔗&lt;/span&gt; Links&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://docs.github.com/en/actions" target="_blank" rel="noopener"&gt;GitHub Actions Documentation&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://docs.appdynamics.com/" target="_blank" rel="nofollow noopener"&gt;AppDynamics Documentation&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://docs.github.com/en/actions/hosting-your-own-runners" target="_blank" rel="noopener"&gt;Self-hosted Runners&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
    <pubDate>Thu, 13 Nov 2025 04:40:45 GMT</pubDate>
    <dc:creator>aleccham</dc:creator>
    <dc:date>2025-11-13T04:40:45Z</dc:date>
    <item>
      <title>AppDynamics Smart Agent Management with GitHub Actions</title>
      <link>https://community.splunk.com/t5/Splunk-AppDynamics/AppDynamics-Smart-Agent-Management-with-GitHub-Actions/m-p/755462#M11990</link>
      <description>&lt;DIV class=""&gt;&lt;H1&gt;AppDynamics Smart Agent Management with GitHub Actions&lt;/H1&gt;&lt;/DIV&gt;&lt;P&gt;Automated deployment and lifecycle management of AppDynamics Smart Agent across multiple EC2 hosts using GitHub Actions with a self-hosted runner.&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/tree/main" target="_blank" rel="noopener"&gt;https://github.com/chambear2809/github-actions-lab/tree/main&lt;/A&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":direct_hit:"&gt;🎯&lt;/span&gt; Overview&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;This lab demonstrates how to use GitHub Actions to manage AppDynamics Smart Agent and various AppDynamics agents (Node, Machine, DB, Java) across multiple Ubuntu EC2 instances within a single AWS VPC. The project includes 11 automated workflows covering the complete agent lifecycle.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Key Features:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Parallel Deployment&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Deploy to multiple hosts simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":counterclockwise_arrows_button:"&gt;🔄&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Complete Lifecycle Management&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Install, uninstall, stop, and clean agents&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":building_construction:"&gt;🏗&lt;/span&gt;️&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Infrastructure as Code&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All workflows version-controlled&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":locked_with_key:"&gt;🔐&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Secure&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- SSH key-based authentication, private VPC networking&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":chart_increasing:"&gt;📈&lt;/span&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Massively Scalable&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Deploy to thousands of hosts with automatic batching&lt;/LI&gt;&lt;LI&gt;&lt;span class="lia-unicode-emoji" title=":control_knobs:"&gt;🎛&lt;/span&gt;️&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Self-hosted Runner&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Executes within your AWS VPC&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":bar_chart:"&gt;📊&lt;/span&gt; Architecture&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;All infrastructure runs in a single AWS VPC with a shared security group. The self-hosted runner communicates with target hosts via private IPs.&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener"&gt;View detailed architecture diagrams →&lt;/A&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":rocket:"&gt;🚀&lt;/span&gt; Quick Start&lt;/H2&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;Prerequisites&lt;/H3&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;AWS VPC with EC2 instances (Ubuntu)&lt;/LI&gt;&lt;LI&gt;Self-hosted GitHub Actions runner in the same VPC&lt;/LI&gt;&lt;LI&gt;SSH key pair for authentication&lt;/LI&gt;&lt;LI&gt;AppDynamics Smart Agent package and config&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_1:"&gt;1️⃣&lt;/span&gt; Clone and Configure&lt;/H3&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;PRE&gt;git clone https://github.com/chambear2809/github-actions-lab.git
&lt;SPAN class=""&gt;cd&lt;/SPAN&gt; github-actions-lab&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_2:"&gt;2️⃣&lt;/span&gt; Set Up GitHub Secrets&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Navigate to:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Settings → Secrets and variables → Actions&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Required Secret:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;SSH_PRIVATE_KEY&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Your SSH private key (PEM format)&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_3:"&gt;3️⃣&lt;/span&gt; Set Up GitHub Variables&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Navigate to:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Settings → Secrets and variables → Actions → Variables&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Required Variable:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;DEPLOYMENT_HOSTS&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Target host IPs (one per line)&lt;DIV class=""&gt;&lt;PRE&gt;172.31.1.243
172.31.1.48
172.31.1.5&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Optional Variables:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;SMARTAGENT_USER&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- User for Smart Agent service (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;appdynamics)&lt;/LI&gt;&lt;LI&gt;SMARTAGENT_GROUP&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Group for Smart Agent service (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;appdynamics)&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;&lt;span class="lia-unicode-emoji" title=":keycap_4:"&gt;4️⃣&lt;/span&gt; Deploy!&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;Via GitHub UI:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Go to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Actions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;tab&lt;/LI&gt;&lt;LI&gt;Select&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Deploy Smart Agent"&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Click&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Run workflow"&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Optionally adjust batch size (default: 256)&lt;/LI&gt;&lt;LI&gt;Click&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;"Run workflow"&lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Via GitHub CLI:&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;gh workflow run &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;Deploy Smart Agent&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt; --repo chambear2809/github-actions-lab

&lt;SPAN class=""&gt;# With custom batch size&lt;/SPAN&gt;
gh workflow run &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;Deploy Smart Agent&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;/SPAN&gt; --repo chambear2809/github-actions-lab -f batch_size=128&lt;/PRE&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":clipboard:"&gt;📋&lt;/span&gt; Available Workflows&lt;/H2&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;H3&gt;Deployment (1 workflow)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Description Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Deploy Smart Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Installs Smart Agent and starts service&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Agent Installation (4 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Command Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Node Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install node&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Machine Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install machine&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install DB Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install db&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Install Java Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl install java&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Agent Uninstallation (4 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Command Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Node Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall node&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Machine Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall machine&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall DB Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall db&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Uninstall Java Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;smartagentctl uninstall java&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV class=""&gt;&lt;H3&gt;Smart Agent Management (2 batched workflows)&lt;/H3&gt;&lt;/DIV&gt;&lt;P&gt;Workflow Description Scale Trigger&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Stop and Clean Smart Agent (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Stops service and purges data&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Cleanup All Agents (Batched)&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;Deletes /opt/appdynamics directory&lt;/TD&gt;&lt;TD&gt;Any&lt;/TD&gt;&lt;TD&gt;Manual only&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;STRONG&gt;Total: 11 workflows&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All batched workflows support configurable batch sizes (default: 256)&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":books:"&gt;📚&lt;/span&gt; Documentation&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/DEPLOYMENT_GUIDE.md" target="_blank" rel="noopener"&gt;Deployment Guide&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Complete setup and configuration instructions&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://github.com/chambear2809/github-actions-lab/blob/main/ARCHITECTURE.md" target="_blank" rel="noopener"&gt;Architecture Diagrams&lt;/A&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Visual infrastructure and workflow diagrams&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":hammer_and_wrench:"&gt;🛠&lt;/span&gt;️ How It Works&lt;/H2&gt;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;&lt;STRONG&gt;Developer&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;pushes code or manually triggers a workflow&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;GitHub Actions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;receives the event and assigns job to self-hosted runner&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Runner&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;loads target hosts from GitHub variables&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Parallel Execution&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Runner SSHs into each target host simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Commands Execute&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Install/uninstall/stop/clean operations run on each host&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Results Reported&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Success/failure status sent back to GitHub&lt;/LI&gt;&lt;/OL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":locked_with_key:"&gt;🔐&lt;/span&gt; Security&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Private Network&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- All communication via VPC private IPs&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;SSH Keys&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Stored securely as GitHub secrets&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;No Public Access&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Target hosts don't need public IPs&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Security Group&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Restricts SSH access to runner only&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":chart_increasing:"&gt;📈&lt;/span&gt; Scaling&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;All workflows use automatic batching to support any number of hosts:&lt;/P&gt;&lt;DIV class=""&gt;&lt;H3&gt;How It Works&lt;/H3&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Automatic batching&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Splits hosts into groups of 256 (configurable)&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Sequential batch processing&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Avoids overwhelming runner resources&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Parallel within batch&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- Each batch processes all hosts simultaneously&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Works at any scale&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;- 1 host to thousands&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H3&gt;Batching Strategy&lt;/H3&gt;&lt;/DIV&gt;&lt;OL&gt;&lt;LI&gt;Splits your host list into manageable batches&lt;/LI&gt;&lt;LI&gt;Processes each batch as a separate job sequentially&lt;/LI&gt;&lt;LI&gt;Deploys to all hosts within each batch in parallel using background processes&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;Examples:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;10 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 1 batch, all deploy in parallel&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;500 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 2 batches × 256 hosts&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;1,000 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 4 batches × 256 hosts&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;5,000 hosts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;= 20 batches × 256 hosts&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":handshake:"&gt;🤝&lt;/span&gt; Contributing&lt;/H2&gt;&lt;/DIV&gt;&lt;P&gt;This is a lab/demo project. Feel free to fork and adapt for your own use cases!&lt;/P&gt;&lt;DIV class=""&gt;&lt;H2&gt;&lt;span class="lia-unicode-emoji" title=":link:"&gt;🔗&lt;/span&gt; Links&lt;/H2&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;A href="https://docs.github.com/en/actions" target="_blank" rel="noopener"&gt;GitHub Actions Documentation&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://docs.appdynamics.com/" target="_blank" rel="nofollow noopener"&gt;AppDynamics Documentation&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A href="https://docs.github.com/en/actions/hosting-your-own-runners" target="_blank" rel="noopener"&gt;Self-hosted Runners&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Thu, 13 Nov 2025 04:40:45 GMT</pubDate>
      <guid>https://community.splunk.com/t5/Splunk-AppDynamics/AppDynamics-Smart-Agent-Management-with-GitHub-Actions/m-p/755462#M11990</guid>
      <dc:creator>aleccham</dc:creator>
      <dc:date>2025-11-13T04:40:45Z</dc:date>
    </item>
  </channel>
</rss>

