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