Itential Automation Gateway

On this page:

Installation

This guide provides step-by-step information to install and configure Itential Automation Gateway.

Note: Itential Automation Gateway (IAG) is compatible with several third-party software products for network operating environments. Beginning with the system requirements for 2019.1.2, all third-party software version compatibility is documented in Release Notes. To get the most up-to-date requirements for any third-party software, including open source, first identify which IAG release you’re using and then refer to the respective release notes.

Install Software

Itential Automation Gateway resides on the same server as your Ansible implementation. If you have multiple Ansible implementations, you must install Automation Gateway for each Ansible implementation. Optionally, Itential adapters will connect into each Automation Gateway installation to manage all of your Ansible networks from a single point within the Itential Automation Platform (IAP).

Requirements

  • Red Hat 7
  • CentOS 7
  • Python 3.6
  • pip <= 20.2.4
  • Ansible 2.8 - 2.10
  • pipenv (packaging tool for Python)
  • YAML parsing (installed)

Virtual Machine

For purposes of this guide, Itential Automation Gateway was installed on top of a virtual machine.

  • CentOS 7.4

Repositories

The following repositories were used.

  • epel-release
  • ius-release
  • Itential pip registry

Note: The index to the Itential pip registry is located at https://registry.aws.itential.com/repository/automation-gateway/simple. To obtain credentials for the Itential pip registry, contact the Itential Service Desk.

OS Prerequisites

The use of python3 and pip3 requires installation of build tools available from the base OS repository. Install the following packages on your server.

sudo yum install -y epel-release
yum install -y \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y gcc-c++ make yaml-cpp yaml-cpp-devel libyaml libyaml-devel libselinux-python
sudo yum update -y
sudo yum install -y python3-pip
sudo yum install -y python3-devel
pip3 install --upgrade pip==20.2.4
pip3 install psutil

Install Ansible

Install Ansible using pip3. See Requirements for specific version information.

pip3 install ansible~=2.9.0

Install HA-Proxy

Itential Automation Gateway uses haproxy to support HTTPS security requirements.

sudo yum install -y haproxy

Verify Install of Prerequisites

Run the following commands to verify the above prerequisites were installed correctly.

pip

$ pip3 show pip
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Name: pip
Version: 20.2.4
Summary: The PyPA recommended tool for installing Python packages.
Home-page: https://pip.pypa.io/
Author: The pip developers
Author-email: distutils-sig@python.org
License: MIT
Location: /usr/local/lib/python3.6/site-packages
Requires:
Required-by:


python

$ yum info python3-devel
ke binary distributions for Python libraries.
            :
            : It also contains the necessary macros to build RPM packages with Python modules
            : and 2to3 tool, an automatic source converter from Python 2.X.

Available Packages
Name        : python3-devel
Arch        : i686
Version     : 3.6.8
Release     : 18.el7Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.mirror.constant.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirror.math.princeton.edu
 * updates: mirror.es.its.nyu.edu
Installed Packages
Name        : python3-devel
Arch        : x86_64
Version     : 3.6.8
Release     : 18.el7
Size        : 622 k
Repo        : installed
From repo   : updates
Summary     : Libraries and header files needed for Python development
URL         : https://www.python.org/
License     : Python
Description : This package contains the header files and configuration needed to compile
            : Python extension modules (typically written in C or C++), to embed Python
            : into other programs, and to make binary distributions for Python libraries.
            :
            : It also contains the necessary macros to build RPM packages with Python modules
            : and 2to3 tool, an automatic source converter from Python 2.X.

Available Packages
Name        : python3-devel
Arch        : i686
Version     : 3.6.8
Release     : 18.el7
Size        : 217 k
Repo        : updates/7/x86_64
Summary     : Libraries and header files needed for Python development
URL         : https://www.python.org/
License     : Python
Description : This package contains the header files and configuration needed to compile
            : Python extension modules (typically written in C or C++), to embed Python
            : into other programs, and to make binary distributions for Python libraries.
            :
            : It also contains the necessary macros to build RPM packages with Python modules
            : and 2to3 tool, an automatic source converter from Python 2.X.


ansible

$ ansible --version
ansible 2.9.15
  config file = None
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]


psutil

$ pip3 show psutil
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
Name: psutil
Version: 5.7.3
Summary: Cross-platform lib for process and system monitoring in Python.
Home-page: https://github.com/giampaolo/psutil
Author: Giampaolo Rodola
Author-email: g.rodola@gmail.com
License: BSD
Location: /usr/local/lib64/python3.6/site-packages
Requires:
Required-by:


Install Automation Gateway Using PIP

Install the Itential Automation Gateway component from the Itential pip registry. The latest version must be specified.

Note: Starting with 2019.1, the version will only increment the very last digit of the version below. Please modify the command below to match the appropriate released version that you are attempting to install.

You can use a pip configuration file:

