Skip to content

Latest commit

 

History

History
541 lines (423 loc) · 18.8 KB

ic_sa_installation.md

File metadata and controls

541 lines (423 loc) · 18.8 KB

Informatica Secure Agent Installation Logo

Pre-Requisites

Please consult the target Installation platform with Official PAM before Installing

Product Availability Matrix

Create a system user that will run and Secure Agent and own Secure Agent directory Suggested user name can be infaagent, informatica or sagent Check that you have enough space on the drive (mount you plant to install)

Run

df -kh

Make sure that at least 15 GB is available to Secure Agent

More available space may be needed if local file system will be used to stage flat files or other data locally (data lookups, caching, etc.) In such case plan sizing of file system and its usage monitoring accordingly.

Make sure that the Hostname of the Machine resolves correctly to IP and vice versa

hostname
nslookup $(hostname)

Make sure that you can connect to Informatica Cloud servers (Is proxy needed for outbound connections?)

$ curl -I https://na1.dm-us.informaticacloud.com/saas/download/linux64/installer/agent64_install_ng_ext.bin
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Cache-Control: private
Expires: Wed, 31 Dec 1969 19:00:00 EST
Accept-Ranges: bytes
ETag: W/"108785065-1560308789000"
Last-Modified: Wed, 12 Jun 2019 03:06:29 GMT
Content-Type: application/octet-stream;charset=UTF-8
Content-Length: 108785065
Date: Fri, 14 Jun 2019 17:01:32 GMT
Access-Control-Allow-Credentials: true
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Frame-Options: SAMEORIGIN
Set-Cookie: SERVERID_SAAS=IICS-saas6871920; path=/; Secure

Install Secure Agent

Note that the actual URL might be different based on the org you using, always make sure that you download the binary from the specific host site which your org is assigned to a specific informatica Pod.

Download the Secure Agent

IICS NA1 PODS

curl -o /tmp/agent64_install.bin https://na1.dm-us.informaticacloud.com/saas/download/linux64/installer/agent64_install_ng_ext.bin

or

wget -O /tmp/agent64_install.bin https://na1.dm-us.informaticacloud.com/saas/download/linux64/installer/agent64_install_ng_ext.bin

Install Secure Agent

# use chmod to set the binary as executable
mkdir -p /opt/infaagent
chmod +x /tmp/agent64_install.bin
/tmp/agent64_install.bin -i silent

The secure agent will be installed to the ~/infaagent directory of the user which runs the installer Install agent to a different directory: /tmp/agent64_install.bin -i silent -DUSER_INSTALL_DIR=<target directory> You can run secure agent installer in interactive console mode which will allow you to change some configuration options such as installation to different than default directory.

user@host ~ $ /tmp/agent64_install.bin -i console
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...

Launching installer...

/===============================================================================
Informatica Cloud Secure Agent                   (created with InstallAnywhere)
/-------------------------------------------------------------------------------

Preparing CONSOLE Mode Installation...
/===============================================================================
Choose Install Folder
/---------------------

Where would you like to install?

  Default Install Folder: /home/iclab/infaagent

ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
      : /opt/infaagent

Create Agent Connection User

Create User that will be used to register connect secure agent to Informatica Cloud i.e. [email protected] as Administrator CreateSA User

Initialize Secure Agent and register to your org

consoleAgentManager is a tool used to configure and manage agent settings, it is located in the <agent_home>/apps/agentcore directory. You can use it to manage various settings and initialize the agent.

/home/iclabinfaagent/apps/agentcore $ ./consoleAgentManager.sh
JAVA_HOME=/home/iclab/infaagent/apps/agentcore/../../jre
Console Agent Manager

Usage:
Use "./program help" to print this page. This is also the default operation.
./program OPERATION ARG1 ARG2...

Operations:

configure USERNAME PASSWORD
Configure the Agent Core with IOD username and password. After the Agent Core is configured, it belongs to the user and is ready to run jobs. If the Agent Core is already configured when this operation is executed, the Agent Core shuts down the previous process. This operation returns "succeeds" if the configuration succeeds and "fails" if it fails. Additional information maybe provided for the explanation of a configuration failure. Please refer to the AgentV3 functional specification for further information.

configureToken USERNAME TOKEN
Configure the Agent Core with IOD username and install token. After the Agent Core is configured, it belongs to the user and is ready to run jobs. If the Agent Core is already configured when this operation is
executed, the Agent Core shuts down the previous process. This operation returns "succeeds" if the configuration succeeds and "fails" if it fails. Additional information maybe provided for the explanation of a
configuration failure. Please refer to the AgentV3 functional specification for further information.

