The following sections provide the example use cases for the Java Agent Ansible roles:

Install Java Agent on Linux or Windows

Example 1: AnsibleĀ® role used to install Java Agent on Windows or Linux without any application instrumentation:

---
- hosts: all
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - include_role:
        name: appdynamics.agents.java
      vars:
        agent_version: 21.1.0
        agent_type: java
        agent_action: upgrade # can be upgrade/install/rollback/uninstall, defaults to upgrade when unspecified
        application_name: "IoT_API" # agent default application
        tier_name: "java_tier" # agent default tier
YML

Example 2: Ansible role for installing Java Agent with changing Java startup script and performing restart:

---
- hosts: single-java-host
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - import_role:
        name: appdynamics.agents.java
        public: yes
      vars:
        agent_version: 21.1.0
        agent_type: java
        application_name: "BIGFLY" # agent default application
        tier_name: "java_tier" # agent default tier
    - name: Edit startup script with new java startup variables
      lineinfile:
        path: /opt/application/startAll.sh
        # Line to Search/Match against
        regexp: '^(.*)(-jar.*$)'
        # Line to Replace with
        line: '\1 -javaagent:{{ java_agent_dest_folder_linux }}/javaagent.jar -Dappdynamics.agent.nodeName=application-1 \2'
        backup: yes
        backrefs: yes
        state: present
      notify: RestartingApp
    - name: Allow appuser write to appd logs folder
      user:
        name: appuser
        groups:
        - appdynamics
        append: yes
      become: yes
  handlers:
    - name: RestartingApp
      command: '/opt/application/stopAll.sh && /opt/application/startAll.sh'
      args: 
        chdir: '/opt/application/'
YML

Instrument JBoss/Wildfly

The features of this role are:

  • Java Agent installation for Linux
  • Instrument Jboss/Wildfly
  • Automatic applications restart (if systemd service is present)
  • Java Agent start verification

Example 1: Install Java Agent and instrument one or more applications.

---
- hosts: all
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - include_role:
        name: appdynamics.agents.java
        # use java role variables in the following instrumentation tasks when public: yes
        public: yes
      vars:
        agent_version: 21.1.0
        agent_type: java

    - include_role:
        name: appdynamics.agents.instrument_jboss
      vars:
        # instrument jboss:
        application_name: "IoT_API2"
        tier_name: "Jboss"
        jboss_service: wildfly
        app_user: wildfly
        restart_app: yes
        jboss_config: /opt/wildfly/bin/standalone.sh
YML


Example 2: This role ensures that all instrumented applications have access to the Java Agent logs directory. 

In some cases, when the application PID user is not local on the Linux host,  it cannot be added to the AppDynamics group. In such a case, you can let the application user own the Java Agent directory instead.

---
- hosts: all
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - include_role:
        name: appdynamics.agents.java
        # use java role variables in the following instrumentation tasks when public: yes
        public: yes
      vars:
        agent_version: 21.1.0
        agent_type: java
        # single app mode: Can skip appdynamics user creation and own java-agent directory by app user (wildfly in this case)
        create_appdynamics_user: no
        agent_dir_permission:
          user:  wildfly
          group: wildfly
    - include_role:
        name: appdynamics.agents.instrument_jboss
      vars:
        # instrument jboss:
        application_name: "IoT_API2"
        tier_name: "Jboss"
        jboss_service: wildfly
        app_user: wildfly
        restart_app: yes
        jboss_config: /opt/wildfly/bin/standalone.sh
YML


JBoss Instrumentation Variables

VariableDescriptionRequiredDefault
app_userUser that runs this application. It must be provided, so write permissions are given to the java-agent logs directoryYjboss
jboss_serviceSystemd service that should be restarted if restart_app is set to 'yes'N
restart_appSet to 'yes' to automatically restart instrumented serviceNno
backupWhether original config file should be backed up before any changesNFalse
jboss_configJboss/Wildfly config to instrument. Provide a path to jboss standalone.shY/opt/wildfly/bin/standalone.sh

Instrument Apache Tomcat

The features of this role are:

  • Java Agent installation for Linux
  • Instrumentation of Apache Tomcat
  • Automatic applications restart (if systemd service is present)
  • Java Agent start verification

Example 1: Install Java Agent and instrument one or more applications.

---
- hosts: all
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - include_role:
        name: appdynamics.agents.java
        # use java role variables in the following instrumentation tasks when public: yes
        public: yes
      vars:
        agent_version: 21.1.0
        agent_type: java

    - include_role:
        name: appdynamics.agents.instrument_tomcat
      vars:
      # instrument tomcat:
        tomcat_service: tomcat9
        application_name: "IoT_API22"
        tier_name: "Tomcat"
        app_user: tomcat
        restart_app: yes
        tomcat_config: /usr/share/tomcat9/bin/setenv.sh
CODE

Example 2: To ensure all instrumented applications have access to the Java Agent logs directory.

In some cases, when the application PID user is not local on the Linux host, it cannot be added to the AppDynamics group. In such a case, you can let the application user own the Java Agent directory instead.

---
- hosts: all
  tasks:
    - name: Include variables for the controller settings
      # Include all yaml files under the vars directory
      include_vars:
        dir: vars
        extensions:
          - 'yaml'
          - 'yml'
    - include_role:
        name: appdynamics.agents.java
        # use java role variables in the following instrumentation tasks when public: yes
        public: yes
      vars:
        agent_version: 21.1.0
        agent_type: java
        # single app mode: Can skip appdynamics user creation and own java-agent directory by app user (tomcat in this case)
        create_appdynamics_user: no
        agent_dir_permission:
          user:  tomcat
          group: tomcat

    - include_role:
        name: appdynamics.agents.instrument_tomcat
      vars:
        # instrument tomcat:
        tomcat_service: tomcat9
        application_name: "IoT_API22"
        tier_name: "Tomcat"
        app_user: tomcat
        restart_app: yes
        tomcat_config: /usr/share/tomcat9/bin/setenv.sh
YML

Tomcat Instrumentation Variables

Variable

DescriptionRequiredDefault
app_userThe user that runs this application. It must be provided, so write permissions are given to the java-agent logs directoryYtomcat
tomcat_serviceSystemd service that should be restated if restart_app is set to 'yes'N
add_service_overrideIf enabled, adds systemd override file to explicitly allow write permissions to AppDynamics java-agent dir. Required for tomcat9 installed on ubuntu20.04Nyes
restart_appSet to 'yes' to automatically restart instrumented serviceNno
backupWhether the original config file should be backed up before any changesNno
tomcat_configChoose which tomcat configuration file to modify. You must set the full path to the setenv.sh file, for example, <CATALINA_HOME>/bin/setenv.sh. If Tomcat is installed with yum on RHEL distributions, this file is not invoked by the startup script. In that case, it can be set to /etc/tomcat/conf.d/appdynamics.conf instead.Y


AnsibleĀ® is a registered trademark of Red Hat, Inc. in the United States and other countries.