[global]
extra-index-url="https://<USERNAME>:<PASSWORD>@registry.aws.itential.com/repository/automation-gateway-release/simple"

Alternatively, you can supply the credentials on the command line (less secure):

sudo pip3 install automation-gateway --extra-index-url https://<USERNAME>:<PASSWORD>@registry.aws.itential.com/repository/automation-gateway-release/simple

Install Automation Gateway:

sudo pip3 install automation-gateway==3.61.0-2020.2.4

Downgrade SQLAlchemy

For Automation Gateway versions 3.61.0-2020.2.0 through 3.61.0-2020.2.10, SQLAlchemy requires a downgrade in order for Automation Gateway to successfully start.

sudo pip3 install sqlalchemy<1.4

Where Automation Gateway Gets Installed

As a Python application, Automation Gateway is installed within /usr/local/lib/python3.6/site-packages/automation_gateway.

  • Files within this directory structure should not be modified or manipulated without first moving your required roles to the default location for Ansible roles.
  • Any updates made to Automation Gateway will overwrite the files within this directory.
$ ll /usr/local/lib/python3.6/site-packages/automation_gateway
total 164
-rw-r--r--. 1 root root  1624 Jan  8 14:59 ansible_info.pyc
drwxr-xr-x. 3 root root  4096 Jan  8 14:59 api
drwxr-xr-x. 3 root root  4096 Jan  8 14:59 api_utils
drwxr-xr-x. 3 root root  4096 Jan  8 14:59 api_v2
-rw-r--r--. 1 root root   379 Jan  8 14:59 argument_helper.pyc
-rw-r--r--. 1 root root  2129 Jan  8 14:59 authentication.pyc
-rw-r--r--. 1 root root  3222 Jan  8 14:59 automation_gateway.pyc
-rw-r--r--. 1 root root  3149 Jan  8 14:59 cli.pyc
-rw-r--r--. 1 root root  3272 Jan  8 14:59 config.pyc
drwxr-xr-x. 3 root root   271 Jan  8 14:59 data
-rw-r--r--. 1 root root  3189 Jan  8 14:59 device.pyc
-rw-r--r--. 1 root root  1937 Jan  8 14:59 Errors.pyc
-rw-r--r--. 1 root root  2745 Jan  8 14:59 groups.pyc
drwxr-xr-x. 3 root root    87 Jan  8 14:59 iap_data
-rw-r--r--. 1 root root    28 Jan  8 14:59 __init__.py
-rw-r--r--. 1 root root   142 Jan  8 14:59 __init__.pyc
drwxr-xr-x. 3 root root    19 Jan  8 14:59 integrations
drwxr-xr-x. 3 root root    85 Jan  8 14:59 license
drwxr-xr-x. 4 root root    37 Jan  8 14:59 metadata
-rw-r--r--. 1 root root   766 Jan  8 14:59 metadata_loader.pyc
-rw-r--r--. 1 root root  1229 Jan  8 14:59 metrics.pyc
-rw-r--r--. 1 root root  7982 Jan  8 14:59 modules.pyc
-rw-r--r--. 1 root root   518 Jan  8 14:59 password_helper.pyc
-rw-r--r--. 1 root root  4764 Jan  8 14:59 playbooks.pyc
-rw-r--r--. 1 root root  3899 Jan  8 14:59 properties.yml
drwxr-xr-x. 2 root root    63 Jan  8 14:59 __pycache__
-rw-r--r--. 1 root root  1142 Jan  8 14:59 role_helpers.pyc
-rw-r--r--. 1 root root  5490 Jan  8 14:59 roles.pyc
-rw-r--r--. 1 root root 12254 Jan  8 14:59 runner.pyc
drwxr-xr-x. 2 root root   143 Jan  8 14:59 schema
-rw-r--r--. 1 root root  5109 Jan  8 14:59 schema.pyc
-rw-r--r--. 1 root root  3692 Jan  8 14:59 script_command_line_builder.pyc
-rw-r--r--. 1 root root  7066 Jan  8 14:59 scripts.pyc
-rw-r--r--. 1 root root  2391 Jan  8 14:59 sessions.pyc
drwxr-xr-x. 2 root root    81 Jan  8 14:59 swagger
-rw-r--r--. 1 root root  1153 Jan  8 14:59 terraform_info.pyc
-rw-r--r--. 1 root root  3002 Jan  8 14:59 terraform_runner.pyc
-rw-r--r--. 1 root root  4321 Jan  8 14:59 terraforms.pyc
-rw-r--r--. 1 root root   422 Jan  8 14:59 token_builder.pyc
drwxr-xr-x. 3 root root   170 Jan  8 14:59 ui
-rw-r--r--. 1 root root  2211 Jan  8 14:59 user_schema.pyc
-rw-r--r--. 1 root root  3894 Jan  8 14:59 web_app.pyc