| # Apigee OPDK Ansible Configuration Accelerator |
| The purpose of this project is to help configure Ansible for the use of |
| [Apigee OPDK roles](https://github.com/carlosfrias/apigee-opdk-playbook-samples). |
| |
| These roles and playbooks contain a fairly complete set of functionality to assist in the |
| management of Apigee planet instances using Ansible. The functionality for the installation, |
| expansion, upgrade and maintenance of an Apigee Planet is provided so as to apply Apigee |
| system recommendations to systems that are not aligned with Apigee system recommendations. |
| Further information regarding the features list of these playbooks can be found in (README-FEATURES.md). |
| For the installation of Apigee planet instances for systems that are aligned with Apigee |
| recommendations you may benefit from using our [simplified installer](https://github.com/apigee/ansible). |
| |
| Conventions have been used regarding the placement of files and the names of inventory groups. The placement of files |
| is described below as are the names of inventory groups. The playbooks rely on these conventions. These conventions |
| have reduced the installation of the Edge platform to updating attributes in property files and the judicious use of tags |
| around the points of installation failure. The playbooks make use of tags so that functionality can be targeted as needed. |
| Finally, take note that templates are provided to guide how you should update your inventory and to generate the required |
| response files from the updated inventory. |
| |
| # Quick Installation |
| Please note that this installation framework uses Ansible. Please install Ansible 4.x prior to cloning |
| this project. Once Ansible is ready for use you can follow these steps: |
| 1. Clone this project into a workspace. We recommend ~/apigee-workspace. |
| 1. Change into the cloned directory. |
| 1. Review [repository-mapping-name-folder.yml](repository-mapping-name-folder.yml) to select the |
| projects, roles and configurations you wish to work with. |
| 1. Update [repository-custom-properties.yml](repository-custom-properties.yml) with the locations |
| where you want resources and configuration files located. Defaults are provided. |
| 1. Execute `ansible-playbook setup.yml` to create a local development environment. |
| 1. After taking note of what the [Quick Installation](#what-does-the-quick-installation-do) did and completing |
| [Required Steps](#required-steps) you will likely start with |
| [Apigee OPDK Playbook Installations](https://github.com/carlosfrias/apigee-opdk-playbook-installation-single-region) |
| |
| # What does the Quick Installation do? |
| The quick installation will create several folders where configurations and playbooks will be located. |
| The folders and initial files are listed as follows: |
| |
| * `~/.ansible/configurations/{configuration file name.cfg}`: This contains ansible configuration files. |
| * `~/.ansible/inventory/{environment inventory}/`: This contains several templates to guide how you should |
| configure the inventory. |
| * `~/.apigee/`: This folder contains files used to install Apigee components. |
| * `~/.apigee/license.txt`: This is the license file you received from Apigee. |
| * `~/.apigee/custom-properties.yml`: The installation framework is parameterized. Variables can be |
| either uncommented and used or added to this file. |
| * `~/.apigee-secure`: This folder contains file that contain sensitive attributes that should be secured. |
| * `~/.apigee-secure`: This file contains the credentials to be used during the installation of Apigee components. |
| |
| # Required Steps |
| 1. It is necessary to update your credentials.yml and to copy your license file into `~/.apigee-secure/license.txt`. |
| 1. Update the ansible.cfg file with your `remote_user` |
| 1. Confirm the ssh key you are using. |
| 1. Confirm that the ansible.cfg is pointing to the correct inventory folder. |
| 1. Export the `ANSIBLE_CONFIG` environmental variable pointing to the `ansible.cfg` you are using. Please do this |
| like this: `export ANSIBLE_CONFIG=~/.ansible/configurations/{configuration file name.cfg}` |
| 1. Update the appropriate files in the inventory folder for either Edge, DevPortal, Baas or Monitoring as needed Observe |
| groupings and add your ip addresses at the lowest level which would be the dc-1-xx, dc-2-xx, etc. |
| 1. Confirm connectivity using the the `ping` module. |
| 1. Change to the folder which is likely to be `~/apigee-workspace/apigee-opdk-playbook-workspace/apigee-opdk-playbook-installation-single-region` |
| and download the Ansible roles using Ansible Galaxy to the location you indicated in the `ansible.cfg` file you are using. Take note that files that end in `-requirements.yml` are Ansible Galaxy requirement files. Update the roles |
| following this sample: `ansible-galaxy install -r install-edge-requirements.yml` |
| The playbook that the `-requirements.yml` file supports is the playbook with the same name as the first part of the requirements file. |
| This means that `install-edge-requirements.yml` updates the roles for the playbook `install-edge.yml` |
| 1. The first invocation should be: `ansible-playbook install-edge.yml -b --tags={cache,ds,ms,rmp,qs,org} {Any optional parameters}` |
| |
| # Installing Ansible on Windows |
| Please see the provided [Cygwin readme](README-CYGWIN.md) for instructions on installing Ansible on Windows. |
| |
| # Installing Ansible |
| We use provide a [pip requirements file](ansible-pip-requirements.txt) for pip to install Ansible and its dependencies. This requires the |
| installation of pip on your system. Once pip is installed then the provided requirements file will |
| install Ansible and the necessary dependencies on your system. |
| |
| # Pip Configuration |
| It may be necessary to configure pip to work with a repository that is internally managed. This can be accomplished by |
| updating the pip.conf file with the url of your managed repository. To accomplish this please follow these steps: |
| |
| mkdir ~/.pip |
| touch ~/.pip/pip.conf |
| vi ~/.pip/pip.conf |
| |
| [global] |
| index-url = {{ pip_index_url }} |
| |
| ## Managed Pip Url |
| Please note that the url can be found in the your ~/apigee-workspace/apigee/custom-properties.yml. Please replace as follows: |
| |
| {{ pip_index_url }} >> "https://private.repository.com/api/pypi/Pypi-remote/simple" |
| |
| # Pip Usage |
| |
| * Upgrade your pip installation: `pip install -U pip` |
| * Install ansible and dependencies using the requirements file: `pip install -r ansible-pip-requirements.txt` |
| |
| # Usage: Minimum Setup |
| Set up your a workspace at ~/apigee-workspace/ if you already have git and pip installed: |
| |
| ansible-playbook setup-base.yml |
| |
| # Requirements |
| Requirements are declared in the [pip requirements file](ansible-pip-requirements.txt). The requirements |
| are listed as follows: |
| * Ansible 2.3.x |
| * Pip |
| * Boto, if using Ansible to manage EC2 |
| * Markupsafe |
| * Paramiko |
| |
| # Overview: Minimum Setup |
| This playbook will perform the following activities: |
| |
| 1. Scaffold required folders |
| 1. Git clone of Ansible configuration file templates |
| 1. Git clone of inventory file templates. |
| 1. Create credentials.yml template file |
| |
| # Inventory File Semantics |
| A description of the how the [Inventory File](README-INVENTORY-FILE.md) should be setup. |
| |
| # Scaffold required folders |
| This playbook will create the correct folders for you. Folder location can be modified by updating the [workspace-folders.yml](workspace-folders.yml). |
| |
| ## ~/.ansible/configurations |
| Sample configuration templates for single and multi-dc planets |
| |
| ## ~/.ansible/inventory |
| Sample configuration inventory template files that model the required |
| group semantics used. |
| |
| ## ~/.apigee |
| Folder to contain credentials, downloaded logs, configs and maintain the edge license.txt file. |
| The [setup-apigee-license.yml](setup-apigee-license.yml) playbook will take a specified license file and |
| install it in the correct location for your this workspace. |
| |
| ## ~/apigee-workspace/apigee-opdk-playbook-workspace |
| Starter templates for playbooks. Use these playbooks as accelerators for your own. |
| |
| ## ~/apigee-workspace/apigee-opdk-role-workspace |
| Workspace containing the roles used by the playbooks. |
| |
| # Configure Credentials |
| Configuring of installation credentials is described in the [credentials readme](README-credentials.md). |
| |
| # Configure Ansible |
| Ansible can be configured to make use of the above folders by providing an Ansible configuration file. |
| The Ansible configuration file can be generated in using the `setup-ansible-config.yml` playbook. |
| |
| ansible-playbook setup-ansible-config.yml |
| <!-- BEGIN Google Required Disclaimer --> |
| |
| # Not Google Product Clause |
| |
| This is not an officially supported Google product. |
| <!-- END Google Required Disclaimer --> |
| <!-- BEGIN Google How To Contribute --> |
| # How to Contribute |
| |
| We'd love to accept your patches and contributions to this project. Please review our [guidelines](CONTRIBUTION.md). |
| <!-- END Google How To Contribute --> |