shutdown
Shutdown the agent.

shutdownNoLog
Shutdown the agent without generating any logs.

getStatus
Get the status of the agent.

updateStatus
Refresh the status of the agent. This maybe required for getStatus to return the correct status if the connectivity environment of the agent is changed.

isConfigured
Check if the agent is configured.

isConfigurationValid
Check if the agent's configuration is valid.

logMessage MSG
Log a message to the Agent Core. The message can be seen in the log of the Agent Core.

removePackages
Remove all packages from the agent.

removeApps
Remove all applications from the agent.

configureProxy
Configures proxy settings with proxyHost proxyPort proxyUsername proxyPassword passed as arguments. The proxyUsername and proxyPassword arguments are optional.

Register the Agent

Use Following commands to setup your agent after installation

cd /home/iclab/infaagent/apps/agentcore/
# check the status, for a new silent installed agent the status should be 'NOT_CONFIGURED'
./consoleAgentManager.sh getStatus
# Start Agent core
./infaagent startup
# register agent - after successful login agent core will initialize your agent and download updates and all your enabled components such as process engine and connectors
./consoleAgentManager.sh configure <userId> <password>

If you have a proxy http setup for your environment, you will have to configure proxy before running configure command by using the configureProxy command:

/home/iclabinfaagent/apps/agentcore/consoleAgentManager.sh configureProxy <ProxyHost> <ProxyPort> <ProxyUser> <ProxyPassword>

Install Secure Agent as a Daemon

Read Systemd Documentation https://www.freedesktop.org/software/systemd/man/systemd.service.html

Setup as a Service using systemd

Create infaagent.service file in /etc/systemd/system

[Unit]
Description=Informatica Secure Agent Service

[Service]
# user which will run agent
User=<user>
# following must be an absolute path typically <agent_home> will be /home/user/infagent
ExecStart=<agent_home>/apps/agentcore/infaagent startup
ExecReload=<agent_home>/apps/agentcore/infaagent shutdown
ExecReload=<agent_home>/apps/agentcore/infaagent startup
ExecStop=<agent_home>/apps/agentcore/infaagent shutdown
Type=forking
TimeoutStopSec=240
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Example infaagent.service

[Unit]
Description=Informatica Secure Agent Service

[Service]
User=iclab
WorkingDirectory=/home/iclab/infaagent/apps/agentcore
ExecStart=/home/iclab/infaagent/apps/agentcore/infaagent startup
ExecReload=/home/iclab/infaagent/apps/agentcore/infaagent shutdown
ExecReload=/home/iclab/infaagent/apps/agentcore/infaagent startup
ExecStop=/home/iclab/infaagent/apps/agentcore/infaagent shutdown
TimeoutStopSec=240
Type=forking
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Reload the systemd

sudo systemctl daemon-reload

Enable Service this command will enable service and create symlink to a specific startup group

sudo systemctl enable infaagent.service

Start and Stop service

You can use the following commands to start/stop your new service:

sudo systemctl start infaagent
sudo systemctl stop infaagent
sudo systemctl restart infaagent
sudo systemctl status infaagent

Example service status after start Note that you can see all other child processes started by Agent core

