Skip to content
Snippets Groups Projects
README.md 7.47 KiB
Newer Older
Eric Schoville's avatar
Eric Schoville committed
# IICS Secure Agent Docker Image
Jaroslav Brazda's avatar
Jaroslav Brazda committed
## Description
Eric Schoville's avatar
Eric Schoville committed
This project was forked from [jbrazda/ic-sagent-docker|https://github.com/jbrazda/ic-sagent-docker] with the intention of containerizing the IICS Secure Agent to run in Amazon Web Services.  As of early January 2019, there is no official Docker image for IICS Secure Agent.
Eric Schoville's avatar
Eric Schoville committed
## Requirements
Eric Schoville's avatar
Eric Schoville committed
* An IICS user account and password for your organization that has appropriate rights to create and manage secure agents.  This user will be used to login to the Informatica APIs to register the agent.
* Your Informatica POD and REGION, which can be inferred from https://${POD}.${REGION}.informaticacloud.com/.  Defaults are set to POD=usw3 and REGION=dm-us, but can be overriden with Docker environment variables.
Eric Schoville's avatar
Eric Schoville committed
The image is based on Ubuntu 18.04.  It downloads and installs necessary dependencies, and then downloads the installer file from the correct Informatica URL based on your POD and REGION.
1. Clone this repository.
2. `docker build . -t iics_secure_agent:<tag>` - optionally pass --build-arg parameters for POD and REGION if the defaults are not correct.  POD and REGION are also set as environment variables, because containers will use these values for communicating with the Informatica API.
Eric Schoville's avatar
Eric Schoville committed
## Containers
The container executes a bash script called run_agent.sh upon start.  It needs INFORMATICA_USER and INFORMATICA_PASSWORD environment variables set during runtime in order to communicate with the Informatica API to check and register the Secure Agent.
Eric Schoville's avatar
Eric Schoville committed
* INFORMATICA_USER (required) - User that can run the agent and access Informatica APIs
* INFORMATICA_PASSWORD (required) - Password for above credential.  Used for API access only.
* JSON_LOG (optional) - If this is set, then the log output will be in JSON format.

### Externalized Configurations
Secure Agent's configurations can be externalized using Docker [volumes](https://docs.docker.com/storage/volumes/). Following 
Secure Agent's directories and files can be externalized for containers. Note that after initial 
container startup, these configurations can be used to start subsequent containers.  

* `agentcore.log` - Secure Agent default runtime log file. 
* `infaagent.log` - Secure Agent start up log file.
* `logs` - contains Secure Agent runtime log files and lock files.
* `data` - contains the configuration data for mapping and integration components.
* `conf` - contains Secure Agent runtime configuration files.
   1. `infaagent.ini` - contains the registration information for the secure agent(this will be populated by Secure Agent during start up).
   2. `proxy.ini` - proxy configurations for Secure Agent, if running behind a [proxy](https://docs.informatica.com/integration-cloud/cloud-platform/current-version/administrator/runtime-environments/secure-agents/configuring-a-proxy-to-exclude-non-proxy-hosts.html) server.  
Following ports(among others) in Secure Agents can be mapped to host for externalized control. 
* `7080` - Process Engine shutdown port.
* `7443` - Process Engine https port.
* `5432` - Process Engine Postgres DB port.

See below section for examples on how to use volume and port mapping.
Eric Schoville's avatar
Eric Schoville committed
### Starting
* Setting the hostname will provide the associated name in the IICS website. 
* Note: since anybody who has access to see the processes can view the values `INFORMATICA_USER` and `INFORMATICA_PASSWORD`, it's 
recommenced to configure them in a Docker [.env](https://docs.docker.com/compose/env-file/) file.
```shell
$ touch agentcore.log infaagent.log 
$ docker run -d \
    -h <hostname> \
    --env INFORMATICA_USER=xxxxx \
    --env INFORMATICA_PASSWORD=xxxx \
    -v $(pwd)/infaagent.log:/home/agent/infaagent/apps/agentcore/infaagent.log  \
    -v $(pwd)/agentcore.log:/home/agent/infaagent/apps/agentcore/agentcore.log  \
    -v $(pwd)/logs:/home/agent/infaagent/apps/agentcore/logs  \
    -v $(pwd)/data:/home/agent/infaagent/apps/agentcore/data \
    -p 7080:7080 \
    -p 7443:7443 \
    -p 5432:5432 \ 
    --name <container_name> iics_secure_agent:<tag>
```

* Note that if `conf` directory needs mounting, a minimum configuration for starting the Secure Agent is required, see [conf](./conf) for example.
```shell
$ touch agentcore.log infaagent.log 
$ docker run -d \
    -h <hostname> \
    --env INFORMATICA_USER=xxxxx \
    --env INFORMATICA_PASSWORD=xxxx \
    -v $(pwd)/infaagent.log:/home/agent/infaagent/apps/agentcore/infaagent.log  \
    -v $(pwd)/agentcore.log:/home/agent/infaagent/apps/agentcore/agentcore.log  \
    -v $(pwd)/logs:/home/agent/infaagent/apps/agentcore/logs  \
    -v $(pwd)/data:/home/agent/infaagent/apps/agentcore/data \
    -v $(pwd)/conf:/home/agent/infaagent/apps/agentcore/conf \
    -p 7080:7080 \
    -p 7443:7443 \
    -p 5432:5432 \ 
    --name <container_name> iics_secure_agent:<tag>
```  
Eric Schoville's avatar
Eric Schoville committed
### Monitoring
If volume mapping is not used use `docke exec` to attach to the running container.
Jaroslav Brazda's avatar
Jaroslav Brazda committed

```shell
docker exec -it <container_name> less agentCore.log
Jaroslav Brazda's avatar
Jaroslav Brazda committed

## Hardware Requirements
Minimum Hardware Specs ([reference](https://network.informatica.com/servlet/JiveServlet/download/189174-25674/Informatica%20Cloud%20Secure%20Agent%20Minimum%20Requirements.pdf)):
Eric Schoville's avatar
Eric Schoville committed
* Windows version 7 (32-bit or 64-bit) or Windows XP Pro SP2/SP3 (32-bit).
Eric Schoville's avatar
Eric Schoville committed
* Red Hat Enterprise Linux version 5.3 or above.
* SUSE Linux Enterprise version 10 and above.
* 2-4 CPU recommended.
* 2 GB RAM recommended dedicated for the Agent (Recent customers have used 8GB).
* 1 GB Hard disk space.
* 1 GB Network connectivity (faster the better as this will most likely the bottleneck).
Eric Schoville's avatar
Eric Schoville committed

## Known Issues
* Doesn't seem to be able to run in host network mode because it won't be able to talk to internal ports.  It would probably work if you expose those ports.
## Enterprise Integration Secure Agent
Secure Agent containers are deployed in following tiers in interop/AWS account. This deployment is automated through Terraform (see below section on Terraform).

| environment| tier        |
| -----------|-------------|
| test      | us-east-1(N. Virginia)|
| prod      | us-east-2(Ohio)|


* Infrastructure is available as code in terraform. 
* Before disposing and create a new instance of Informatica Secure Agent, existing live connections to various targets(for e.g. databases) 
should be reviewed and terminated. Due to this reason this is not part of CI/CD pipeline and can be executed as per necessity.
* Various configurations can be overridden using  `-var=`, see [variables.tf](./terraform/variables.tf) for available parameters.
See Terraform doc on [variables](https://www.terraform.io/docs/configuration/variables.html) to see how to pass command line arguments.
* Secure Agent Docker images are tagged using the value, `git-${CI_COMMIT_SHA:0:8}`, and push to ECR registry in `us-east-1`. The same 
image can be used for production set up.

### Credentials in Terraform
* It's recommended that to avoid having Informatica credentials in bash history, all the variables can be defined in a `*.tfvars` 
file and pass to terraform using `-var-file` argument to terraform.  

```shell script
$ terraform plan -out agent.tfplan \ 
    -var="aws_shared_cred_file=<aws-credentials-file>" \
    -var="aws_profile=<aws-profile>" \
    -var="informatica_username=<informatica-username>" \
    -var="informatica_password=<informatica-password>" \
    -var="image_name=265723766240.dkr.ecr.us-east-1.amazonaws.com/enterprise-integrations/iics_secure_agent:<tag>"