Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

updated ReadMe #1

Open
wants to merge 190 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
190 commits
Select commit Hold shift + click to select a range
7231c61
fixed markdown issue
c-snell Oct 11, 2018
f5e7254
Merge pull request #361 from budhac/patch-3
wdurairaj Oct 12, 2018
b244b4a
fixed StorageClass examples
c-snell Nov 14, 2018
0f4b0bc
Added installation enhancements to thw master branch
farhan7500 Nov 15, 2018
59eca71
Create encrypt_properties.yml
farhan7500 Nov 15, 2018
5f17d42
Create encrypt_properties.md
farhan7500 Nov 15, 2018
ca42297
Delete encrypt_properties.yml
farhan7500 Nov 15, 2018
4a277b3
Update README.md
farhan7500 Nov 15, 2018
5ae4454
Fixed the broken link for properties sample file
farhan7500 Nov 19, 2018
f72ed10
Specifying the inventory file for correct reference
farhan7500 Nov 19, 2018
7cd9677
Corrected the comment for sleep timer
farhan7500 Nov 20, 2018
15c06e1
Added Replication documentation
imran-ansari Nov 20, 2018
f7afa37
Added replicationGroup to storage class parameters
imran-ansari Nov 20, 2018
a809618
Link fixed
imran-ansari Nov 20, 2018
c8a9d0c
Updated flexvolumedriver
wdurairaj Nov 20, 2018
2f047f2
Linked other feature docs to usage page
imran-ansari Nov 20, 2018
37938e7
Links text modified
imran-ansari Nov 20, 2018
42e3eb0
Added back link to usage
imran-ansari Nov 20, 2018
a2604ac
Added titles to the documents
imran-ansari Nov 20, 2018
67b978a
Merge pull request #421 from farhan7500/ansible-installation
prablr79 Nov 21, 2018
7889df6
Added usage commands for 3.0 features
imran-ansari Nov 21, 2018
2cbf202
Corrected spelling mistakes
imran-ansari Nov 21, 2018
f11eb6d
Update plugin_configuration_properties_sample.yml
prablr79 Nov 22, 2018
eebbbc8
Added help related option
imran-ansari Nov 23, 2018
ec6263b
Addressed review comments
imran-ansari Nov 26, 2018
1342262
Created back links to specific usage sections in usage.md
imran-ansari Nov 26, 2018
eb0f7a5
Addressed more review comments
imran-ansari Nov 26, 2018
e22ea3a
snapcpg option details updated as per review comment
imran-ansari Nov 26, 2018
b8bbbd3
Made options uniform
imran-ansari Nov 26, 2018
c1bd724
Merge pull request #430 from imran-ansari/master
imran-ansari Nov 27, 2018
7c21f07
Update usage.md for importVol
wdurairaj Nov 29, 2018
73e4b63
Adding limitations
nilangekarss Nov 30, 2018
f338dae
Added removing dangling LUN section
nilangekarss Nov 30, 2018
60dec25
Added issue section for dangling LUN
nilangekarss Nov 30, 2018
17f0713
Added backend limitation
nilangekarss Nov 30, 2018
96d51fe
Added QoS rule reference Doc
nilangekarss Nov 30, 2018
109b9c6
updated OS versions
prablr79 Dec 7, 2018
8ecc5fe
Update README.md
prablr79 Dec 7, 2018
a824326
updated 3PAR versions
prablr79 Dec 7, 2018
44933ff
Update README.md
prablr79 Dec 7, 2018
b423f9c
Fixed proxy issue. Proxy can now be added from the inventory file
farhan7500 Jan 3, 2019
75fd71e
Added documentation on setting proxy in the installation playbook
farhan7500 Jan 3, 2019
6c2a9d8
Disabling proxy, to be populated when adding proxy details
farhan7500 Jan 3, 2019
b6320d1
Disabling proxy, to be populated when adding proxy details
farhan7500 Jan 3, 2019
fd95099
Update hosts_standalone_nodes
farhan7500 Jan 3, 2019
d150dc7
Merge pull request #438 from farhan7500/proxy-issue
nilangekarss Jan 4, 2019
cc3fb63
Corrected spelling errors
c-snell Jan 8, 2019
5c27171
Ability to add/remove/modify the options in the plugin configuration …
farhan7500 Jan 9, 2019
b0ebabe
Merge pull request #440 from budhac/patch-7
prablr79 Jan 10, 2019
7172650
Merge pull request #414 from budhac/patch-5
wdurairaj Jan 16, 2019
85f3275
Updated the documentation based on the test review
farhan7500 Jan 17, 2019
9b26b55
Fix for issue where hpe3parencyrptor failed to encrypt password when …
farhan7500 Jan 18, 2019
d5ddcf5
Merge pull request #441 from farhan7500/ansible-upgrade
wdurairaj Jan 18, 2019
f31803d
Merge pull request #453 from farhan7500/patch-1
wdurairaj Jan 18, 2019
00a1b8e
Merge branch 'master' into encryptor-no-etcd
farhan7500 Jan 21, 2019
e418c02
Fixed rebase issue where conf file was deleted after update
farhan7500 Jan 21, 2019
e9196c1
Fixed an issue where the encrypted password is not properly populated.
farhan7500 Jan 21, 2019
9c88565
Fix for the issue where different 3PAR commands are placed depending …
farhan7500 Jan 21, 2019
5bd97c2
Enhanced the installer to handle vlan tagged iscsi ports.
farhan7500 Jan 22, 2019
7496350
Pushing all fixes
farhan7500 Jan 25, 2019
cc51761
Merge pull request #456 from farhan7500/vlan_tagging
wdurairaj Jan 25, 2019
973c220
Spelling change for clarification
c-snell Jan 29, 2019
a0e3de8
updated per new functionality in etcd deployment
c-snell Jan 29, 2019
eb8e15e
Merge pull request #466 from budhac/patch-9
wdurairaj Jan 30, 2019
e13118b
Merge pull request #465 from budhac/patch-8
wdurairaj Jan 30, 2019
2c944b0
added files
Jan 31, 2019
f165609
added files
Jan 31, 2019
d5f056b
changed container.sh
Feb 1, 2019
6c84f7b
Update container.sh
shaik-gousa-khaja-asif Feb 1, 2019
ec9122a
File Service Design
wdurairaj Feb 1, 2019
ebb186a
Update FileServiceDesign.md
wdurairaj Feb 1, 2019
6b872c8
Adding File Persona Hierarchy applicable for 3PAR volume plugin
nilangekarss Feb 6, 2019
7dfb0ad
Deleting this file to upload new with visible diagram
nilangekarss Feb 6, 2019
2bb95da
Adding 3PAR file persona hierarchy diagram
nilangekarss Feb 6, 2019
1279231
Added use cases for file share creation
nilangekarss Feb 6, 2019
0cb73c3
Correcting the sentence
nilangekarss Feb 6, 2019
65b6c49
Correcting the 3rd point
nilangekarss Feb 6, 2019
efab0d7
Update FileServiceDesign.md
imran-ansari Feb 6, 2019
367d086
Update FileServiceDesign.md
imran-ansari Feb 6, 2019
5ff7751
Update the documentation with the latest upgrade installer changes
farhan7500 Feb 7, 2019
09d9039
modified container.sh
Feb 7, 2019
7466c8f
Removed the external proxy
farhan7500 Feb 8, 2019
25f4469
Update container.sh
farhan7500 Feb 8, 2019
572ea87
Update container.sh
farhan7500 Feb 8, 2019
aceef46
Created readme for the containerised DVP installer
farhan7500 Feb 8, 2019
9672866
Added support to add or remove docker volume plugin from nodes of Kub…
farhan7500 Feb 11, 2019
f5d2fe6
Fixed the standalone installer prerequisite installation
farhan7500 Feb 11, 2019
57af897
Potential fix to doryd error
farhan7500 Feb 15, 2019
acb2a8e
Update README.md
farhan7500 Feb 19, 2019
dfe4abe
final changes
Feb 19, 2019
592e85e
Update README.md
farhan7500 Feb 19, 2019
6b6920a
Update README.md
farhan7500 Feb 19, 2019
64d5f72
Merge pull request #483 from farhan7500/add_remove_nodes_fix
wdurairaj Feb 20, 2019
da580e6
Fixed the documentation post review
farhan7500 Feb 20, 2019
aeca377
Create copy_doryd_config.yml
farhan7500 Feb 20, 2019
1db6748
added latest tag
Feb 20, 2019
6dd26c9
Merge pull request #484 from farhan7500/add_remove_nodes_fix
wdurairaj Feb 20, 2019
4b1f5e9
Merge pull request #471 from farhan7500/upgrade_documentation
wdurairaj Feb 20, 2019
94f485c
added latest tag
Feb 20, 2019
d6c6efd
renamed container.sh and parameterized proxy settings
Feb 21, 2019
a410044
renamed container.sh and parameterized proxy settings
Feb 21, 2019
a9a5931
renamed container.sh and parameterized proxy settings
Feb 21, 2019
3f4fa1d
Add ssh related packages for passwordless communication with nodes
farhan7500 Feb 21, 2019
105f96b
Update README.md
farhan7500 Feb 21, 2019
f46962e
Modified the section name from all to all_nodes
farhan7500 Feb 21, 2019
60da9d1
Merge pull request #486 from farhan7500/patch-3
wdurairaj Feb 21, 2019
ffffb46
Merge pull request #472 from shaik-gousa-khaja-asif/container
wdurairaj Feb 21, 2019
5a27acb
Fixing the cleanup issue where the doryd and sock lock files were not…
farhan7500 Feb 25, 2019
ef44b3a
Merge pull request #490 from farhan7500/patch-5
nilangekarss Feb 25, 2019
a2ccd5a
Regular volume can now be created on a replication enabled back end
farhan7500 Mar 11, 2019
c9cba42
Merge pull request #500 from farhan7500/patch-6
prablr79 Mar 12, 2019
1fa4f97
Not including the vlan ports in case the VLAN is '-'
invalid-email-address Mar 13, 2019
afec36b
Update README.md
farhan7500 Mar 13, 2019
8c1e7ad
Merge pull request #503 from farhan7500/vlan_fix
wdurairaj Mar 18, 2019
5682e2e
Added an option to provide the ISCSI IPs in the plugin properties fil…
farhan7500 Mar 18, 2019
304faab
Fixed typo in inventory sections (#522)
farhan7500 Mar 22, 2019
65dc936
Reading the port values from the etcd properties file (#526)
farhan7500 Mar 26, 2019
2f0deeb
Optimization: Speed up ansible installer execution (#519)
farhan7500 Mar 26, 2019
2de3766
Optimization - Remove [all_nodes] section from the hosts inventory fi…
farhan7500 Mar 26, 2019
15abd10
Optimization: Force fail if DEFAULT back end is not present in the pl…
farhan7500 Mar 26, 2019
d438b0b
Making ssh_hosts_key_file mandatory (#514)
farhan7500 Mar 26, 2019
40504aa
formatting update to improve readability (#475)
c-snell Mar 26, 2019
f4f9ae4
Use simple loop instead of nested loop (#528)
farhan7500 Mar 26, 2019
be9bb8c
Fixed an issue with conflicting requests library versions was causing…
farhan7500 Mar 26, 2019
154c5af
Updated comments in sample hosts file (#531)
farhan7500 Mar 26, 2019
a0c2b56
Fix for issue-532. Tilde is not recognized by the plugin (#533)
farhan7500 Mar 27, 2019
2e2f13d
Added v31 release of dory installer
wdurairaj Apr 4, 2019
12b12a9
Removed unwanted files (#547)
farhan7500 Apr 8, 2019
18afeb7
Remove the volume_plugin image from additonal backend. Only the deafu…
farhan7500 Apr 8, 2019
f6503d8
Update dory and doryd based on the latest 3.1 installer (#552)
farhan7500 Apr 8, 2019
4b1080f
Fixed defects relating to non default replication device and vlan tag…
farhan7500 Apr 8, 2019
20efd60
Fixed the name of the etcd properties file (#556)
farhan7500 Apr 8, 2019
5f86452
Added SLES support
sneharai4 Apr 8, 2019
d491e25
Added doc for manual plugin install on sles with rancher k8s
sneharai4 Apr 9, 2019
db2f7e7
Added support for sles in system reqs doc
sneharai4 Apr 9, 2019
7e1c0ea
Updated quick start guide with sles
sneharai4 Apr 9, 2019
7af5bf3
Updated port
sneharai4 Apr 9, 2019
fcd54fd
Merge branch 'sles_rancher_docs' of https://github.com/sneharai4/pyth…
sneharai4 Apr 9, 2019
f31af00
Updated steps to run plugin on SLES with Rancher
sneharai4 Apr 9, 2019
817053b
Updated doc headers
sneharai4 Apr 9, 2019
5c97fbe
Updated doc
sneharai4 Apr 9, 2019
b553842
updated doc
sneharai4 Apr 9, 2019
9ee2f42
Added Dockerfile and daemonset deployment file to run doryd as contai…
sneharai4 Apr 10, 2019
b63f7f5
Updated doc with review comment
sneharai4 Apr 10, 2019
af40217
Updated doc
sneharai4 Apr 10, 2019
6846699
Updated doc
sneharai4 Apr 10, 2019
2569389
Merge branch 'master' of https://github.com/hpe-storage/python-hpedoc…
sneharai4 Apr 10, 2019
e81dd45
updated doc
sneharai4 Apr 10, 2019
afa89db
Merge pull request #562 from sneharai4/sles_rancher_docs
prablr79 Apr 10, 2019
4b80bd0
Added documentation about the uninstallation of plugin and etcd (#568)
farhan7500 Apr 11, 2019
5fb6e72
Fixed an issue where the mount prefix was not set in the volume mount…
farhan7500 Apr 11, 2019
d2ad3e7
Added a note to ensure that the ports required by etcd are unoccupied…
farhan7500 Apr 11, 2019
ce834a6
Fixed an issue where the directory in which dory installer is downloa…
farhan7500 Apr 12, 2019
0363ee2
Always pull the latest image when starting a container. Also, remove…
farhan7500 Apr 15, 2019
9ad1d70
Added a note to ensure that the ports required by etcd are unoccupied…
wdurairaj Apr 15, 2019
b582836
Document the vlan_tag in the sample config file (#579)
farhan7500 Apr 17, 2019
0c53493
Added etcd add/remove limitation (#582)
farhan7500 Apr 17, 2019
75b5a0e
Merge pull request #2 from hpe-storage/master
sandesh-desai Apr 22, 2019
3dd4807
Add PV,PVC,POD yaml for Static provisioning.
sandesh-desai Apr 22, 2019
6c2252c
pv_static example.yaml
sandesh-desai Apr 22, 2019
0c029d4
File name correction
sandesh-desai Apr 22, 2019
e974b64
pvc smaple for static provisioning
sandesh-desai Apr 22, 2019
0d261f1
pod sample for static provisioning
sandesh-desai Apr 22, 2019
4391f34
edit file name
sandesh-desai Apr 22, 2019
36d46d2
edit file name
sandesh-desai Apr 22, 2019
f19858c
edit file name
sandesh-desai Apr 22, 2019
53d678a
Merge pull request #1 from hpe-storage/master
virendra-sharma Apr 23, 2019
97380e5
create docker EE 2.0 UCP 3.0.5 installation.md
virendra-sharma Apr 23, 2019
4957a88
Updated the file as per review commant
sandesh-desai Apr 24, 2019
5f494c7
Update FileServiceDesign.md
imran-ansari Apr 25, 2019
23c6c51
Merge pull request #585 from sandesh-desai/master
prablr79 Apr 25, 2019
bfaa5fb
Merge pull request #587 from virendra-sharma/master
prablr79 Apr 26, 2019
aaf6037
updated ReadMe
prablr79 May 13, 2019
eac673b
updated Deployment guide
prablr79 May 13, 2019
630b405
Update quick_start_guide.md
prablr79 May 13, 2019
6f978d5
Update quick_start_guide.md
prablr79 May 13, 2019
f8ea9d3
updated QuickStart guide
prablr79 May 13, 2019
ce359bc
Update README.md
prablr79 May 13, 2019
593eef9
Merge branch 'master' into prablr79-patch-2
prablr79 May 14, 2019
f345b96
updated troubleshooting.md
prablr79 May 14, 2019
6ddf39b
Updated ReadMe.md
prablr79 May 14, 2019
5f652e8
Update README.md
prablr79 May 14, 2019
291c400
updated quick_start_guide.md
prablr79 May 14, 2019
25d52b0
updated spock link
prablr79 May 14, 2019
bc06b7e
updated quick start guide
prablr79 May 14, 2019
6accacb
typo error fixed
prablr79 May 14, 2019
c1a0648
updated Swapnil comment
prablr79 May 15, 2019
8784911
updated swapnil comments troubleshooting.md
prablr79 May 15, 2019
b3dfc54
updated troubleshooting.md
prablr79 May 15, 2019
31d8642
spell correction updated
prablr79 May 15, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## HPE Docker Volume Plugin for HPE 3PAR StoreServ
## HPE 3PAR Volume Plugin for Docker

HPE Docker Volume Plugin is an open source project that provides persistent storage and features for your containerized applications using HPE 3PAR StoreServ Storage arrays.

The HPE Docker Volume Plugin supports popular container platforms like Docker, Kubernetes, OpenShift and SuSE CaaS/CAP
The HPE Docker Volume Plugin supports popular container platforms like Docker, Kubernetes, OpenShift

## HPE Docker Volume Plugin Overview

Expand Down Expand Up @@ -40,6 +40,10 @@ Here is an example of the HPE Docker Volume plugin being used in an OpenShift en
* snapshot mount
* mount_conflict_delay
* concurrent volume access
* replication
* snapshot schedule
* file system permissions and ownership
* multiple backends

## Usage

Expand All @@ -48,3 +52,53 @@ See the [usage guide](/docs/usage.md) for details on the supported operations an
## Troubleshooting

Troubleshooting issues with the plugin can be performed using these [tips](/docs/troubleshooting.md)


## SPOCK Link for HPE 3PAR Volume Plugin for Docker

* [SPOCK Link](https://spock.corp.int.hpe.com/spock/utility/document.aspx?docurl=Shared%20Documents/hw/3par/3par_volume_plugin_for_docker.pdf)

## Limitations
- List of issues around the containerized version of the plugin/Managed plugin is present in https://github.com/hpe-storage/python-hpedockerplugin/issues

- ``$ docker volume prune`` is not supported for volume plugin, instead use ``$docker volume rm $(docker volume ls -q -f "dangling=true") `` to clean up orphaned volumes.

- Shared volume support is present for containers running on the same host.

- For upgrading the plugin from older version to the current released version, user needs to unmount all the volumes and follow the standard
upgrade procedure described in docker guide.

- Volumes created using older plugins (2.0.2 or below) do not have snap_cpg associated with them, hence when the plugin is upgraded to 2.1 and user wants to perform clone/snapshot operations on these old volumes, he/she must set the snap_cpg for the
corresponding volumes using 3par cli or any tool before performing clone/snapshot operations.

- While inspecting a snapshot, its provisioning field is set to that of parent volume's provisioning type. In 3PAR however, it is shown as 'snp'.

- Mounting a QoS enabled volume can take longer than a volume without QoS for both FC and iSCSI protocol.

- For a cloned volume with the same size as source volume, comment field won’t be populated on 3PAR.

- User not allowed to import a 3PAR legacy volume when it is under use(Active VLUN).

- User needs to explicitly manage all the child snapshots, until which managed parent volume cannot be deleted

- User cannot manage already managed volume by other docker host(i.e. volume thats start with 'dcv-')

- It is recommended for a user to avoid importing legacy volume which has schedules associated with it. If this volume needs to be imported please remove existing schedule on 3PAR and import the legacy volume.

- "Snapshot schedule creation can take more time resulting into Docker CLI timeout. However, snapshot schedule may still get created in the background. User can follow below two steps in case of time out issue from docker daemon while creating snapshot schedule."

```Inspect the snapshot to verify if the snapshot schedule got created
docker volume inspect <snapshot_name>. This should display snapshot details with snapshot schedule information.

Verify if schedule got created on the array using 3PAR CLI command:
$ showsched
```

- If a mount fails due to dangling LUN use this section of troubleshooting guide [Removing Dangling LUN](https://github.com/hpe-storage/python-hpedockerplugin/blob/master/docs/troubleshooting.md#removing-dangling-lun)

- If two or more backends are defined with the same name then the last backend is picked up and rest ignored.

- after doing scsi rescan if the symlinks for the device are not populated in /dev/disk/by-path, Plugin will not function correctly during mount operation.

- For volume uppersize limiation, please do refer 3PAR's documentation.

191 changes: 138 additions & 53 deletions ansible_3par_docker_plugin/README.md
Original file line number Diff line number Diff line change
@@ -1,79 +1,164 @@
# Automated Installer for 3PAR Docker Volume plugin (Ansible)

These are Ansible playbooks to automate the install of the HPE 3PAR Docker Volume Plug-in for Docker for use within Kubernetes/OpenShift environments.
These are Ansible playbooks to automate the install of the HPE 3PAR Docker Volume Plug-in for Docker for use within standalone docker environment or Kubernetes/OpenShift environments.

If you are not using Kubernetes or OpenShift, we recommend you take a look at the [Quick Start guide](/docs/quick_start_guide.md) for using the HPE 3PAR Docker Volume Plug-in in a standalone Docker environment.

>**NOTE:** The Ansible installer only supports RHEL/CentOS. If you are using another distribution of Linux, you will need to modify the playbooks to support your application manager (apt, etc.) and the pre-requisite packages.
>**NOTE:** The Ansible installer only supports Ubuntu/RHEL/CentOS. If you are using another distribution of Linux, you will need to modify the playbooks to support your application manager (apt, etc.) and the pre-requisite packages.

### Getting Started

These playbooks perform the following tasks on the Master/Worker nodes as defined in the Ansible [hosts](/ansible_3par_docker_plugin/hosts) file.
* Configure the Docker Services for the HPE 3PAR Docker Volume Plug-in
* Deploys a 3-node Highly Available etcd cluster
* Deploys the config files (iSCSI or FC) to support your environment
* Installs the HPE 3PAR Docker Volume Plug-in (Containerized version) for Kubernetes/OpenShift
* Deploys the HPE FlexVolume Drivers
* Installs the HPE 3PAR Docker Volume Plug-in (Containerized version)
* For standalone docker environment,
* Deploys an etcd cluster
* For Kubernetes/OpenShift,
* Deploys a Highly Available etcd cluster used by the HPE 3PAR Docker Volume plugin
* Supports single node (Use only for testing purposes) or multi-node deployment (HA) as defined in the Ansible hosts file
* Deploys the HPE FlexVolume Driver

### Prerequisites:

- Install Ansible per [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)
- Login to 3PAR to create known_hosts file
> **Note:** Entries for the Master and Worker nodes should already exist within the /<user>/.ssh/known_hosts file from the OpenShift installation. If not, you will need to log into each of the Master and Worker nodes as well to prevent connection errors from Ansible.

- modify files/hpe.conf ([iSCSI](/ansible_3par_docker_plugin/files/iSCSI_hpe.conf) or [FC](/ansible_3par_docker_plugin/files/FC_hpe.conf)) based on your HPE 3PAR Storage array configuration. An example can be found here: [sample_hpe.conf](/ansible_3par_docker_plugin/files/sample_hpe.conf)
- Install Ansible 2.5 or above as per [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)

- Login to 3PAR via SSH to create entry in /\<user>\/.ssh/known_hosts file
> **Note:** Entries for the Master and Worker nodes should already exist within the /\<user>\/.ssh/known_hosts file from the OpenShift installation. If not, you will need to log into each of the Master and Worker nodes as well to prevent connection errors from Ansible.

- Clone the python-hpedockerplugin repository
```
git clone https://github.com/hpe-storage/python-hpedockerplugin
cd python-hpedockerplugin/ansible_3par_docker_plugin
```

- Add [plugin configuration properties - sample](/ansible_3par_docker_plugin/properties/plugin_configuration_properties_sample.yml) at `properties/plugin_configuration_properties.yml` based on your HPE 3PAR Storage array configuration. Some of the properties are mandatory and must be specified in the properties file while others are optional.

| Property | Mandatory | Default Value | Description |
| ------------- | ------------- | ------------- | ------------- |
| ```hpedockerplugin_driver``` | Yes | No default value | ISCSI/FC driver (hpedockerplugin.hpe.hpe_3par_iscsi.HPE3PARISCSIDriver/hpedockerplugin.hpe.hpe_3par_fc.HPE3PARFCDriver) |
| ```hpe3par_ip``` | Yes | No default value | IP address of 3PAR array |
| ```hpe3par_username``` | Yes | No default value | 3PAR username |
| ```hpe3par_password``` | Yes | No default value | 3PAR password |
| ```hpe3par_cpg``` | Yes | No default value | Primary user CPG |
| ```volume_plugin``` | Yes | No default value | Name of the docker volume image (only required with DEFAULT backend) |
| ```encryptor_key``` | No | No default value | Encryption key string for 3PAR password |
| ```logging``` | No | ```INFO``` | Log level |
| ```hpe3par_debug``` | No | No default value | 3PAR log level |
| ```suppress_requests_ssl_warning``` | No | ```True``` | Suppress request SSL warnings |
| ```hpe3par_snapcpg``` | No | ```hpe3par_cpg``` | Snapshot CPG |
| ```hpe3par_iscsi_chap_enabled``` | No | ```False``` | ISCSI chap toggle |
| ```hpe3par_iscsi_ips``` | No |No default value | Comma separated iscsi port IPs (only required if driver is ISCSI based) |
| ```use_multipath``` | No | ```False``` | Mutltipath toggle |
| ```enforce_multipath``` | No | ```False``` | Forcefully enforce multipath |
| ```ssh_hosts_key_file``` | No | ```/root/.ssh/known_hosts``` | Path to hosts key file |
| ```quorum_witness_ip``` | No | No default value | Quorum witness IP |
| ```mount_prefix``` | No | No default value | Alternate mount path prefix |
| ```hpe3par_iscsi_ips``` | No | No default value | Comma separated iscsi IPs. If not provided, all iscsi IPs will be read from the array and populated in hpe.conf |
| ```vlan_tag``` | No | False | Populates the iscsi_ips which are vlan tagged, only applicable if ```hpe3par_iscsi_ips``` is not specified |
| ```replication_device``` | No | No default value | Replication backend properties |

- The Etcd ports can be modified in [etcd cluster properties](/ansible_3par_docker_plugin/properties/etcd_cluster_properties.yml) as follows:

| Property | Mandatory | Default Value |
| ------------- | ------------- | ------------- |
| ```etcd_peer_port``` | Yes | 23800 |
| ```etcd_client_port_1``` | Yes | 23790 |
| ```etcd_client_port_2``` | Yes | 40010 |

> **Note:** Please ensure that the ports specified above are unoccupied before installation. If the ports are not available on a particular node, etcd installation will fail.

> **Limitation:** The installer, in the current state does not have the capability to add or remove nodes in the etcd cluster. In case an etcd node is not responding or goes down, it is beyond the current scope to admit it back into the cluster. Please follow the [etcd documentation](https://coreos.com/etcd/docs/latest/etcd-live-cluster-reconfiguration.html) to do so manually.

- It is recommended that the properties file is [encrypted using Ansible Vault](/ansible_3par_docker_plugin/encrypt_properties.md).

- Modify [hosts](/ansible_3par_docker_plugin/hosts) file to define your Master/Worker nodes as well as where you want to deploy your etcd cluster

### Working with proxies:

Set `http_proxy` and `https_proxy` in the [inventory hosts file](/ansible_3par_docker_plugin/hosts) while installing plugin on Kubernetes/Openshift setup. For setting proxies in the standalone plugin installation, see [inventory hosts file for standalone plugin installation](/ansible_3par_docker_plugin/hosts_standalone_nodes)

### Usage

Once the prerequisites are complete, run the following command:

- Fresh installation on standalone docker environment:
```
$ ansible-playbook -i hosts install_hpe_3par_volume_driver.yml
```

Once complete you will be ready to start using the HPE 3PAR Docker Volume Plug-in within Kubernetes/OpenShift.

Please refer to the Kubernetes/OpenShift section in the [Usage Guide](/docs/usage.md#k8_usage) on how to create and deploy some sample SCs, PVCs, and Pods with persistent volumes using the HPE 3PAR Docker Volume Plug-in.


<br><br>


### Known Issues

Ansible on some Linux Distros (i.e. CentOS and Ubuntu) may throw an error about missing the `docker` module.

```
TASK [run etcd container] ******************************************************************************************************************************************
fatal: [192.168.1.35]: FAILED! => {"changed": false, "msg": "Failed to import docker-py - No module named docker. Try `pip install docker-py`"}
```

Run:

```
pip install docker
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts_standalone_nodes install_standalone_hpe_3par_volume_driver.yml --ask-vault-pass
```

-----------------------------------------------------------------------------------

On Ansible 2.6 and later, per https://github.com/ansible/ansible/issues/42162, `docker-py` has been deprecated and when running the Ansible playbook, you may see the following error:

- Fresh installation on Openshift/Kubernetes environment:
```
docker_container: create_host_config() got an unexpected keyword argument 'init'
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts install_hpe_3par_volume_driver.yml --ask-vault-pass
```
> **Note:** ```--ask-vault-pass``` is required only when the properties file is encrypted


Once complete you will be ready to start using the HPE 3PAR Docker Volume Plug-in.

- Update the array backends in Standalone/Openshift/Kubernetes environment:
* Modify the [plugin configuration properties - sample](/ansible_3par_docker_plugin/properties/plugin_configuration_properties_sample.yml) at `properties/plugin_configuration_properties.yml` based on the updated HPE 3PAR Storage array configuration. Additional backends may be added or removed from the existing configuration. Individual attributes of the existing array configuration may also be modified.

* Update array backend on standalone docker environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts_standalone_nodes install_standalone_hpe_3par_volume_driver.yml --ask-vault-pass
```

* Update array backend on Openshift/Kubernetes environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts install_hpe_3par_volume_driver.yml --ask-vault-pass
```
> **Note:** It is not recommended to change the Etcd information and array encryption password during the backend update process

- Upgrade the docker volume plugin
* Modify the `volume_plugin` in [plugin configuration properties - sample](/ansible_3par_docker_plugin/properties/plugin_configuration_properties_sample.yml) and point it to the latest image from docker hub
* Update plugin on standalone docker environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts_standalone_nodes install_standalone_hpe_3par_volume_driver.yml --ask-vault-pass
```
* Update plugin on Openshift/Kubernetes environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts install_hpe_3par_volume_driver.yml --ask-vault-pass
```
> **Note:**
- Ensure that all the nodes in the cluster are present in the inventory [hosts](/ansible_3par_docker_plugin/hosts) file
- The docker volume plugin will be restarted and the user will not be able to create the volume during the process

* Successful upgrade will remove the old plugin container and replace it with the new plugin container which is specified in the plugin properties file

- Install docker volume plugin to additional nodes in the cluster
* Add the new nodes in the respective sections in the inventory [hosts](/ansible_3par_docker_plugin/hosts) file
* Only new nodes IP or hostnames must be present in the hosts file
* Do not change the etcd hosts from the existing setup. Do not add or remove nodes in the etcd section

* Install plugin on new nodes on Openshift/Kubernetes environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts install_hpe_3par_volume_driver.yml --ask-vault-pass
```

* Uninstall plugin on nodes on Openshift/Kubernetes environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts uninstall/uninstall_hpe_3par_volume_driver.yml --ask-vault-pass
```

* Uninstall plugin along with etcd on nodes on Openshift/Kubernetes environment:
```
$ cd python-hpedockerplugin/ansible_3par_docker_plugin
$ ansible-playbook -i hosts uninstall/uninstall_hpe_3par_volume_driver_etcd.yml --ask-vault-pass
```

> **Note:** This process only adds or removes docker volume plugin and/or etcd in nodes in an existing cluster. It does not add or remove nodes in Kubernetes/Openshift cluster
* On success after adding plugin on new nodes, the additional nodes will have a running docker volume plugin container
* On success after removing plugin from specified nodes, docker volume plugin container will be removed

Please refer to [Usage Guide](/docs/usage.md) on how to perform volume related actions on the standalone docker environment.

`docker-py` is no longer supported and has been deprecated in favor of the `docker` module.

If `docker-py` is installed, run:

```
pip uninstall docker-py
```
Please refer to the Kubernetes/OpenShift section in the [Usage Guide](/docs/usage.md#k8_usage) on how to create and deploy some sample SCs, PVCs, and Pods with persistent volumes using the HPE 3PAR Docker Volume Plug-in.

Run:

```
pip install docker
```
<br><br>
29 changes: 29 additions & 0 deletions ansible_3par_docker_plugin/container/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
FROM alpine:3.8

MAINTAINER Farhan Nomani <[email protected]>

RUN echo "===> Installing sudo to emulate normal OS behavior..." && \
apk --update add sudo && \
\
\
echo "===> Adding Python runtime..." && \
apk --no-cache add ca-certificates && \
apk --update add python py-pip openssl unzip && \
apk --update add --virtual build-dependencies wget \
openssh-keygen openssh-server openssh-client \
python-dev libffi-dev openssl-dev build-base && \
pip install --upgrade pip pycrypto cffi && \
\
\
echo "===> Installing Ansible..." && \
pip install ansible && \
\
wget https://github.com/hpe-storage/python-hpedockerplugin/archive/master.zip

RUN unset http_proxy
RUN unset https_proxy
RUN unzip master.zip

RUN rm -f master.zip
RUN mv python-hpedockerplugin-master/ansible_3par_docker_plugin/ .
RUN rm -rf python-hpedockerplugin-master/
14 changes: 14 additions & 0 deletions ansible_3par_docker_plugin/container/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Docker Volume Plugin Installer - Docker Image

This is an Alpine based image with Ansible and its dependency installed along with the latest HPE 3PAR docker volume plugin ansible installer tasks and playbooks.

Usage:

- Run the latest docker image from docker hub, the command below will run the pre built container and open shell
- `docker run -it hpestorage/legacyvolumeplugininstaller /bin/sh`

- Set the proxy (if required)
- `export http_proxy=<your-proxy>:<your-port>`
- `export https_proxy=<your-proxy>:<your-port>`

- Follow [this link](/ansible_3par_docker_plugin/README.md) to set the node information, backend properties and run the installation playbook
Loading