From 812e2509d45bdc0b485f3ee8df4c6050f47ce0e8 Mon Sep 17 00:00:00 2001 From: Stephan Kristyn Date: Mon, 19 Apr 2021 23:28:19 +0200 Subject: [PATCH] added idea to gitignore --- .gitignore | 2 +- LICENSE | 16 + README.md | 388 +++++- ansible.cfg | 7 +- .../ca/example/clair.corp.example.com.crt | 34 - .../ca/example/registry.corp.example.com.crt | 34 - .../example/clair/clair.corp.example.com.crt | 34 - .../example/clair/clair.corp.example.com.key | 167 --- files/example/quay/config.yaml | 28 - .../quay/registry.corp.example.com.crt | 34 - .../quay/registry.corp.example.com.key | 167 --- images/clair-ha.png | Bin 0 -> 194580 bytes images/gce-storage.png | Bin 0 -> 154670 bytes images/quay-ha-conception.jpg | Bin 0 -> 664627 bytes inventories/dev/group_vars/all.yml | 1113 +++++++++++++++++ inventories/dev/group_vars/postgres.yml | 13 + inventories/dev/group_vars/quay.yml | 96 ++ inventories/dev/group_vars/redis.yml | 2 + inventories/dev/hosts | 25 + inventories/example/group_vars/all.yaml | 14 - inventories/example/group_vars/quay.yaml | 21 - inventories/example/hosts | 71 -- p_drop-quay-db.yml | 17 + p_presetup-hosts.yml | 41 + p_presetup-storage.yml | 124 ++ p_remove-all-folders.yml | 15 + p_setup-all.yml | 8 + p_setup-container-postgres.yml | 118 ++ p_setup-container-redis.yml | 97 ++ p_setup-quay-ha.yml | 45 + p_smoke-test.yml | 17 + presetup-hosts.yml | 81 -- presetup-storage.yml | 100 -- restart-quay.yml | 25 - roles/quay/defaults/main.yml | 57 - roles/quay/tasks/container-clair.yml | 44 - roles/quay/tasks/container-quay.yml | 75 -- roles/quay/tasks/container-quayconfig.yml | 48 - roles/quay/tasks/setup.yml | 372 ------ roles/r_quay/defaults/main.yml | 69 + .../{quay => r_quay}/files/clair/config.yaml | 11 +- roles/{quay => r_quay}/files/quay/config.yaml | 29 +- roles/{quay => r_quay}/meta/main.yml | 0 .../r_quay/tasks/class-container-service.yml | 41 + roles/r_quay/tasks/class-drop-quay-db.yml | 20 + roles/r_quay/tasks/class-remove-container.yml | 31 + roles/r_quay/tasks/class-remove-folder.yml | 10 + roles/r_quay/tasks/container-clair.yml | 106 ++ roles/r_quay/tasks/container-quay.yml | 126 ++ roles/r_quay/tasks/container-quayconfig.yml | 84 ++ roles/{quay => r_quay}/tasks/database.yml | 30 +- roles/r_quay/tasks/integration-tests-quay.yml | 201 +++ roles/{quay => r_quay}/tasks/main.yml | 363 ++++-- roles/r_quay/tasks/setup.yml | 499 ++++++++ roles/r_quay/tasks/system-tests.yml | 64 + roles/r_quay/tasks/unit-test-clair.yml | 94 ++ roles/r_quay/tasks/unit-test-postgres.yml | 85 ++ roles/r_quay/tasks/unit-test-quay.yml | 129 ++ roles/r_quay/tasks/unit-test-service.yml | 18 + roles/{rhel_vm => r_rhel_vm}/meta/main.yml | 0 roles/r_rhel_vm/tasks/main.yml | 25 + .../{rhel_vm => r_rhel_vm}/tasks/network.yml | 0 roles/{rhsm => r_rhsm}/tasks/main.yml | 6 +- roles/rhel_vm/tasks/main.yml | 26 - secrets/example/secrets.yml | 18 - setup-all.yml | 5 - setup-container-postgres.yml | 64 - setup-container-redis.yml | 64 - setup-quay.yml | 38 - stuff/mirror-images-skopeo.sh | 158 --- templates/clair.service.j2 | 22 + templates/dns-failover-test.db.j2 | 24 + templates/dns-failover-test.rev.j2 | 23 + templates/dns.db.j2 | 24 + templates/dns.rev.j2 | 23 + templates/pg_hba.conf.j2 | 108 ++ templates/postgres.conf.j2 | 792 ++++++++++++ templates/postgres.service.j2 | 22 + templates/quay.service.j2 | 22 + templates/redis.service.j2 | 22 + templates/repomirror.service.j2 | 22 + 81 files changed, 5124 insertions(+), 1944 deletions(-) create mode 100644 LICENSE delete mode 100644 files/common/ca/example/clair.corp.example.com.crt delete mode 100644 files/common/ca/example/registry.corp.example.com.crt delete mode 100644 files/example/clair/clair.corp.example.com.crt delete mode 100644 files/example/clair/clair.corp.example.com.key delete mode 100644 files/example/quay/config.yaml delete mode 100644 files/example/quay/registry.corp.example.com.crt delete mode 100644 files/example/quay/registry.corp.example.com.key create mode 100644 images/clair-ha.png create mode 100644 images/gce-storage.png create mode 100644 images/quay-ha-conception.jpg create mode 100644 inventories/dev/group_vars/all.yml create mode 100644 inventories/dev/group_vars/postgres.yml create mode 100644 inventories/dev/group_vars/quay.yml create mode 100644 inventories/dev/group_vars/redis.yml create mode 100644 inventories/dev/hosts delete mode 100644 inventories/example/group_vars/all.yaml delete mode 100644 inventories/example/group_vars/quay.yaml delete mode 100644 inventories/example/hosts create mode 100644 p_drop-quay-db.yml create mode 100644 p_presetup-hosts.yml create mode 100644 p_presetup-storage.yml create mode 100644 p_remove-all-folders.yml create mode 100644 p_setup-all.yml create mode 100644 p_setup-container-postgres.yml create mode 100644 p_setup-container-redis.yml create mode 100644 p_setup-quay-ha.yml create mode 100644 p_smoke-test.yml delete mode 100644 presetup-hosts.yml delete mode 100644 presetup-storage.yml delete mode 100644 restart-quay.yml delete mode 100644 roles/quay/defaults/main.yml delete mode 100644 roles/quay/tasks/container-clair.yml delete mode 100644 roles/quay/tasks/container-quay.yml delete mode 100644 roles/quay/tasks/container-quayconfig.yml delete mode 100644 roles/quay/tasks/setup.yml create mode 100644 roles/r_quay/defaults/main.yml rename roles/{quay => r_quay}/files/clair/config.yaml (91%) rename roles/{quay => r_quay}/files/quay/config.yaml (54%) rename roles/{quay => r_quay}/meta/main.yml (100%) create mode 100644 roles/r_quay/tasks/class-container-service.yml create mode 100644 roles/r_quay/tasks/class-drop-quay-db.yml create mode 100644 roles/r_quay/tasks/class-remove-container.yml create mode 100644 roles/r_quay/tasks/class-remove-folder.yml create mode 100644 roles/r_quay/tasks/container-clair.yml create mode 100644 roles/r_quay/tasks/container-quay.yml create mode 100644 roles/r_quay/tasks/container-quayconfig.yml rename roles/{quay => r_quay}/tasks/database.yml (88%) create mode 100644 roles/r_quay/tasks/integration-tests-quay.yml rename roles/{quay => r_quay}/tasks/main.yml (55%) create mode 100644 roles/r_quay/tasks/setup.yml create mode 100644 roles/r_quay/tasks/system-tests.yml create mode 100644 roles/r_quay/tasks/unit-test-clair.yml create mode 100644 roles/r_quay/tasks/unit-test-postgres.yml create mode 100644 roles/r_quay/tasks/unit-test-quay.yml create mode 100644 roles/r_quay/tasks/unit-test-service.yml rename roles/{rhel_vm => r_rhel_vm}/meta/main.yml (100%) create mode 100644 roles/r_rhel_vm/tasks/main.yml rename roles/{rhel_vm => r_rhel_vm}/tasks/network.yml (100%) rename roles/{rhsm => r_rhsm}/tasks/main.yml (95%) delete mode 100644 roles/rhel_vm/tasks/main.yml delete mode 100644 secrets/example/secrets.yml delete mode 100644 setup-all.yml delete mode 100644 setup-container-postgres.yml delete mode 100644 setup-container-redis.yml delete mode 100644 setup-quay.yml delete mode 100755 stuff/mirror-images-skopeo.sh create mode 100644 templates/clair.service.j2 create mode 100644 templates/dns-failover-test.db.j2 create mode 100644 templates/dns-failover-test.rev.j2 create mode 100644 templates/dns.db.j2 create mode 100644 templates/dns.rev.j2 create mode 100644 templates/pg_hba.conf.j2 create mode 100644 templates/postgres.conf.j2 create mode 100644 templates/postgres.service.j2 create mode 100644 templates/quay.service.j2 create mode 100644 templates/redis.service.j2 create mode 100644 templates/repomirror.service.j2 diff --git a/.gitignore b/.gitignore index 488d515..d5e93e3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ *.orig *.bak .vscode - +.idea diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..985529f --- /dev/null +++ b/LICENSE @@ -0,0 +1,16 @@ +Quay Ansible Playbooks - These playbooks setup Red Hat Quay and Clair in HA mode + + Copyright (C) 2021 Stephan Kristyn and James Cole + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . \ No newline at end of file diff --git a/README.md b/README.md index 2d27c44..97a621e 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,380 @@ # Quay HA Ansible Playbooks -These playbooks can be used as a starting point to setup Quay 3 and Clair in an HA configuration following the docs at: https://access.redhat.com/documentation/en-us/red_hat_quay/3/html/manage_red_hat_quay/index +These playbooks can be used to setup Quay 3.3.4 and Clair 3.3.4 in an HA configuration following the docs [here](https://access.redhat.com/documentation/en-us/red_hat_quay/3/html/manage_red_hat_quay/index). -quay-setup.yaml is all that's needed, but also included is an example standalone redis and postgres container for testing, and some host preparation playbooks. +## Prerequisites -# Usage +* RHEL 8.x VMs with podman installed. +* DNS records or Load-Balancer Setup for multiple Quay instances, multiple Clair instances, Redis and Postgres +* Certificates and Private Keys for Quay and Clair and CA certificates. These are provided pre-signed for a local *.dev* domain in the inventory. +* Expects *firewalld* and *SeLinux* to be enabled and firewall opened for ports 8443 for config_mode, 443 for quay, 5432 for Postgres, 6379 for Redis, 6060 and 6061 for Clair. 6062 and 6063 are used internally by Clair. +* S3 storage -Copy inventories/example/, files/example/, and secrets/example/ and make modifications for your environment. +### Notes -_All Quay options start with clair_ or quay_ (except for is_clair and is_quay)_ +* Tested on RHEL 8.2 with Ansible 2.9.16 +* Will install Quay, Clair, Redis and Postgresql DB for Quay, Clair and Redis -**Mark individual hosts with 'is_quay=true' and/or 'is_clair=true' to run those components there.** +## Quickstart -Review roles/quay/defaults/main.yml for default variable values and options. +* Consult the [Quay Enterprise 3.x Tested Integrations](https://access.redhat.com/articles/4067991) KB Article. +* Create 4 or more VMs. 4 would run the cluster minimum (unsupported). 6 or more would an ideal setup for start with HA (supported). +* Adapt the inventory or adapt `ansible.cfg` to your inventory +* Replace all certs or use given ones if you have the same domain +* Run `ansible-playbook p_setup-all.yml` +* Consider running the included Smoke Test Suite -### Quay config.yaml is built in layers (each one is variable aware): -1. config object response from quay config mode API -2. reuse of SECRET_KEY, DATABASE_SECRET_KEY, and BITORRENT_FILENAME_PEPPER from first found existing quay/config.yaml on a server on re-run -3. some sane defaults from roles/quay/files/quay/config.yaml -4. values from 'quay_config' variable defined in inventory (this most easily defined by loading a file like files/example/quay/config.yaml ) +## Path to Quay 3.5.x +* Version increments are n-1. This means subsequent updates have to be done in order to get to the latest version. +* For this you can either alter these playbook's config mode part or do a container-by-container update strategy as described [here](https://access.redhat.com/documentation/en-us/red_hat_quay/3.5/html/upgrade_red_hat_quay/standalone_upgrade#upgrade_to_v3_5_0_from_v3_4). -### Clair config.yaml is built from (variable aware): -1. security_scanner options from: - 1. reuse of security_scanner pem file and id if already on all clair hosts and known by the Quay config API responses - 2. Quay config API generating a key -2. roles/quay/files/clair/config.yaml +## Diagrams +### *Exemplary Quay Cluster* +![](images/quay-ha-conception.jpg) -# Notes +### *Clair High Availability Mode* +![](images/clair-ha.png) -Tested on RHEL 7 with Ansible 2.6 +### *GCE S3 Storage for Image Data* +![](images/gce-storage.png) -Expects NetworkManager, Firewalld, and Selinux to be enabled. +# Usage of Playbooks -Expects Postgresql DB for Quay -Expects Postgresql DB for Clair +* Make modifications for your environment in the inventory files. This inventory files try to serve as single source of truth, in order to maximize compatibility of these playbooks with Ansible Tower. +* Most Quay options start with `clair_` or `quay_`. +* Secrets and certs are stored in group_vars/all.yml and are encrypted. +* Mark individual hosts with _is_quay=true_ and _is_clair=true_ to run those components on the respective hosts. +* Review `roles/quay/defaults/main.yml` for default variable values and options and feel free to move more parameters to the inventory +* The pre-provided Certificates are non-SAN, self-signed and valid for local .dev domain. The Vault PW is in the inventory. -_ansible-vault password is password_ -_*.key and secrets/../config.yaml files are encrypted_ +## Quay Config -**You definitely don't want to use the presetup-* playbooks without modifying them for your environment.** +Quay Config is split into + +### Role-based + +`config.yaml` + +```bash +roles/quay/files +├── quay +│   └── config.yaml +``` + +### Inventory-based + +`quay.yml` + +```bash +inventories/dev/ +├── group_vars +│   └── quay.yml +``` + +### Layering of Quay Config in Playbooks + +This are two important files, which you most certainly want to change. This file is built in layers by the Playbooks. + +1. Config object response from quay config mode API +2. Reuse of *DATABASE_SECRET_KEY* from first found existing config.yaml on re-run +3. Some sane defaults from `roles/quay/files/quay/config.yaml` +4. Values from 'quay_config' variable defined in inventory. + +Quay's resulting `config.yaml` file is where everything gets merged into and validated in config mode of the playbooks. + +### Storage + +```yaml +... +FEATURE_STORAGE_REPLICATION: true +DISTRIBUTED_STORAGE_CONFIG: + default: + - AzureStorage + - azure_account_key: "{{ secrets.secret_key }}" + azure_account_name: quaystorageaccount + azure_container: quayblobstorage + sas_token: "{{ secrets.secret_key }}" + storage_path: /datastorage/registry +DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: +- westeurope +... +``` + +### LDAP +If LDAP is used, AUTHENTICATION_TYPE must be set to `LDAP` and SUPER_USERS variable must contain the list of LDAP users which will have admin permissions. + +```yaml +SUPER_USERS: [user1, user2, user3] +... +AUTHENTICATION_TYPE: LDAP +LDAP_ADMIN_DN: uid=admin,cn=users,cn=accounts,dc=shared,dc=example,dc=opentlc,dc=com +LDAP_ADMIN_PASSWD: "{{ secrets.ldap_password }}" +LDAP_BASE_DN: +- cn=accounts +- dc=shared +- dc=example +- dc=opentlc +- dc=com +LDAP_EMAIL_ATTR: mail +LDAP_UID_ATTR: uid +LDAP_URI: ldap://ipa.shared.example.opentlc.com +LDAP_USER_RDN: +- cn=users +LDAP_SECONDARY_USER_RDNS: +- cn=users2 +FEATURE_TEAM_SYNCING: true +TEAM_RESYNC_STALE_TIME: 1m +... +``` + +## Clair Config + +```bash +roles/quay/files +├── clair +│   └── config.yaml +``` + +This is an important file in addition to the inventory. +Security Scanner options are gathered either by + + * Re-use of `security_scanner.pem` file and ID if already present on all clair hosts and known by the Quay config API responses + * New Key by Quay Config API generating a key + + +In the Clair `config.yaml` file you can change default ports or certificate and SSL options. + +```yaml + verifier_proxies: + - enabled: true + # The port at which Clair will listen. + listen_addr: :6060 + + # If Clair is to be served via TLS, uncomment these lines. See the "Running Clair under TLS" + # section below for more information. + key_file: /clair/config/ssl.key + crt_file: /clair/config/ssl.crt + .. +``` + + +## Inventory + +The Inventory contains a `hosts` file and `group_vars` directory with quay, redis, postgres files for the according host groups. All certificates and private keys are stored in the inventory. + +```bash +inventories/ +└── your.domainname + ├── group_vars + │   ├── all.yml + │   ├── local.yml + │   ├── postgres.yml + │   ├── quay.yml + │   └── redis.yml + └── hosts +``` + + +### all.yml + +```yml +drop_quay_db: true +delete_old_quay_config: true +remove_all_folders: true +remove_redis_container: true +remove_quay_container: true +... +quay_db_admin_username: postgres +quay_redis_port: 6379 +quay_db_password: "{{ secrets.quay_db_password }}" +postgres_ssl_crt: "{{ certs.postgres_ssl_crt }}" + +secrets: + quay_db_password: !vault | + ... + +certs: + postgres_ssl_crt: !vault | + ... +``` +_The all.yml file is where all the secrets and certificates and most of the variables are defined._ + +### quay.yml + +```yml +quay_config: + # Merged on top of default API config + Role config file + # See: # https://access.redhat.com/documentation/en-us/red_hat_quay/3/html/manage_red_hat_quay/quay-schema + SUPER_USERS: [ yoda ] + DB_URI: "postgresql://{{ quay_db_username | urlencode }}:{{ quay_db_password | urlencode }}@{{ quay_db_hostname }}:{{ quay_db_port }}/{{ quay_db_dbname }}" + + # GCE + # + DISTRIBUTED_STORAGE_CONFIG: + default: + - GoogleCloudStorage + - { + storage_path: /datastorage/registry, + access_key: accesskey, + secret_key: "supersecretkey", + bucket_name: quay-1 + } + DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: [europe-west6] + DISTRIBUTED_STORAGE_PREFERENCE: [default] + DEFAULT_TAG_EXPIRATION: 4w + ... +``` + +### hosts + +```ini +[postgres] +postgres.dev + +[postgres:vars] +postgres_runtime_user=postgres + +[redis] +redis.dev + +[redis:vars] +redis_runtime_user=redis + +[quayconfig] +quay.dev is_quay=true + +[quay] +quay.dev is_quay=true +quay-ha.dev is_quay=true +clair.dev is_clair=true + +[all:vars] +redis_vm_user=user +postgres_vm_user=user +quay_vm_user=user +... +``` + + +### Defaults + +```bash +roles/quay/ +├── defaults +│   └── main.yml +``` + +The `quay` role also contain _defaults_ where variables such as setup client can be changed, e.g.: + +```yaml +... +quay_setup_client: "{{ groups['quayconfig'][0] }}" +... +``` + +# Program Flow + +It is helpful to visualise the flow of the playbooks, e.g. the `p_setup-all.yml` playbook: + +```bash +p_setup-quay-ha.yml + Setup Quay runtime user + Setup Clair runtime user + + r_role/main.yml + r_role/database.yml + Setup postgres + Quay db + Quay user + Clair db + Clair db user + Extensions + + Quay DB SSL Mode + Clair DB SSL Mode + Quay Directories + Repomirror Directories + Clair Directories + SeLinux + Copy Certs + Unit Tests + +r_role/setup.yml + r_role/Container-quayconfig.yml + Run Container + Copy DB CA File + Quay Config + Config Validate + Remove Config Container + + Copy Quay Config + Repomirror Config + Copy Quay Certificates + Clair Copy + Clair Key File + + r_role/unit-test-clair.yml + r_role/container-quay.yml + Remove Old Container + Run Quay + Daemonize Quay + Unit Test Service + Run Repomirror + Run Container Quayconfig + Daemonize Quay Repomirror + Unit Test Service Repomirror + + r_role/container-clair.yml + Remove old container + Run clair + Daemonize clair + Unit test service +``` + +Then next, you could run `p_smoke_test.yml` playbook to verify the success of your installation. + +# Testing + +1. **Create Organisation**, e.g. `ubi8` in your deployed Quay User Interface + + +2. **Create aprivate Repository**, e.g. `ubi-minimal` + + +3. **Create the Robot "test_robot"** in the Quay UI by clicking on the hog wheel icon on the left hand side and then the drop down arrow and after creation make sure full robot+name is linked with full admin permissions to the repository you just created + + +4. **Get the Robot Token** by clicking on the name of your test robot which is underlined. Again, link the robot token to the playbook's all.yml group file of your inventory, var name is `quay_test_robot_password`. + + +5. **Create Oauth Application** and Token in quay's angular ui. For that you click on Organisational View and then the Applications Icon on the left hand side. You can name the app anything you prefer, e.g. `test_app`. + + +6. **Click on the Underlined App Name**, then on Generate Token icon, which looks like a little cinema ticket. + There you give the following minimal right: Create Repo, View Repo, R/W Repo, Read User. Click authorize green button. Copy the token. + + +7. **Provide the Token** in Playbooks `all.yml`. The variable name is: `quay_system_test_bearer` + + +8. **Provide the test_image** in your root-registry or locally. If locally, set host variable `test_skip_login_pull=true`. + *Link it* from `group_vars/all.yml`, e.g. `quay.dev/org/ubi-minimal:8.0` + + +9. **Run `p_smoke_test`** Playbook, this will trigger all Integration and all Systems Tests towards your new Quay. + + +10. **System Tests are predestined to fail in the first run**, this is to be expected. It won't find the Image ID. After successful failure of the test, + you'll need get the *Manifest ID* from the test-automation pushed Image. Quay Ui Hint: Click on your Test-Repo, then on tags, then click on SHA256 in Manifest Column to get the content addressable SHA from the PopUp. Then reference it in `group_vars/all.yml` in the `quay_system_test_manifest` variable. + + +11. **Run `p_smoke_test`** Playbook again, it should test all System Tests and should test your whole Quay Cluster. + + +# License + +Quay Ansible Playbooks are under the GPLv3 License. See the LICENSE file for details. + +Implemented by [Stephan Kristyn](https://github.com/stevek-pro) and [James Cole](https://github.com/jamcole). These Playbooks are not supported by Red Hat. -The load-balancer configuration is outside the scope of these playbooks diff --git a/ansible.cfg b/ansible.cfg index 4d088f2..da801f9 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,5 +1,10 @@ [defaults] -ask_vault_pass = true +INVENTORY=./inventories/dev +remote_user = dev +ask_vault_pass = no +host_key_checking = false +deprecation_warnings = false +timeout = 30 [privilege_escalation] become = true diff --git a/files/common/ca/example/clair.corp.example.com.crt b/files/common/ca/example/clair.corp.example.com.crt deleted file mode 100644 index b6d6bce..0000000 --- a/files/common/ca/example/clair.corp.example.com.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF5TCCA82gAwIBAgIUG66K8Z4rePQ1MCEPtbJ6tFVH2zIwDQYJKoZIhvcNAQEL -BQAwgYExCzAJBgNVBAYTAlNJMRIwEAYDVQQIDAlManVibGphbmExEjAQBgNVBAcM -CUxqdWJsamFuYTERMA8GA1UECgwIU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFy -dG1lbnQxHzAdBgNVBAMMFmNsYWlyLmNvcnAuZXhhbXBsZS5jb20wHhcNMjAwMjEx -MTkzMzI3WhcNMzAwMjA4MTkzMzI3WjCBgTELMAkGA1UEBhMCU0kxEjAQBgNVBAgM -CUxqdWJsamFuYTESMBAGA1UEBwwJTGp1YmxqYW5hMREwDwYDVQQKDAhTZWN1cml0 -eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEfMB0GA1UEAwwWY2xhaXIuY29ycC5l -eGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALraHJDQ -wgLgT3DMY7/YcmNIt8AuY8Un2z+V3VClvCoUmEZUFs8NE/ggKVVFvpheWVnyJ0vN -PhgCJ8OS8jnSR+/zzbyrq++kDuprwpZARWDvaPgEF5dYOc3IaGGNPV0IS75zE/XB -Oe2m0lzBqWMpCYoH8COK33inh/iQfNHQeucpM0Q+YwA7G376fjTF2f/lv1BNIVvD -PjWJK6mTijXOktMCL7MRRM2tfBTRqQqt7pYR18rQOogoM0o61R4uxlNwonaBIfBd -NCIVVuoO+yT7BN5jWraVL1q4Fh/ahet6SZ7ReRZHqxiFsks6ArMznAYfp/nJcZ7L -/o7Xy4fIlyYA1cXUGa5R/hRh8EKTEXS9mzZheRmUGVVQayclkXiftf/bC90Lz9E9 -6267KMnOGP7C6BuuihUTePbNT+IGdirmi5UehD6J2/cYFpEsjL5vBzJRYIBppHBf -10QgEVnvDa4QndGV4DAyL0c+XYUTIZXYxJkcY7Uxxty+iLYTicqnL5RjQpXc0fdG -CPoB/sNJk3BNVcfaBJ1AFizdkbSZ8x2mCPEz6b2DjdziLuA4rpcH1ewCwWu2g4li -AI3lUbtvsTZio7UuEYe7yeKNSZzeoYJKibBsXPTiAl/TNQ2lPCiYCKrOOpCoiAfq -szBoLy+hvbdeA8L5sMcvIEaA8zxXVmaIIO4NAgMBAAGjUzBRMB0GA1UdDgQWBBRO -h+LGM1JTwqS/ca+aV7kdeDy0FDAfBgNVHSMEGDAWgBROh+LGM1JTwqS/ca+aV7kd -eDy0FDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBuRUywN5Ga -dZIYlWtGdUZzFuXluZjNGN/cpxCI0cE5h6LissnLVpALWx0hNFAGjX+WRH1oZg7d -dlkRLreBhxXTmn3ZWg11yFqMMyWDUMFDkY9XgIU19d6f9E8DxorDo7HE7N/Xup87 -l1tjfLYV+ZByrKrlRuPn6tyTJjtk7rk1ESeAew7r+UYk7u/QpF3niLI3T+Yadm6L -qR3WLIxgrnwVZYT4AsHoJL/HNBtMHUO4QnqLD/61cyxCCJVVp+8ggwfFYI46OC4g -PoOdPf+0utXMCngk5P7nC9jgC25jVwi9zhfyS9O2XtmnGRk924Jm8mJ2cnKk9OU9 -Ccf1lIICaDz+tWqS8uHw9C2ZdEc+yJR88AAR81iOurH1NOX7vm8smhvVgpbB6kDM -nbSBh8tsdpx6r3vIdtlAeHSiwMlY9sH/TMDQIM70oQTAPh4ClxsPNOMPpCHkXI77 -sRkGz2Y9VqZwQQsm7wh2qdw3gKtbl17YlpVg4xY0qNRX5B0Ku/xj5HKDIJMdAjSN -R4ERmRlGConR9ZiKWAy4PfKdgB+RSBdDTGYS8bGUk10z7OdaA7gw394L5hWlFYK4 -unRuBYy31MF/SaqqtoqEAYgGPKElHu5Qp8RcAbeTsuXsHm6WcB8seDPR8zCOgSN7 -4p6/a2wcY5UGhKHTHPlrw8U0MNsiT7iYag== ------END CERTIFICATE----- diff --git a/files/common/ca/example/registry.corp.example.com.crt b/files/common/ca/example/registry.corp.example.com.crt deleted file mode 100644 index dca52d2..0000000 --- a/files/common/ca/example/registry.corp.example.com.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF6zCCA9OgAwIBAgIUdt5MM62yqV6Y4QfCTvanvAjoFIwwDQYJKoZIhvcNAQEL -BQAwgYQxCzAJBgNVBAYTAlNJMRIwEAYDVQQIDAlManVibGphbmExEjAQBgNVBAcM -CUxqdWJsamFuYTERMA8GA1UECgwIU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFy -dG1lbnQxIjAgBgNVBAMMGXJlZ2lzdHJ5LmNvcnAuZXhhbXBsZS5jb20wHhcNMjAw -MjExMTkzMzAwWhcNMzAwMjA4MTkzMzAwWjCBhDELMAkGA1UEBhMCU0kxEjAQBgNV -BAgMCUxqdWJsamFuYTESMBAGA1UEBwwJTGp1YmxqYW5hMREwDwYDVQQKDAhTZWN1 -cml0eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEiMCAGA1UEAwwZcmVnaXN0cnku -Y29ycC5leGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AMl0+LjHUKO+NIQYhA1mSb+VgzHp7kKhtbSfIqxapwg33a849t/Upmfpf1pTP2FF -9nqlksuCDIfuAQG5QK35FnbnzCCwEhky2VyR7TVRE7U58593Jbw2r5iKQ53NfKm7 -ghF5prMAUO7s7KZOhf9IDB4lGShTU7DbmuUy9PlRN9bTwYFh5UsZIhWsbofMQGHD -KWaivzwG5icqZBnH/sLAvc++kALBFf0b2a4JhZDmlOqQg9133/Pb7LeJDKGMhkcf -aPOvcN/fFjxMzAo4JqScgn2GgY4uGIaZ5m/N/2SJoeF/Ke9SB15Y1pWT6T7eJ+p8 -+/kAnJnnjoWwt7be6o90k3itOZUDWk/TZiYgsdViZeupoHw82CKQt4h2cclaeFis -ynWaGyV+4ClA/WQhUt+G77+0ALKMia+LON8TqWFLl67gjtHDsDddu51xcQT6lBsg -wfUivTX/AmwWmyQBz+sBCUvPW4yRhiy+hm5XevEjMcfUmM36mB2s7g3HB85Jysmw -5zvWAovHfbnmfDf5XB46KlIC2Flp4U9FY+VpY3EZQIVqjbVrBi4VuZIrEu4/y4R/ -kYvDMDboWDDmRr3gZJ/BzW7Wrt1YJnbab+fDXIGhPQykAuNTFR685osJltBpxLUi -uMnyRO7eWzWxxERfwSYkJ7Porw77mPUetLQqWXzNU5rBAgMBAAGjUzBRMB0GA1Ud -DgQWBBSlnyxV3dh+QUZI/PRj2Qg2BIIJcTAfBgNVHSMEGDAWgBSlnyxV3dh+QUZI -/PRj2Qg2BIIJcTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBO -UE19GLd4nfNn5OXu5hDx2nVKCB9lgoEJl5dCVAJ9edzQORZ7Tv7s4sGO43kgccwq -boM0ENCg43Nm5tMHQmxUwJWjgatIWovsBXFsOepcO821Pz/6M/BX0eNWkQ0mK51u -iK71RNI/n9BEyxCdVDX265L/WtRJbFVYksmqGjX6S2waWbVCuXRSXH0nkGSximTK -BGuHprWwrVSRyoVGKtmEnsg8mRBmOcoPThgLebYodVo0Q9nrqgH1lWNpPDIOf+ui -Tw+gFIbpAVs4d7L1KvSsDizAAZrnM5ZTbkEFxEWSVFJpaf2hT9QqVWFhUiS6GpAW -Wqrvb2Ixa7tNwjt33pjYswXyniYW3IQnWddrR6zIJiy8Y6epX4f1WKaoYEadXniI -HgfpkqVUNhf3VSgxbB8f5xRpZ0LGOsDERQsg9qisY4MLQl3UQNV1J3JU2vvysFQT -3kDvO9Q2QfhmqiVDbpjA1sJZh9HFn8taHASJsxgYedLm1cWyBJWooPNWqp7mjgt7 -kEjiQVQ5tPkuuXAhQgZCm3F2FDKgVOB6sPpcAg5ds/m/ccrj/atqrPuGCUi1ikxi -KIkiW6GcdH7WOfRahlTZn/0wmOR916S7B8aV1MTNKlxdoPLVHq6chqVOBR42Em+A -QZTIfOqGY4ZL+GGEtxJwA5OaSCiegaTlz9fiat839Q== ------END CERTIFICATE----- diff --git a/files/example/clair/clair.corp.example.com.crt b/files/example/clair/clair.corp.example.com.crt deleted file mode 100644 index b6d6bce..0000000 --- a/files/example/clair/clair.corp.example.com.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF5TCCA82gAwIBAgIUG66K8Z4rePQ1MCEPtbJ6tFVH2zIwDQYJKoZIhvcNAQEL -BQAwgYExCzAJBgNVBAYTAlNJMRIwEAYDVQQIDAlManVibGphbmExEjAQBgNVBAcM -CUxqdWJsamFuYTERMA8GA1UECgwIU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFy -dG1lbnQxHzAdBgNVBAMMFmNsYWlyLmNvcnAuZXhhbXBsZS5jb20wHhcNMjAwMjEx -MTkzMzI3WhcNMzAwMjA4MTkzMzI3WjCBgTELMAkGA1UEBhMCU0kxEjAQBgNVBAgM -CUxqdWJsamFuYTESMBAGA1UEBwwJTGp1YmxqYW5hMREwDwYDVQQKDAhTZWN1cml0 -eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEfMB0GA1UEAwwWY2xhaXIuY29ycC5l -eGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALraHJDQ -wgLgT3DMY7/YcmNIt8AuY8Un2z+V3VClvCoUmEZUFs8NE/ggKVVFvpheWVnyJ0vN -PhgCJ8OS8jnSR+/zzbyrq++kDuprwpZARWDvaPgEF5dYOc3IaGGNPV0IS75zE/XB -Oe2m0lzBqWMpCYoH8COK33inh/iQfNHQeucpM0Q+YwA7G376fjTF2f/lv1BNIVvD -PjWJK6mTijXOktMCL7MRRM2tfBTRqQqt7pYR18rQOogoM0o61R4uxlNwonaBIfBd -NCIVVuoO+yT7BN5jWraVL1q4Fh/ahet6SZ7ReRZHqxiFsks6ArMznAYfp/nJcZ7L -/o7Xy4fIlyYA1cXUGa5R/hRh8EKTEXS9mzZheRmUGVVQayclkXiftf/bC90Lz9E9 -6267KMnOGP7C6BuuihUTePbNT+IGdirmi5UehD6J2/cYFpEsjL5vBzJRYIBppHBf -10QgEVnvDa4QndGV4DAyL0c+XYUTIZXYxJkcY7Uxxty+iLYTicqnL5RjQpXc0fdG -CPoB/sNJk3BNVcfaBJ1AFizdkbSZ8x2mCPEz6b2DjdziLuA4rpcH1ewCwWu2g4li -AI3lUbtvsTZio7UuEYe7yeKNSZzeoYJKibBsXPTiAl/TNQ2lPCiYCKrOOpCoiAfq -szBoLy+hvbdeA8L5sMcvIEaA8zxXVmaIIO4NAgMBAAGjUzBRMB0GA1UdDgQWBBRO -h+LGM1JTwqS/ca+aV7kdeDy0FDAfBgNVHSMEGDAWgBROh+LGM1JTwqS/ca+aV7kd -eDy0FDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBuRUywN5Ga -dZIYlWtGdUZzFuXluZjNGN/cpxCI0cE5h6LissnLVpALWx0hNFAGjX+WRH1oZg7d -dlkRLreBhxXTmn3ZWg11yFqMMyWDUMFDkY9XgIU19d6f9E8DxorDo7HE7N/Xup87 -l1tjfLYV+ZByrKrlRuPn6tyTJjtk7rk1ESeAew7r+UYk7u/QpF3niLI3T+Yadm6L -qR3WLIxgrnwVZYT4AsHoJL/HNBtMHUO4QnqLD/61cyxCCJVVp+8ggwfFYI46OC4g -PoOdPf+0utXMCngk5P7nC9jgC25jVwi9zhfyS9O2XtmnGRk924Jm8mJ2cnKk9OU9 -Ccf1lIICaDz+tWqS8uHw9C2ZdEc+yJR88AAR81iOurH1NOX7vm8smhvVgpbB6kDM -nbSBh8tsdpx6r3vIdtlAeHSiwMlY9sH/TMDQIM70oQTAPh4ClxsPNOMPpCHkXI77 -sRkGz2Y9VqZwQQsm7wh2qdw3gKtbl17YlpVg4xY0qNRX5B0Ku/xj5HKDIJMdAjSN -R4ERmRlGConR9ZiKWAy4PfKdgB+RSBdDTGYS8bGUk10z7OdaA7gw394L5hWlFYK4 -unRuBYy31MF/SaqqtoqEAYgGPKElHu5Qp8RcAbeTsuXsHm6WcB8seDPR8zCOgSN7 -4p6/a2wcY5UGhKHTHPlrw8U0MNsiT7iYag== ------END CERTIFICATE----- diff --git a/files/example/clair/clair.corp.example.com.key b/files/example/clair/clair.corp.example.com.key deleted file mode 100644 index 5c809b1..0000000 --- a/files/example/clair/clair.corp.example.com.key +++ /dev/null @@ -1,167 +0,0 @@ -$ANSIBLE_VAULT;1.1;AES256 -33656332383061363531393062323431303136353037653330353362363336386336636137363535 -3137613236666231313536643231386363326166303931640a613939616530646435643437613534 -36633937303063616434323935636238303330653036326630373464323862393633613861393333 -6262393935313033630a653731383566353763393664616339616564373936623832366431316662 -32306436663535383664303938663531333734346137396433636231336535303861333734333337 -66373132356233316463616235333130663739656361653639323132396164613839396532626231 -64633037336635666434396331366161633130363037373833383531323033626135633863323266 -35636131303263623230643133353538343566396339323733363766323465326132643530336531 -38383531376533333561373430623130353634323564303532646164623334333837393263376239 -39383161386134666662663936646661346263613738313362633432383730643962623038393963 -33343837306236373338346338626361346562343066363434663033303566366436666533386636 -34613330613762636561313966373130353235393363636262636234343737336430636638643235 -38393238303635396662313631626461343465353632636361653161323132396437333363303164 -64623534646563646132303738653433303431393565353830313030303361383338666138646130 -62383539643634326333373433636466396566366433353936613365376364626163313238333234 -32333531306436383962396637316162343437366635386537643366323436636566316632363066 -61313133663536616133303166633535663836323665663861363364616364336261306433386132 -35313834633263656133386162333662363763633464663238333465333864643536636264303431 -66623263396264316231303061353637353439303134646432363362336134323333613863613364 -31356137363362323863653063653066653664623434326437376639616331373362376138346138 -38663236316138656632383662643531326239653838373739343637383839396230336137623333 -32363662373164623033613439393033633537303761313966343461633139633638613463623262 -34383664373964346435373436326132383565343262353235613633353536363734613065663034 -32633033333639653261643432313361316339376562663836376632333363333938383963376264 -34376661363063346136633866383638343536656665376437306633366437373939343938323635 -64613830333237326434376266393662356461393630613266336537383033313233383464613034 -39353132313036336265323661646531613237326561663836353631626436366462386234353532 -63656463303839323735336464626661663933356137613135663966313731633437353931353732 -30383337613337393633626432323362343862636434613933373735303932646164636531323937 -64663338343039643337373366613266663634323336393237323331656436333639366638376666 -66336262653131373161663030383733663764616438316366353139373362646138393438353762 -63386239613830343537306134626261396535353363666339343138376436353162393230393766 -34663331636535326432333663306335613535333863363231623532393034663338616333393632 -31623830613762343662313464646262663765346337393731666436393131656337646665656562 -62393533356131633430336230636265326562393162626134396539656132373938326663333266 -34323232346638333636353666633466343939373663306235363365353665303965373030616330 -62663339303066333034663933336163613332616565346134356430353031623835306432653136 -64373031376130306365323366633161663139396339343062303636323932343137386438386362 -30313363616163376233396235636335623066336265376630653664633161303966396166363532 -64626532636638333837336432386135643332633365653462623635626232316338646563393938 -30653233326261663634363137396161353031643566343039633535306235363030663262663539 -66373337346634366532663633373037343530396565366237383163643830346337313434336338 -64386365346130376635616230666666373235396234373338316435306433363533366137643338 -33323762646430373961346161313838386237323361303861326333303835643663353530343134 -36303631636566616433303339303035343731373563643366613731386264316664663938633363 -38386662613462343465623339396131646533663539303833633133653964643633356335343831 -36663765353433326262346538613234646132626332313138373262376330393363343966373738 -33656134376632656435663935626239333933306336396331653339633033616233623561633035 -36383034303666326636313161393738373733326461636132313762323465346462656433333037 -34653564326663393737306538633733343735373932333161633333656637623039326261313433 -65353266386137363936373162316338343937393130333565393139633662383539666461353337 -36333864626561356665643537616235353462313861383464363761313264613539363130306638 -30666566323066373635643362323063656132353566666162363466333537323237326337643266 -34616463336231343237613338393238356639653265386632323339636232316461316539636631 -61626563303265656131626435363334643935623238346339373961656238336438306233613761 -64326134383639373138303062343834396133343332633636303064323066343365666538333135 -65646537393661313831643234366331613361346437343865656631366261343030353066366532 -63316266366132616666303566646435336639343562396463343833363632646431373431643933 -63616630656431393434626638393163653934326437366330633665623333663164383735346236 -31626135396335323863653436316132303938326538616135363638633631616435613162393934 -61326266313230613436636633666462653134366430323237663137393665363862393936313761 -62613761366261323930343965306361626566306437346337373330363038373333613765613262 -65616634623762323938653432633163303164356565613565313831343264633931323337613537 -39373064643732353731623331643435376236306431633032316535373865626630633733386534 -37653065613662303335396435363032653834353634643766326233636232333663313265643838 -61633639353763343736343431326664633837316232373161396361646565383263336162303030 -63313330313138356136383639396238626430666261303439353164333962393731396461643532 -66363931346631313666633731653661373265633633333761646534366332626433326563316136 -36343836663536313139313634363130663536366430653162356161383262316664386136363062 -66623762363361633931383535656132343635643836323435366638316562393336353830386361 -35626139353637343161383938663236356239323432346431623838326364616236633635643633 -61323364396535323532313731343964656135616361353763393034343662626266656530326662 -31623938363562623561343533393062333337363461643036373863383866373535326330373537 -38663462396337613131633939336562363038326365313365333762303639623434393464633432 -39616336376165666435303738356537623230373630333239336439363630653763633964623265 -63373230393166356235623032356366616664373039343130623030613034643736653338306638 -34653765333536376137653162323132353136303063626234333632653765616561626236303164 -38323838373065376539396232326531326631313635656230616362346565643732666539383035 -30326339363438663036393533343561303762613661386635646535623766633838626663373663 -65643037666365336336313833356539346366376138656366393464393764626639643064633731 -37343965633065366432306438363464393365396263623536303433306330356136383439343664 -33663537303666343037336231326331326264313933643039306561633735653836323635306634 -30373666633862646462666339613230643333663131356433636535336431393161333466396231 -35376538323938383236353931626534663731323264396437323531353566393263373161653736 -31346531386534343461326538666263663363313265316438643939323530386563383661646332 -64663461653464336537376630353664333136646461663966373835356665633532613564643130 -63313438643765353035376537363963613166323366373963303364373265363139343831306664 -61663233336164356131383334353262623436353731313562313763666533363034316638313034 -39373138323232636664613363613433323037316634643261363939366665383965366135663039 -30343032376561643130373262666637303532306538366636646132376630343964656262616236 -65656338636430363964323364646466363833393965633166343364343535613737633138336163 -31623536633334663630643462356634386463633631626335643863633739336430383331306136 -66653666633937623664356564366535353737376535653832313339353638626431333962353566 -66663963396537313530363033656136656461393036343865323631393638316639633266303336 -36653361613533333831323130316436356539366430343039346463393965313238373233343038 -62613763303135393138373736386364663161373830626162656130363734663235653531386337 -34333632633432656163383739393364663861626336633366386132633536383532613037636261 -37633733343736303536613632303530653966343938653434316361343639633730346431643238 -33316365336432643465393638666266653639366163306366346561616431633663636566323933 -37316636633932323139303234373339366639613837343732636664623738643133303031393232 -35656261333230626135393137666361383361353337313166616465623534373631326438343938 -38336632313565366638316339393734326237373535383763366139356435643837376164393931 -61626432303337613831313235613138663038343264633235313461353238306336646134333330 -30623435623363343264323439663762333431626234643866623066313530353562383634643630 -35333532303036323534653436343737353062383165363937383736643138343065303631663134 -32346639616333343465366435393535633736636638393939326338343266643961303638653637 -38343733383933623733653033653064373365663436643635343832383137313639383731393930 -31643364643532636538663832633238636130333931323563383835393965346333633864386430 -62383432363566336266633734333833366432616434383537393864633065303433623461333266 -38386534663933656464353431386439393139363831613864343966323438346131646565326337 -33346532626430663136323230656236356538643261306662323434323337336564333030636438 -34383135666135333230383635343036636637393434313837366362613633336362373766326465 -39323961363234393562383661633532626430306138613737623637313761343139333962316235 -65646438383338646133623866366536383930653039363765323661303538353837666133373136 -39363136623065386138653937646265363031383136623733323838316364383933313565366632 -32613935333131306231643931636361323835666233666663333937333039663266333834356335 -37663430356162636638633434346531306339363266353635616537333362313930333739623961 -61656162346166613235303430666337616431376135386333623961306638313731663134323238 -36656663343866373562353037623436633535633062386336326262616439343737356561373030 -35363634326430336436383535333462356439316433393162383762303566656630333833333639 -37656236303164643130643133343930386433333063306161653265346138623133623436646266 -34303032303363323931666563343339356135626337653037396436613239366339363764386138 -32623765623332396666633235666435653164636433396562386434393534363166376534386439 -38346431363664393036353464343532326439343737373233386430336636646531313032653535 -63363162323939613939316263613463613031313262393536663565343033393634316164353531 -31623863353465313538326364303366306436366366613461313730386135646232626236613835 -39323261656532323030643731343065613733303465333838643230326437643432383362313535 -62313434623338326339323264353139656261383761333139396639396266353630386631363931 -33663335373737656431393262333761626335353435373365346531616233633131653233393932 -37343961623133366135333162323037353033353961623337313264336363373964356362383362 -38303337366162613363616663323536326332356336346631623863383033323565333039333461 -66613663636661343062386230353838626431626339336663656662623738626562646532633161 -35353032666636623031333737336339326632343238623838666335613931343539363638656430 -36666333313536303666326338623432383939313136376364626264656631356138323235373863 -35653435346138666266303366333866633531646265633962613537643138623330316433643630 -66396462316230643832346431353461353332346135373065626566356636386665336638656433 -36353263336632303366373337346264643733616233383736313933343737663739363433633633 -37613866383134613739316133353262313235313566303735653232623438613636396631623662 -32643463663564616132333937666338626433643436366239366265333030663161393732343438 -34353833373239303566393138373265616631336439633437613030383235346538386131633366 -31633330643136383637653531396165353230653862343065633539383466323761343365373066 -35633934323064653935653838383230386166656264633137323239623531353564356231363565 -66346330393864313034383065653966663665343334396164333366376362346435653936663938 -61623631346131656462623936613065306665653138373036626439633166643862623939383530 -36343862326338666139393536333862643333636437666237313132663132353562663539386633 -31303162666561353062306665393665636164616434616335363761363834346635306433646330 -66363363303438633030613834363462646261323036333962393461633163343430633634323565 -38333734356333376539303363353031386534346562343464303766353339383565373666323833 -37653738316630323738643165316632326431333030336237373131383539343732393032376431 -34303261626261306462356630666139366633383132313335323038653838346665353063323865 -65333362366230353733646632663836333064653335383237666663343232653632636231666333 -30373038636466376266303438343231656139623337353136303865353836623032646136313238 -30313638353237336361636638313835316634643534393334383032323066643534306263663430 -63313034653066616462313933323361333830393439373639316566353437646137366637303838 -35623838626237353030383432636530383638326465393262643265396162376331306132313766 -30346539623230613361653061353464346332636632336434393466363964316465303965336665 -32663262376433333737643536376337626266356536363661346662336234316636313839313138 -33343361643736623439373534373838333332386266366538393131373961666337643761366631 -64343434663566653761633865636539636161313138343661643934333539636432316332623335 -31633130333630383532366465656630363330376435383834353338343830326461623938636265 -63386162306535663366316465343265646164613638643165663162636332653132323135623439 -66643862656539313735626232356330623536633233613830323936353339616665376237353762 -30356537663163346230383662313735653332373163393838306533313662353064663261306163 -64383934393434373738376134613565363233656334383462386563323462323064306138343832 -63633838376632396436393038343638336566343138316431636635333139333263623331643864 -3362613034346563366565363165633466623438313263643466 diff --git a/files/example/quay/config.yaml b/files/example/quay/config.yaml deleted file mode 100644 index e446a17..0000000 --- a/files/example/quay/config.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# Merged on top of default API config + Role config file -# See: # https://access.redhat.com/documentation/en-us/red_hat_quay/3/html/manage_red_hat_quay/quay-schema -FEATURE_MAILING: true -MAIL_DEFAULT_SENDER: is-monitoring@example.com -MAIL_PORT: 25 -MAIL_SERVER: apprelay.corp.example.com -MAIL_USE_TLS: false - -SUPER_USERS: [jcole, somebody] - -DISTRIBUTED_STORAGE_CONFIG: - default: - - AzureStorage - - { azure_account_key: "{{ secrets.azure_account_key }}", azure_account_name: quayblobaccount, azure_container: quay, storage_path: /datastorage/registry } -DISTRIBUTED_STORAGE_DEFAULT_LOCATIONS: [] -DISTRIBUTED_STORAGE_PREFERENCE: [default] - -AUTHENTICATION_TYPE: LDAP -LDAP_ADMIN_DN: CN=ldapcpsvc,OU=ServiceAccounts,OU=US,OU=Enterprise,DC=corp,DC=example,DC=com -LDAP_ADMIN_PASSWD: "{{ secrets.ldap_password }}" -LDAP_BASE_DN: [DC=corp, DC=example, DC=com] -LDAP_EMAIL_ATTR: mail -LDAP_UID_ATTR: sAMAccountName -LDAP_URI: ldap://ad.corp.example.com?sizelimit=0 -LDAP_USER_RDN: [CN=Users] -LDAP_SECONDARY_USER_RDNS: [] - -FEATURE_USERNAME_CONFIRMATION: false diff --git a/files/example/quay/registry.corp.example.com.crt b/files/example/quay/registry.corp.example.com.crt deleted file mode 100644 index dca52d2..0000000 --- a/files/example/quay/registry.corp.example.com.crt +++ /dev/null @@ -1,34 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIF6zCCA9OgAwIBAgIUdt5MM62yqV6Y4QfCTvanvAjoFIwwDQYJKoZIhvcNAQEL -BQAwgYQxCzAJBgNVBAYTAlNJMRIwEAYDVQQIDAlManVibGphbmExEjAQBgNVBAcM -CUxqdWJsamFuYTERMA8GA1UECgwIU2VjdXJpdHkxFjAUBgNVBAsMDUlUIERlcGFy -dG1lbnQxIjAgBgNVBAMMGXJlZ2lzdHJ5LmNvcnAuZXhhbXBsZS5jb20wHhcNMjAw -MjExMTkzMzAwWhcNMzAwMjA4MTkzMzAwWjCBhDELMAkGA1UEBhMCU0kxEjAQBgNV -BAgMCUxqdWJsamFuYTESMBAGA1UEBwwJTGp1YmxqYW5hMREwDwYDVQQKDAhTZWN1 -cml0eTEWMBQGA1UECwwNSVQgRGVwYXJ0bWVudDEiMCAGA1UEAwwZcmVnaXN0cnku -Y29ycC5leGFtcGxlLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB -AMl0+LjHUKO+NIQYhA1mSb+VgzHp7kKhtbSfIqxapwg33a849t/Upmfpf1pTP2FF -9nqlksuCDIfuAQG5QK35FnbnzCCwEhky2VyR7TVRE7U58593Jbw2r5iKQ53NfKm7 -ghF5prMAUO7s7KZOhf9IDB4lGShTU7DbmuUy9PlRN9bTwYFh5UsZIhWsbofMQGHD -KWaivzwG5icqZBnH/sLAvc++kALBFf0b2a4JhZDmlOqQg9133/Pb7LeJDKGMhkcf -aPOvcN/fFjxMzAo4JqScgn2GgY4uGIaZ5m/N/2SJoeF/Ke9SB15Y1pWT6T7eJ+p8 -+/kAnJnnjoWwt7be6o90k3itOZUDWk/TZiYgsdViZeupoHw82CKQt4h2cclaeFis -ynWaGyV+4ClA/WQhUt+G77+0ALKMia+LON8TqWFLl67gjtHDsDddu51xcQT6lBsg -wfUivTX/AmwWmyQBz+sBCUvPW4yRhiy+hm5XevEjMcfUmM36mB2s7g3HB85Jysmw -5zvWAovHfbnmfDf5XB46KlIC2Flp4U9FY+VpY3EZQIVqjbVrBi4VuZIrEu4/y4R/ -kYvDMDboWDDmRr3gZJ/BzW7Wrt1YJnbab+fDXIGhPQykAuNTFR685osJltBpxLUi -uMnyRO7eWzWxxERfwSYkJ7Porw77mPUetLQqWXzNU5rBAgMBAAGjUzBRMB0GA1Ud -DgQWBBSlnyxV3dh+QUZI/PRj2Qg2BIIJcTAfBgNVHSMEGDAWgBSlnyxV3dh+QUZI -/PRj2Qg2BIIJcTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBO -UE19GLd4nfNn5OXu5hDx2nVKCB9lgoEJl5dCVAJ9edzQORZ7Tv7s4sGO43kgccwq -boM0ENCg43Nm5tMHQmxUwJWjgatIWovsBXFsOepcO821Pz/6M/BX0eNWkQ0mK51u -iK71RNI/n9BEyxCdVDX265L/WtRJbFVYksmqGjX6S2waWbVCuXRSXH0nkGSximTK -BGuHprWwrVSRyoVGKtmEnsg8mRBmOcoPThgLebYodVo0Q9nrqgH1lWNpPDIOf+ui -Tw+gFIbpAVs4d7L1KvSsDizAAZrnM5ZTbkEFxEWSVFJpaf2hT9QqVWFhUiS6GpAW -Wqrvb2Ixa7tNwjt33pjYswXyniYW3IQnWddrR6zIJiy8Y6epX4f1WKaoYEadXniI -HgfpkqVUNhf3VSgxbB8f5xRpZ0LGOsDERQsg9qisY4MLQl3UQNV1J3JU2vvysFQT -3kDvO9Q2QfhmqiVDbpjA1sJZh9HFn8taHASJsxgYedLm1cWyBJWooPNWqp7mjgt7 -kEjiQVQ5tPkuuXAhQgZCm3F2FDKgVOB6sPpcAg5ds/m/ccrj/atqrPuGCUi1ikxi -KIkiW6GcdH7WOfRahlTZn/0wmOR916S7B8aV1MTNKlxdoPLVHq6chqVOBR42Em+A -QZTIfOqGY4ZL+GGEtxJwA5OaSCiegaTlz9fiat839Q== ------END CERTIFICATE----- diff --git a/files/example/quay/registry.corp.example.com.key b/files/example/quay/registry.corp.example.com.key deleted file mode 100644 index 0fcb737..0000000 --- a/files/example/quay/registry.corp.example.com.key +++ /dev/null @@ -1,167 +0,0 @@ -$ANSIBLE_VAULT;1.1;AES256 -62303464666563356133353133393533396464353739346630313334633035326234366338636433 -3331656665623265623161623265646165366666323536340a396431333637383638313335333134 -35366332316633323030386265386361623436393139323632623738613162353563393636656362 -3261336364623639310a333561616564646139653634306531333738383137613433373030623162 -63366561326563656432653934393933333139636162613439336232626164306533333738393062 -65386166373664613662363566646139633933363262366234646565346638376630343436353364 -61666435303633666138373366363139663933353762616566303535643238323634366337356261 -32383364303462653839353665666430613237373730353237336162643038333634626632353565 -62303132386461646265306264626165333838353131373336653139366137353138656139383936 -31633932613538633833323830303332363761356339396361643337353236643265396465373734 -38653434333730373562336664643761623165353766656537336632363030636164623939363032 -36656235653266646266633336643261363034646134666638623237386339323435613637353638 -63326464626339666563346366646663393634633638633666366332346237373962333566383665 -38663663323761633336353736636139626464346632633034396366376138323062626562656133 -31356338383035633934633264343132323930346564393232663265396230393338616435373863 -38316434643336353438613131306633396164336562316566616431333864663163623938363239 -38636631656564303837666138633534373662306432326430383737663366666434643765666666 -65666238353631636532336538366132353763623962333432373332313866353333643061393539 -65366262336161653232633532656364376437316632393865656364616433326166306435326639 -39306264666237666363643036666433323564646334656438626537666562393636326335303662 -63656364663639643365623165633932333130353163383534333763306431366330666231346630 -61336339646636633034613531633862303266646464613137303434393835653030323363396133 -62333237663236386639363236333437316536623363306633313634313461396366306661623230 -65666432306639383965643133383139346336373565323564313262386431363033343730343764 -32643932633166346534306138303136363238313265353363323133653966316334666533636163 -61353266366533323334333864663732363737636130663865346261383261316262396162663830 -65313765613866643030306334346165326139363961636336306164373836323434643962343461 -63323963663635316435613530306562336566306438323762663261383665393638396531376432 -62643436343165353564316536346365613534306261393436343239346532343837666163373364 -34396633303639623939376464656564303430323163646434316631353464653663356263333462 -39386166393266636536653934336662373465366639303262643162316662353239646335393064 -30653561336465316433653863363031626461616431303638356365373632303734653066326237 -62353266336264393731326265636666653164326336333166393031636531313666633665346132 -62653136656233376134333766376131333261303965663962393233343733346334303634336232 -30363036656335353965646339336133646538313837303339326162346636383062323834653834 -39313961613836653437396666376364376530303635323763646666656436303361306665393231 -65383663303061386131353739663830326234656532323135363836383364313534363733663134 -36623661393633646466646439336162646638623235653639623161353164613131383430323563 -31653761636236633038346438343563366236626638653339356431626335333465313434616232 -62393637653735663535353133343637393038613064343262383937343139373937353366336666 -39326237386363343331306234626336383865333635373765626131323336383262373961656136 -37633739613730353066383833623037366263366230316461353630306462306139623762636664 -35366439373232633661313832653837633034646665616564303133383964633039636264653236 -35323365303433663830306138343562366361616266666530346637343335353130306435626266 -65386235303938653934333363666432666663386236303137393063383465633530326564666232 -63346231626366616430613537613333623839316336366633626164646166303231653637383938 -62373831623931346365353830633131633337643336393639353666666230373434653136353131 -31653866326534613261316538646531383762666164336261646632623264303134356437343462 -31383934653631336432333635366264373566343463383632653838366338353837643137656630 -63323961336666343733383165326262336136393232623030383963386333613836353831343664 -35333636303961383236623539316338303136323233633264333038343636373462646234353334 -33363236663666313563316461343530353462396432373631363736373366393163376238303561 -61666266333833303534343937646264333438633462643435333862646266646532383162373062 -65653936356235653136393463366261653161353762613635663830353466653830653465653836 -37646635313830396431646430343138393833633832353234643561663236386238376131643964 -38313037316338373635613231656234663535303030643439643961373332313761346263373464 -61333063653461373266356337393436613230393862633062656264386432386536613833646662 -31313765336236323437316166333265303737656462623264653434633131353932633466613238 -36363162656337386437396565316166366438393532643439333539303437303665303039613337 -35353866613165383532646239653536353139323839393661346635346632386332626562633361 -62306239313636343330633661373335613130366531386631303233396162613333656162346562 -63346538366166666665366537646436343734396566373635353263343864313037323238386235 -34333833313032626265306135613239396535363136653330343234396538333566346562616462 -35313764643563333562383331613262663730336465303839393964346337616535656335323634 -65313939643336613362396532396663313535663562656666326138383631323038326433373732 -63343437353463303263303365636265396638656238636164663239383365373262326365393932 -39313262616238373862646430383465663966386439616339636637646563313763613762386534 -34643232333138663132383238313234626636346566613465636536373935663839636138373261 -36386263376230663564386536363639643238613462323534326336666136646666363930376464 -30316439383739643734353133323965376130356136376463393763396337626131393864356332 -31336661343539336361336637656137633733346330653661646439613465616538646534346664 -32323064343534663930356362333135613865366166373566643430366164323466663934616338 -61353565366337396436663263386562393934666130616639396264663962333836326538666636 -30616566336262636239343238306562656439613163376331666463353834363061616433626537 -36613832353334343231626232353634363337323935643163393839393833346532376261633065 -66666338393265643831393839623238653063616532303939386664313565306338333833343662 -38653266363263316131646362643937346561356337393564386235393835646332376539633563 -38353831326536323163313237623964316637646138653733633962376265313739313034356131 -61353061356463393765663334663061313732616262333166356161613263663463353039383630 -36626464643966356139653531303337613131623566343366373335393261656536663765326234 -62303033343431373939363665643038343061353263313239616136303630636231353161613466 -33333865393138633630646562326565383665656133643835396330386234633866633338626137 -38326266613730396565636161386334306432386337653765346338353162386432373234376265 -62373936383462326563663163333264376132663266333461393131653035303536626231666130 -65333730313462396238616466626332303365653838366235666564353034663863343765346566 -63663365623031343235633966613365623561656135653334613763636363323536663539326265 -64303065306463656363656435346333343034616530643262396162646363623837366137356635 -32393263323864396433343339656339366333383739366466363635323263663939326265363462 -31633566663630353966323266323365323839353763613062656661313233343338313835333336 -36326638663131373762303834333035323234626632313736643235656662653339633533643166 -63303565646132666665353665376661643265383636616337333338343433353565393530663939 -34613934646430363232303066343436663162313162393337613863616431323537616533393261 -34336566383562333165626230363961323430393535333561623163353266306165613238316363 -65636533303433393562646362356633376435386533376433646461306566373965613966633636 -35396532313236386261386333383638343161376133313363303636643162303664656332316231 -34326230353031353135323662616564656431653335313137303435333639666231616564356334 -34313265336132656332323366613139623263386563383330616565383531376333376339336561 -38383036366430646466653537363738653230613263666237326536376133316632333430386364 -31653032656262623938626239323437386631323330383936343664323230363237653734353334 -61346334633338376462666432303134303339633830656465663366656362366233383566623563 -37323435333836663332633232303638623261323836653734663164343330316162643334323835 -61303135393962633239396663633537323232616163633334383262333564383537646232313736 -33383839613566353064313931366237653135343131373837613636303935316631663039336461 -33616332653762636435376664626261303061643435396236326433316137383364383237323834 -34326531636662383034633930663333626533396336323134373162656265346366633037653231 -61353163646237626330623261366262393139366132613562653865363963313838626239376265 -33363935663565393633336630383863353432396238323164646232393730643633366333303264 -61363235313631633535396138366535656265396663376434376332636633633762326539303465 -63643333616365353464636430383733393833373536643862383237336535373430623362623366 -61326235393337653838306163646364376235663061323062626235393766373861643733343030 -32316538643062366632303636363939356465333732376530333838356363383963313036346333 -34326533663835343130666335636231623236653833653531633266333331393333313037393337 -62356661366532323435646663323336336363363936666563386531383661386332356664346561 -34666437333138363239323362366136313064383036626163383937363934323761653065396534 -62643432393065643335666532623235363333343466333434313332373934633537663130613061 -64306431323331653431613764373439626264363366356262616165356538613365366661613637 -65633830313032353061653237313134666163626634323161346234623138343637663336333237 -32663634623262663333626663636665383938643566376238356238343163633732343832366664 -31383934626431303137333037326432353565323963356365316639633838366662646533623163 -66393037346535343839313535333366633531356266313532303734356238313131656564396433 -36613037323933653261356465353535326537653839393665336461653333326237656230366437 -38656664663636646464366332383561373830636136336136346139383335316534303661383737 -30346131623532623665336237633263383632626565636165616539333965356362663039343735 -62396533643134323661666335646563333734336334373830613266386131316634333932303264 -32663432383832303464663262376562623535356431653034306434616436623830653533633364 -35353334653635323338343363356362613861373966393537323736346263343330333331346135 -65663265393861643930363236663262393235363864633538363633626364636437323137653439 -64316237363230343561343437653233363835623032613432353436323530653864373133356362 -63333836353930656232323737363637376237646332383337346463373332623964326336343361 -35363936313665346163373233643561633164396535303863666234363538373435656431323763 -39636365656338393665623163616661366637646631383038666262336436333864666338336235 -32366432363734653834383562636236656339633739336362626630396261353535653764643632 -35376265376538623366333738663730373633306231346430646536643066323465333030613030 -37323132316134656533636664646237313065356639333732633735393730623431643432356538 -34353530396431316664626237333630623063376633326631653761323762376237343032353632 -36383136396135623530646565303530646337626464386634393364626563353761303362393231 -61356465626662306462623133313338373033646463376233636364326534336139336434323839 -66626538306535656433336333343935626438333330323439356262643633363235376636336235 -39643833306137663662316264616333383339313535393139646139623765633661376230373936 -62653130396633383966393933653662363666393736613638386639353961636534353562363838 -38326466333764636461666166646164656233333762313139613431363232343933326233623436 -35306235663630323631346161383538333635636133306633326366323730323466656162383165 -65323234346461623438396433313236326564346161323831373461626663336565376365386364 -34376535343131653364653632316533613435343538363630353736616262373837656438393861 -39656138333065396665376331313933336462396432303839653034343364346661306336626433 -31353862346237323033333666353635386232333239623762353733663935613365306636316637 -32643462313866343333313162363532313232323037613830343336383638613833626336663539 -31663161333763336635383434393463316336363663653530343030616339666665303031353532 -38616264353730313436353961333530613234623332313965396363323464656566653563613931 -66323361366237383666396663313865386532633233373666346165376631353237353339316365 -39386334666537376563393232353563373962653134643233303739663030366465333931303866 -31636138636266306136343737326264366636363966393534316661653762393935353433383461 -34333066663134643234306232376162326235373661663937383330643838663665396261383132 -39623866626562353634343834633762353165383630646431313836346332313039643039343539 -61633861363634303534633130646136333531333034663732326566326565336365636437353436 -37313734373337313163663031336162633665366662323362663530326131653934376662623835 -32653666393061316239333738663162646338356330643133346663346437346538613431613564 -64373435643664343563376465666238646266323830333933326661376336333730633637393134 -63316433623033366634313031303064626562353636643861333561383564633233663061363238 -35386135323233343561616331643364353331353764373464346166666234376239323336383930 -65393530643831396638613231633834306363346535643462353339383939663837653862383631 -66303038643561363139363936373335363334323063306364353662616163386664326635333564 -66383338313863653436666466303937316464653964336638313964643863353963386534356236 -30306532616331623935316335663264666535383936396562383361646362623361343630306433 -32313133383733663866663536613263393430633239363366353963613965376562346230333564 -3433343630373565656630356530613765323038613430373465 diff --git a/images/clair-ha.png b/images/clair-ha.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac33c136331d253acccc0b2da6832798c1472c2 GIT binary patch literal 194580 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