[iclab@iclab] [Sep 07, 2017 17:58:34]   /home/iclab/infaagent/apps/agentcore
$ sudo systemctl status infaagent
* infaagent.service - Informatica Secure Agent Service
   Loaded: loaded (/etc/systemd/system/infaagent.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-09-18 12:37:04 EDT; 2min 9s ago
  Process: 62748 ExecStop=/home/iclab/infaagent/apps/agentcore/infaagent shutdown (code=exited, status=0/SUCCESS)
  Process: 63037 ExecStart=/home/iclab/infaagent/apps/agentcore/infaagent startup (code=exited, status=0/SUCCESS)
 Main PID: 63047 (sh)
    Tasks: 174
   Memory: 1.4G
      CPU: 1min 54.183s
   CGroup: /system.slice/infaagent.service
           ├─63047 sh ./agent_start.sh
           ├─63056 /bin/sh ./runAgentCore.sh
           ├─63064 /home/iclab/infaagent/apps/agentcore/../../jre/bin/java -Djava.util.logging.SimpleFormatter.format=%1$tF %1$tT.%1$tL %1$tZ %4$s [%2$s] %5$s%6$s%n -Dlog4j.configuration=file:/home/iclab/infaa
           ├─63108 /bin/sh ./start.sh
           ├─63110 /home/iclab/infaagent/jre/bin/java -Xrs -Xms8m -Xmx16m -ea -esa -classpath /home/iclab/infaagent/apps/Administrator/1.0.1/agent-administrator-app.jar:/home/iclab/infaagent/apps/Administrator
           ├─63179 /home/iclab/infaagent/apps/process-engine/data/db/postgresql-linux-x64-binaries/pgsql/bin/postgres -D /home/iclab/infaagent/apps/process-engine/data/PostGreSql/Data
           ├─63185 postgres: logger process
           ├─63187 postgres: checkpointer process
           ├─63188 postgres: writer process
           ├─63189 postgres: wal writer process
           ├─63190 postgres: autovacuum launcher process
           ├─63191 postgres: stats collector process
           ├─63418 /home/iclab/infaagent/jre/bin/java -Djava.util.logging.config.file=/home/iclab/infaagent/apps/process-engine/1091.4/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassL
           ├─63449 /bin/sh /home/iclab/infaagent/apps/Data_Integration_Server/27.0.5/ICS/main/tomcat/saas-infaagentapp.sh
           ├─63454 /home/iclab/infaagent/jre/bin/java -ea -esa -Ddtm.path=../bin/rdtm -Dsun.reflect.inflationThreshold=0 -cp :.:./saas-apploader.jar:lib/tomcat-embed-core.jar:lib/tomcat-embed-jasper.jar:lib/to
           ├─63485 postgres: bpeluser activevos 127.0.0.1(48762) idle
           ├─63554 postgres: bpeluser activevos 127.0.0.1(48764) idle
           ├─63555 postgres: bpeluser activevos 127.0.0.1(48766) idle
           ├─63613 /bin/sh /home/iclab/infaagent/apps/Data_Integration_Server/27.0.5/.lcm/status-wrapper.sh
           ├─63615 /bin/sh ./ics_status.sh
           └─63618 /home/iclab/infaagent/jre/bin/java -Xrs -Xms8m -Xmx256m -classpath ./lib/*: -Dlog4j.configuration=file:lib/log4j.properties com.informatica.saas.di.app.script.StatusScript

Sep 18 12:37:04 iclab systemd[1]: Stopped Informatica Secure Agent Service.
Sep 18 12:37:04 iclab systemd[1]: Starting Informatica Secure Agent Service...
Sep 18 12:37:04 iclab systemd[1]: Started Informatica Secure Agent Service.

Install Agent as a Service Using init.d

See a documentation

Following method should work universally on any distribution

  • Crete file or copy examples/agent.initd.sh to /etc/init.d as infaagent
  • Make sure that you edit the WORK_DIR variable in the file to point to actual full path to agentcore component
  • Make that you update the DAEMON_USER variable to refer to a user who owns and runs the secure agent (note that the secure agent can't run as root)

This method will work even on systems with systemd as primary service init scheduler,

You will have to enable this service by running sudo systemctl enable infaagent

In such case you can also manage and check status of the service using systemctl command

➜ [iclab@iclab] [Feb 27, 2018 12:33:00]   ~
$ sudo systemctl status infaagent
● infaagent.service - LSB: Start InfaAgent.
   Loaded: loaded (/etc/init.d/infaagent; bad; vendor preset: enabled)
   Active: active (exited) since Tue 2018-02-27 12:09:01 EST; 24min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1913 ExecStart=/etc/init.d/infaagent start (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
      CPU: 0

Feb 27 12:08:59 iclab systemd[1]: Starting LSB: Start InfaAgent....
Feb 27 12:08:59 iclab infaagent[1913]: Agent Script:   /home/iclab/infaagent/apps/agentcore/infaagent
Feb 27 12:08:59 iclab infaagent[1913]: Agent PID File: /home/iclab/infaagent/apps/agentcore/infaagentprocessid
Feb 27 12:08:59 iclab infaagent[1913]: Agent Core Log: /home/iclab/infaagent/apps/agentcore/agentcore.log
Feb 27 12:09:00 iclab su[1953]: Successful su for iclab by root
Feb 27 12:09:00 iclab su[1953]: + ??? root:iclab
Feb 27 12:09:00 iclab su[1953]: pam_unix(su:session): session opened for user iclab by (uid=0)
Feb 27 12:09:01 iclab infaagent[1913]: Started [1956]
Feb 27 12:09:01 iclab systemd[1]: Started LSB: Start InfaAgent..

#!/bin/bash

### BEGIN INIT INFO
# Provides:          infaagent
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start InfaAgent.
# Description:       Start the Informatica Secure Agent.
### END INIT INFO

# Specify Directory where is the Agent Installed
WORK_DIR=/home/iclab/infaagent/apps/agentcore
# Specify user under which the agent will run
# this should be a user that owns the dir where the agent is installed
# Secure Agent ca't be run as root
DAEMON_USER='iclab'

# ***********************************************
## DO NOT MODIFY lines below
# ***********************************************

START_SCRIPT=$WORK_DIR/infaagent
PID_FILE=$WORK_DIR/infaagentprocessid

START_ARGS='startup' # start script arguments
STOP_ARGS='shutdown' # stop script arguments
DAEMON=$START_SCRIPT

# colors
red='\e[0;31m'
green='\e[0;32m'
yellow='\e[0;33m'
reset='\e[0m'

echoRed() { echo -e "${red}$1${reset}"; }
echoGreen() { echo -e "${green}$1${reset}"; }
echoYellow() { echo -e "${yellow}$1${reset}"; }

echo "Agent Script:   $DAEMON"
echo "Agent PID File: $PID_FILE"
echo "Agent Core Log: $WORK_DIR/agentcore.log"


start() {
  command="cd $WORK_DIR && $DAEMON $START_ARGS"
  su "$DAEMON_USER" -c "$command"
  if [ -f "$PID_FILE" ]; then
    PID=$(cat $PID_FILE)
  fi
}

stop() {
  command="cd $WORK_DIR && ./infaagent $STOP_ARGS"
  su "$DAEMON_USER" -c "$command"
  echo 'Stopped'
}


case "$1" in
start)
    if [ -f "$PID_FILE" ]; then
        PID=$(cat $PID_FILE)
        if [ -z "$(pgrep -F $PID_FILE)" ]; then
            start
        else
            echoYellow "Already running [$PID]"
            exit 0
        fi
    else
        start
    fi

    if [ -z "$PID" ]; then
        echoRed "Failed starting agent"
        exit 3
    else
        echoGreen "Started [$PID]"
        exit 0
    fi
;;

status)
    if [ -f "$PID_FILE" ]; then
        PID=$(cat $PID_FILE)
        if [ -z "$(pgrep -F $PID_FILE)" ]; then
            echoRed "Not running (process dead but pidfile exists)"
            exit 1
        else
            echoGreen "Running [$PID]"
            exit 0
        fi
    else
        echoRed "Not running"
        exit 3
    fi
;;

stop)
    if [ -f "$PID_FILE" ]; then
        PID=$(cat $PID_FILE)
        if [ -z "$(pgrep -F $PID_FILE)" ]; then
            echoRed "Not running (process dead but pidfile exists)"
            exit 1
        else
            stop
            exit 0
        fi
    else
        echoRed "Not running (pid not found)"
        exit 3
    fi
;;

restart)
    $0 stop
    $0 start
;;

*)
    echo "Usage: $0 {status|start|stop|restart}"
    exit 1
esac

Start and Stop service

## start agent
sudo /etc/init.d/infaagent start

## stop agent
sudo /etc/init.d/infaagent stop

## get status
sudo /etc/init.d/infaagent status

## restart agent
sudo /etc/init.d/infaagent restart

Example Output

[iclab@iclab] [Feb 27, 2018 11:37:55]   ~
$ sudo /etc/init.d/infaagent stop
Agent Script:   /home/iclab/infaagent/apps/agentcore/infaagent
Agent PID File: /home/iclab/infaagent/apps/agentcore/infaagentprocessid
Agent Core Log: /home/iclab/infaagent/apps/agentcore/agentcore.log
Stopped

[iclab@iclab] [Feb 27, 2018 11:40:08]   ~
$ sudo /etc/init.d/infaagent start
Agent Script:   /home/iclab/infaagent/apps/agentcore/infaagent
Agent PID File: /home/iclab/infaagent/apps/agentcore/infaagentprocessid
Agent Core Log: /home/iclab/infaagent/apps/agentcore/agentcore.log
Started [9792]

[iclab@iclab] [Feb 27, 2018 11:45:05]   ~
$ sudo /etc/init.d/infaagent status
Agent Script:   /home/iclab/infaagent/apps/agentcore/infaagent
Agent PID File: /home/iclab/infaagent/apps/agentcore/infaagentprocessid
Agent Core Log: /home/iclab/infaagent/apps/agentcore/agentcore.log
Running [9792]