Compare commits

...

1024 Commits
0.7.0 ... 2.8.0

Author SHA1 Message Date
Sandra McCann
06c0dd96d0 Remove TOC and add link to published docs (#1526)
AWX Operator docs are now published online so removing most of the README and adding a pointer to the new docsite.
2023-11-20 23:22:29 +00:00
Hao Liu
e6b11084db Omit storage resource limit if empty (#1637)
We discovered some weird behavior observed on later Kubernetes version (OCP 4.12+)

For some reason why we apply the templates postgres resource with

```
postgres_storage_requirements:
  limit: {}
  requests:
    storage: <x>Gi
```

the `Create Database if no database is specified` task that does the k8s apply will always think the resource is "changed" and proceed to cycle the task and web pod

This resulted in AWX pods being continuously restarted

Update postgres.yaml.j2
2023-11-14 13:41:30 -06:00
romankuzmik
669fe1d253 1586: awx-operator restore from PVC is not working (#1603)
Co-authored-by: Roman Kuzmik <rkuzmik@cisco.com>
2023-11-09 09:39:27 -05:00
Hao Liu
e4cfa2f809 Fix operator-hub publishing automation (#1630)
Rename TAG_NAME to VERSION so it's no longer ambiguous when running hack/publish-to-operator-hub.sh

Checkout awx-operator at VERSION with fetch-depth=0 so that `make print-PREV_VERSION` will be able to actually find previous tag
2023-11-08 22:04:28 +00:00
Christian Adams
7251961bcc Add ability to mount custom volumes in the postgres pod (#1626)
* Add ability to mount custom volumes in the postgres pod
* Fix indentation for postgres_extra_volumes

Signed-off-by: Christian M. Adams <chadams@redhat.com>
Co-authored-by: Hao Liu <44379968+TheRealHaoLiu@users.noreply.github.com>
2023-11-08 15:44:30 -05:00
Hao Liu
3a5fbb0b06 Fix PREV_VERSION variable in Makefile - again (#1628)
Note to self: stop multi-tasking
2023-11-08 15:06:17 -05:00
Hao Liu
a69ca7f8b5 Fix PRE_VERSION in Makefile (#1625)
* Fix make print-PREV_VERSION

* Use latest Makefile while running operator-hub publish
2023-11-08 16:40:24 +00:00
Hao Liu
0fb252b6e4 Fix operator-hub release CI when triggering from release (#1623)
Fix operator-hub release CI

When triggering from release default values for input is not accessible
2023-11-08 09:22:27 -05:00
Christian Adams
718e5cfcb9 Add sample AWX CR with resource limits for environments with Resource… (#1554)
Add sample AWX CR with resource limits for environments with ResourceQuotas
2023-11-02 12:54:15 -04:00
Hao Liu
a8153d5ffb Automate publishing to automation hub (#1616)
* Automate awx-operator publishing on operatorhub

* Use scripts from workflow branch
Previously it will use scripts from the release tag to do the release
If we have to fix up the scripts for any reason we would have to retag
This will allow us to modify the publishing script without having to retag the release.

NOTE: the commit in this PR was accidentally pushed to `devel` directly... merging this PR just for the record.
2023-10-26 11:27:49 -04:00
Hao Liu
7b0a68c2f4 Use scripts from workflow branch
Previously it will use scripts from the release tag to do the release

If we have to fix up the scripts for any reason we would have to retag

This will allow us to modify the publishing script without having to retag the release.
2023-10-25 15:46:35 -04:00
Hao Liu
1c89044be4 automate awx-operator publishing on operatorhub 2023-10-25 15:27:18 -04:00
Seth Foster
15ed13dd8d Fix supported_pg_version (#1614)
Signed-off-by: Seth Foster <fosterbseth@gmail.com>
2023-10-25 12:47:24 -04:00
Christian Adams
f2ad70678c Bump kube-rbac-proxy image to v0.15.0 (#1615) 2023-10-25 12:22:10 -04:00
dependabot[bot]
2ec77f1e7e Bump pillow from 9.5.0 to 10.0.1 in /docs (#1608)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-24 15:28:54 -04:00
Hao Liu
aa7d0b9918 Fix promote workflow (#1613) 2023-10-24 15:14:00 -04:00
Hao Liu
38209f9720 Add workflow_dispatch to promote workflow (#1612) 2023-10-24 15:10:08 -04:00
Hao Liu
0ba4feaf7a Revert "Stage and promote operator catalog and bundle (#1598)" (#1611) 2023-10-24 14:55:42 -04:00
Hao Liu
d4c1fda066 Stage and promote operator catalog and bundle (#1598) 2023-10-24 13:06:45 -04:00
Christian Adams
0d97183bbf Hardcode the link for the operatorhub publish script (#1609) 2023-10-23 15:13:32 -04:00
Hao Liu
293f0158e0 Fix operator-hub publish script on mac (#1584) 2023-10-19 14:45:21 +00:00
Hao Liu
bb30b3b9fe Fix spacing for csv file (#1601) 2023-10-18 18:38:32 +00:00
Chris
39bebe64ba Fix task deployment indention (#1596) (#1597) 2023-10-17 17:13:44 -04:00
Hao Liu
5bd84b3d3e Install operator-sdk if needed (#1600) 2023-10-17 20:19:29 +00:00
Christian Adams
76e315d191 Change supported OCP range when publishing to OperatorHub (#1599) 2023-10-17 16:03:54 -04:00
Hao Liu
dd022258b5 Remove mailing list from getting involved (#1592) 2023-10-13 17:41:33 +00:00
Hao Liu
019fa3d356 Add background keepalive to awx-manage migrate (#1589) 2023-10-13 09:33:27 -04:00
Preston Alvarado
4a968aa605 docfix - Secret Key Configuration (#1585) 2023-10-11 18:32:37 +00:00
Hao Liu
92639c1e89 Adding keepalive while doing pg_dump (#1580) 2023-10-10 13:08:51 -04:00
kurokobo
a7cfbe23da fix: correct label selector to find task pod (#1573) 2023-10-03 14:08:54 -04:00
kurokobo
16a2b590d6 fix: change type for precreate_partition_hours from string to integer (#1571) 2023-10-03 12:10:40 -04:00
rakesh561
8518e0d1c7 Allow ability to set security context for postgres deployment (#1517)
- Added docs for securityContext 
- enabled web securityContext configuration

Co-authored-by: Christian M. Adams <chadams@redhat.com>
2023-09-27 18:05:46 -04:00
Jeff Smith
6bc101af3e Bump ansible-operator to v1.31.0 (#1550) 2023-09-27 15:31:10 -04:00
jessicamack
31e1914db6 Pre-create event table partitions before db backup in operator (#1443)
Signed-off-by: jessicamack <jmack@redhat.com>
<44379968+TheRealHaoLiu@users.noreply.github.com>
2023-09-26 10:20:12 -04:00
Hao Liu
aee1b464ed Update how to get involved (#1564) 2023-09-20 18:31:13 +00:00
Imed
61921d40ed Added pattern and max-length to secret names (#1549)
Co-authored-by: Imed Aouidene <imaouide@imaouide-thinkpadt14sgen2i.cdg.csb>
2023-09-20 14:24:01 -04:00
Christian Adams
b5f2c19470 Add docs for publishing new operator versions to OperatorHub (#1557) 2023-09-13 16:28:11 -04:00
Christian Adams
8d91a67078 Ensure that web and task deployments scale down for upgrades (#1522) 2023-09-06 18:44:49 +00:00
Imed
3df613346c Fix no-log.md link location (#1548)
Co-authored-by: Imed Aouidene <imaouide@imaouide-thinkpadt14sgen2i.cdg.csb>
2023-09-06 18:31:42 +00:00
Rick Elrod
b559e836e4 Fix CI warnings (yamllint and GitHub Actions) (#1547)
- Fix indentation on one of the newer molecule files.
- Update to actions/checkout@v3 and actions/setup-python@v4 and helm/kind-action@v1.8.0.


Signed-off-by: Rick Elrod <rick@elrod.me>
2023-09-06 13:15:31 -05:00
Seth Foster
ea5fb823f9 Fix minikube link location (#1546) 2023-08-30 13:21:08 -04:00
Christian Adams
4c5429190c Timeout stream keep alive for Upgrades and Restores (#1542)
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2023-08-29 15:36:48 -04:00
Christian Adams
22a05e8887 Deployment name should be referenced, not the restore object name (#1543) 2023-08-29 14:40:53 -04:00
Christian Adams
7012a6acfc Modify how pg password is set in postgres pod (#1540)
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2023-08-29 15:28:54 +00:00
Christian Adams
1dc64b551c Add keepalive to migrate data script (#1538)
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2023-08-29 11:05:11 -04:00
Hao Liu
c949d6e58d Wait for termination grace period when scaling down the deployments (#1537) 2023-08-28 18:37:45 -04:00
Hao Liu
0e0f413e82 Revert "Switch to using the sclorg redis image for consistency (#1531)" (#1536) 2023-08-28 20:50:00 +00:00
chillTschill
7935873746 Fixes #1039, naming of clusterscoped resources (#1159) 2023-08-25 22:56:36 +00:00
David Luong
a57b9e0475 Changed replica from string to int for default (#1534) 2023-08-25 18:33:47 -04:00
Christian Adams
39eee1370b Add script to publish awx-operator to operator hub (#1528) 2023-08-24 21:43:48 -04:00
Christian Adams
48dcb08c78 Switch to using the sclorg redis image for consistency (#1531) 2023-08-24 21:38:55 -04:00
Sandra McCann
d60fddebca Add readthe docs scaffolding (#1515) 2023-08-17 12:01:06 -04:00
Seth Foster
ffd1a4b2ab Remove broken installation link (#1523) 2023-08-16 16:25:18 +00:00
Christian Adams
8391ed3501 Add UI Params for db_management_pod_node_selector and labels (#1465) 2023-08-03 22:02:36 -04:00
Christian Adams
3b2a218419 Add note about how to find docs after building the doc site (#1512) 2023-08-03 15:50:00 -04:00
Sandra McCann
71362dd3d4 Add new docs files to mkdocs (#1507) 2023-08-03 15:13:11 -04:00
Christian Adams
3188cd2889 Add Table of Contents for nested doc files (#1509) 2023-08-03 08:14:49 -04:00
Christian Adams
bf3965eac7 Add Table of Contents for nested doc files (#1508) 2023-08-02 16:24:15 -04:00
Sandra McCann
7953d424f0 update readme TOC (#1504) 2023-08-02 13:58:02 -04:00
Oluchi Nwenyi
dc2599b0b9 Docs: added contributing segment to docs (#1483) 2023-07-27 15:07:30 -04:00
Oluchi Nwenyi
93a7878ab7 Docs: moved uninstall segment from readme (#1482) 2023-07-27 14:31:21 -04:00
Oluchi Nwenyi
3a1b763522 Docs: moved upgrade segment from readme (#1481) 2023-07-27 11:10:33 -04:00
Christian Adams
fcc25b1835 Set a default container for web & task deployments (#1500) 2023-07-26 18:48:44 -04:00
Oluchi Nwenyi
470c7c392b Docs: moved user guide segment from readme (#1480) 2023-07-26 17:08:20 -04:00
Desmond Obisi
6e487ed29e Docs: moved installation from readme to docs folder (#1478) 2023-07-26 15:52:43 -04:00
Desmond Obisi
7f4dfbc0a1 Docs: moved introduction from readme to docs folder (#1477)
Co-authored-by: Sandra McCann <samccann@redhat.com>
2023-07-25 17:05:47 -04:00
Rick Elrod
c9ab99385a Allow {web_,task_,}replicas to be 0 and split out molecule tests (#1468)
Signed-off-by: Rick Elrod <rick@elrod.me>
2023-07-18 17:07:55 -04:00
Elijah DeLee
ef7703563b add uwsgi config as configmap with vars (#1487) 2023-07-17 18:26:39 -04:00
Rick Elrod
7f6ed97fd5 [CI] Drop docker install workaround (#1463)
Signed-off-by: Rick Elrod <rick@elrod.me>
2023-07-17 15:17:46 -05:00
Rick Elrod
45f7545f41 Pin Cython for tests, so that PyYAML can build (#1492)
See: https://github.com/yaml/pyyaml/issues/601

Signed-off-by: Rick Elrod <rick@elrod.me>
2023-07-17 11:39:11 -05:00
Elijah DeLee
4b8f371095 Update README.md to use make deploy (#1488) 2023-07-14 12:41:36 -04:00
Seth Foster
822b3a439f Add receptor_log_level (#1444) 2023-07-10 11:49:58 -04:00
rakesh561
cfb5048f85 There was a typo in the CRD for the ephemeral storage which was ephemeral_storage instead of ephemeral-storage (#1476) 2023-07-05 14:40:47 -04:00
rakesh561
43c1f396c3 Updated image pull policy for backup and restore policy as variable (#1473) 2023-07-05 14:39:43 -04:00
Chi Cuong HA
cbdbeb790b Fix redirect port when route_tls_termination_mechanism: passthrough (#1475)
Fixes #1474
2023-06-30 16:06:55 -05:00
rakesh561
d61a01321f Allow ability to define requests and limits for ephemeral storage. (#1466) 2023-06-29 23:24:52 -04:00
Uros Bajzelj
3afe1df555 Enable configuration of rsyslog environmental variables, volume mounts, and entrypoints (#1467) 2023-06-29 22:38:24 -04:00
BhattacharjeeSutapa
b18d59f118 Add mkdocs scaffolding (#1363)
Co-authored-by: Don Naro <dnaro@redhat.com>
2023-06-28 11:15:05 -04:00
loh
1d72a97ac8 Add doc note about extra_settings being read-only in AWX UI
Co-authored-by: Christian Adams <rooftopcellist@gmail.com>
2023-06-23 15:14:06 -04:00
rakesh561
a8d2831b1c Update code with capability to set the init container resources instead of using web or task container resources (#1439) 2023-06-23 18:09:09 +00:00
Stanislav Zaprudskiy
213c1bebc4 Do not cause web deployment restart on pre-stop scripts changes (#1458) 2023-06-23 11:25:58 -04:00
Hao Liu
ca6666d271 Fix failure in CI while creating kind cluster (#1462) 2023-06-23 10:18:58 -04:00
soumyadeep-paul-ibm
56d1966397 Update manager_auth_proxy_patch.yaml (#1438)
Co-authored-by: Christian Adams <chadams@redhat.com>
2023-06-21 18:30:17 +00:00
rakesh561
fcc09673cc Add db_management_pod_node_selector for specifying nodeSelect for backup/restore mgmt pod (#1434)
Co-authored-by: Hao Liu <44379968+TheRealHaoLiu@users.noreply.github.com>
Co-authored-by: Jesse Wattenbarger <jesse.j.wattenbarger@gmail.com>
2023-06-21 10:46:29 -04:00
rakesh561
b1655479d2 Updated task.yaml.j2 rsyslog container to have preStop hook (#1422)
Co-authored-by: Stanislav Zaprudskiy <stanislav.zaprudskiy@gmail.com>
2023-06-09 16:33:31 -04:00
Hao Liu
a5e29aefec Relocate receptor cert and key file location (#1442) 2023-06-09 14:19:04 -04:00
dale-mittleman
4d20079cfe Fix rsyslog container resources in task deployment template (#1426) 2023-05-19 13:05:37 -04:00
John Westcott IV
645f3a7cf8 Merge pull request #1420 from john-westcott-iv/change_helm_release
Changing helm-release url setting from global to local
2023-05-18 08:31:10 -04:00
john-westcott-iv
b65457a056 Changing url setting from global to local 2023-05-17 16:23:14 -04:00
Christian Adams
72bf56946f Fix helm release push with HTTPS (#1419) 2023-05-17 15:38:35 -04:00
Seth Foster
a62487b58b Merge pull request #1418 from fosterseth/fix_rsyslog_resources
Fix templating error when bundle_ca_crt is present
2023-05-17 15:19:20 -04:00
Seth Foster
aa78813d73 Rsyslog resources wrong location 2023-05-17 15:02:20 -04:00
Christian Adams
a08c9104a9 Add GHA for re-publishing helm chart when necessary & for debugging (#1417) 2023-05-17 14:27:44 -04:00
Shane McDonald
5da4b697f1 Merge pull request #1416 from laiminhtrung1997/remove-redundant-slashes
Remove redundant slash in path to template
2023-05-17 14:15:35 -04:00
laiminhtrung1997
f99a83c137 Remove redundant slashes. 2023-05-17 22:54:52 +07:00
rakesh561
721d6814ca Added capability to set the rsyslog container resources (#1410)
* Update awx.ansible.com_awxs.yaml with rsyslog resource containers
* Update awx-operator.clusterserviceversion.yaml with x-descriptors
* Add default values in main.yml
* Template resource_requirements in web.yaml.j2 and task.yaml.j2
2023-05-16 21:28:36 -04:00
Jeff Smith
866acb3d9c Bump ansible-operator to v1.28.1 (#1408)
This fixes [CVE-2022-41723](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-41723)

Co-authored-by: Jeffery Smith <jeffery.smith@pearson.com>
2023-05-16 18:06:08 -04:00
Hao Liu
94dc52d224 Merge pull request #1393 from ansible/feature_keepalive
Add ability to configure Postgres keepalive settings
2023-05-15 12:26:07 -04:00
Christian Adams
c0cd78899a Add Docs for customizing the favicon for AWX (#1406) 2023-05-10 17:05:04 -04:00
Christian Adams
3b54fa8675 Host aliases (#1373)
* feat: add HostAliases to web/task containers (fixes #646)
* feat: add HostAliases to web/task containers
* Make host_aliases display in the Operator UI
* Add default value for host_aliases and add to web deployment template

Co-authored-by: zhangpeng.zong <zhangpeng.zong@funplus.com>
Co-authored-by: Dimitri Savineau <savineau.dimitri@gmail.com>
2023-05-10 14:45:48 -04:00
Hao Liu
4a869998d1 Add ability to configure postgres keepalives settings
Co-Authored-By: Gabriel Muniz <gmuniz@redhat.com>
Co-Authored-By: Rick Elrod <rick@elrod.me>
2023-05-09 14:56:20 -04:00
Christian Adams
bc044431ab Fix so that the index.yaml changes are pushed (#1402) 2023-05-08 15:24:02 -04:00
Hao Liu
4fe482b77b Unpin ubuntu version for feature branch CI build (#1400) (#1401) 2023-05-08 14:42:35 -04:00
Desmond Obisi
194340688d Create doc-proposal.md to capture the new doc proposal (#1379)
This commit contains the addition of the markdown file for the new awx-operator doc proposal
2023-05-06 01:02:35 +00:00
Wilton Rodrigues
b517b0a2a6 Fix invalid LDAP configuration example in README.md (#1397)
Commit 3d849d9179 Removed the necessary parentheses
2023-05-05 21:16:01 +00:00
Seth Foster
1dc56803e8 Set receptor log level to info (#1399) 2023-05-05 18:20:20 +00:00
Christian Adams
85da1aa1f3 Change storage class display type to dropdown (#1398) 2023-05-05 14:19:32 -04:00
Christian Adams
6378836706 Add postgres_storage_class to UI form & fix PG Storage requirements display (#1395) 2023-05-05 12:32:33 -04:00
Christian Adams
e829dafbd2 Fix molecule test by pinning community.docker for requests issue (#1396) 2023-05-04 18:30:47 -04:00
Christian Adams
1023718b87 Allow configuration of resource requirements for init containers (#1392)
- In some use cases, limits must be set for every container in a
    cluster. To address this, we will use the task and web resource
requirements for the initContainers where applicable.
2023-05-03 17:41:01 -04:00
Seth Foster
4a5141933c Merge pull request #1388 from cilq/patch-1
Fix variable name for loadbalancerip in template.
2023-05-03 14:07:44 -04:00
Shane McDonald
084841f549 Merge pull request #1389 from patrickdappollonio/devel
Update Makefile
2023-05-02 12:43:35 -04:00
Patrick D'appollonio
76ab4a8342 Update Makefile 2023-05-02 11:53:13 -04:00
Rick Elrod
2d6aa5815f [ci] pin ansible-compat for molecule
https://github.com/ansible-community/molecule/issues/3903

Signed-off-by: Rick Elrod <rick@elrod.me>
2023-05-02 09:47:56 -05:00
Dimitri Savineau
d69b57c014 web: Use sha1 filter instead of md5 (#1386)
This was fixed in 6cae8df but the task/web split rebase didn't apply this
to the web deployment.
This prevents to deploy the operator when FIPS is enabled.

{"msg": "An unhandled exception occurred while running the lookup plugin
'template'. Error was a <class 'ValueError'>, original message:
[digital envelope routines: EVP_DigestInit_ex] disabled for FIPS"}

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2023-05-02 10:19:21 -04:00
André Liebigt
562a171de6 Fix variable name for loadbalancerip in template.
The template now checks the existence of the correct variable so that it actually works.
2023-05-02 13:53:06 +02:00
Jason Goldfine-Middleton
2118c6f49c Fix typo in rsyslog var
Rename all references: ryslog_args -> rsyslog_args
2023-04-28 10:49:49 -05:00
Seth Foster
9c759bfe88 bump kustomize v4.5.7 to v5.0.1 (#1357) 2023-04-21 14:49:42 -04:00
Christian Adams
d0205f4e5e Add docs for how to run molecule tests with kind (#1375)
- test-local docker scenario was removed in 9a54ae2937
2023-04-20 15:47:36 -04:00
Lukas Magauer
d914edf3e0 The ingress resulted in a double slash, if there is are slashes at the end of the ingress_path variable (#1374)
Co-authored-by: lumarel <lumarel@users.noreply.github.com>
2023-04-19 23:35:36 -04:00
John Westcott IV
be4fd1364c Merge pull request #1371 from john-westcott-iv/another-helm-fix
Changing helm-release again
2023-04-19 17:26:43 -04:00
Christian Adams
599b1e387d Fix linter warnings on PRs (#1372) 2023-04-19 18:36:29 +00:00
john-westcott-iv
732ff9c02c Changing helm-release again 2023-04-19 12:25:14 -04:00
Hao Liu
d0e30a6878 Merge pull request #1368 from tanganellilore/fix_promote
fix chart package path on helm-release playbook
2023-04-19 11:31:57 -04:00
Shane McDonald
a213b60008 Merge pull request #1369 from sdx23/patch-1
Update README.md
2023-04-19 09:13:58 -04:00
sdx23
768327ea3b Update README.md
Adaptations to use kustomize implicitly via kubectl apply -k
2023-04-19 11:18:00 +02:00
Lorenzo Tanganelli
4908ecfd5d fix chart package path on hel-release playbook 2023-04-19 09:32:17 +02:00
Lila Yasin
e1e97a1bbf Merge pull request #1351 from djyasin/1331_Add_support_to_specify_different_annotation_for_task_and_web_deployments
Add support to specify different annotation for the task and web deployments in AWX operator
2023-04-17 16:22:36 -04:00
Lila
e54215863c Add ability to override annotations independently
- add web_annotations to override annotations for web pods
- add task_annotations to override annotations for task pods
2023-04-17 16:07:12 -04:00
Seth Foster
0c2f45569c Merge pull request #1358 from fosterseth/fix_development_mode
fix development mode
2023-04-13 11:10:37 -04:00
Seth Foster
cde24806cf fix development mode 2023-04-12 19:31:15 -04:00
Christian Adams
5a3b2179bc Set securityContext.capabilities for kube-rbac-proxy container (#1354) 2023-04-12 14:55:57 -04:00
Lukas Magauer
faf51c8b24 Add websocket configuration for contour ingress (#1320)
Co-authored-by: lumarel <lumarel@users.noreply.github.com>
2023-04-12 18:29:21 +00:00
Hao Liu
9bdbf4bacb Fix lint error (#1352)
Check warning on line 44 in roles/installer/defaults/main.yml
44:2 [comments] missing starting space in comment
2023-04-12 14:25:41 -04:00
Hao Liu
d4015546db Fix helm release problem (attempt 3) (#1350)
fix helm release result in helm index containing incorrect download link

Co-authored-by: Christian Adams <rooftopcellist@gmail.com>
Co-authored-by: John Westcott IV <32551173+john-westcott-iv@users.noreply.github.com>
2023-04-11 20:37:51 +00:00
Hao Liu
10df62ff7b Merge pull request #1349 from thedoubl3j/fix_task_tolerations
fix task deployment tolerations
2023-04-11 15:13:59 -04:00
thedoubl3j
a2a35d0a40 remove to_nice_yaml from tolerations in the task deployment which caused in malformed yaml to be rendered for the task deployment 2023-04-11 14:26:51 -04:00
Hao Liu
4589e2849d Merge pull request #1333 from TheRealHaoLiu/fix-rsyslog-ca-cert
Add CA cert volume mount to rsyslog sidecar
2023-04-07 13:07:29 -04:00
Hao Liu
1456d24ff5 Merge pull request #1328 from thedoubl3j/fix_manual_projects
Add back project persistence so Manual projects SCM type have path
2023-04-07 13:06:56 -04:00
Hao Liu
b5e630d0b5 Merge pull request #1342 from TheRealHaoLiu/fix-molecue-failure
Update CI test and fix awx-operator CI failure in awx repo
2023-04-07 12:59:02 -04:00
Hao Liu
4104e7d912 Update awx_test.yml
- rename awx_pod to awx_web_pod to better reflect intention
- update `awx_version` block to also validate awx_task_pod
- add get awx_task_pod in additional label check block (fix CI in awx repo which does not run the validate awx_version block)
- add assertion for awx_task_pod extra label
2023-04-07 12:42:22 -04:00
thedoubl3j
2f7297f5f5 revert project persistance so that manual projects have a default path
move chmod chgrp for projects_persistence to different init

default init container is the awx-ee because and unable to run command chgrp

moving it into a different init container

note this is not needed for openshift so this is conditional on is_k8s
2023-04-07 12:02:13 -04:00
Lila Yasin
073e6cff0a Merge pull request #1327 from djyasin/1315_Update-tests-to-validate-web-task
Updating awx_test.yml to respect both web and task deployments.
2023-04-07 10:51:02 -04:00
Lila
910f1eeb36 Updating awx_test.yml to respect both web and task deployments.
- Extracts label information from both web and task pods
- Asserts web and task pod labels are correct respectively
2023-04-07 10:24:02 -04:00
Hao Liu
bba532e2e5 Merge pull request #1229 from manfuin/conditional-sslrootcert
Specify sslrootcert in database options conditionally (fixes #1215)
2023-04-05 14:18:05 -04:00
Hao Liu
fee2289753 Add CA cert volume mount to rsyslog sidecar
fixes https://github.com/ansible/awx-operator/issues/1332
2023-04-05 13:40:38 -04:00
Hao Liu
c5520d4c61 Merge pull request #1324 from TheRealHaoLiu/fix-supervisor-conf-file-inconsistancy
Fix supervisor conf file inconsistancy
2023-04-04 11:15:33 -04:00
Hao Liu
25e7f5a8f2 Fix supervisor conf file inconsistancy 2023-04-04 10:00:02 -04:00
Hao Liu
d4e12dff8f Merge pull request #1316 from TheRealHaoLiu/tmp-fix-ci
Temporary fix for CI failure for web-task-split
2023-03-30 12:36:54 -04:00
Hao Liu
c4d9970111 Update awx_test.yml 2023-03-30 12:35:24 -04:00
Hao Liu
34f48713a4 Merge pull request #1314 from TheRealHaoLiu/tmp-fix-label-test-failure
Temporary fix for label test failure
2023-03-30 11:50:00 -04:00
Hao Liu
8d2d44dc6d tmp fix for label test failure
validate label only for awx web container

TODO: make this validate both web and task container
2023-03-30 11:47:55 -04:00
Jake Jackson
2f59796caa Merge pull request #1218 from ansible/feature_web-task-split
Deploy web and task component in independent deployment
2023-03-30 10:38:34 -04:00
thedoubl3j
4a6d1855dc remove disktype key from example 2023-03-29 22:00:52 -04:00
Hao Liu
cd3bfbef96 Rename SUPERVISOR_WEB_CONFIG_PATH
SUPERVISOR_WEB_CONFIG_PATH is used in the old deployment for task container to reach into the web container and restart services

this is no longer possible/needed after splitting the deployment

renaming SUPERVISOR_WEB_CONFIG_PATH to SUPERVISOR_CONFIG_PATH
and setting it to the supervisor file for the container

this can still be useful to help run `supervisorctl -c $SUPERVISOR_CONFIG_PATH`
2023-03-29 22:00:52 -04:00
Hao Liu
02328076e5 Update arg for launching web container
related to https://github.com/ansible/awx/pull/13777

make sure that the launch script name reflect the component that its launching
2023-03-29 22:00:52 -04:00
Lila
4bec3f7098 Removed extra space. 2023-03-29 22:00:52 -04:00
Lila
b7e6987aec Removed errant quotes in main.yml. 2023-03-29 22:00:52 -04:00
Jake Jackson
7218e42771 [web/task split] fix scale down bug (#1295)
- rename scale_down vars to the new deployments since the old one no longer exists
- rename postgres.yml scale down vars as it references the old ones as well
2023-03-29 22:00:52 -04:00
Lila
25dfc97047 Updated task deployment to fix receptor certs issue.
Added the following volume mounts to the web container:
- receptor-work-signing
- receptor-ca
- work-public-key.pem
Also added these corresponding volumes to the web deployments:
- receptor-ca
- receptor-work-signing
2023-03-29 22:00:52 -04:00
Hao Liu
1106ef54ee add AWX_COMPONENT env var
for awx to be able to identify which component it is running in code
2023-03-29 22:00:52 -04:00
thedoubl3j
6fd5ca918b remove any reference to project persistance in web deployment 2023-03-29 22:00:52 -04:00
Hao Liu
942cce05e7 resolve merge error 2023-03-29 22:00:52 -04:00
Hao Liu
c2f0c214eb rename tower_pod to awx_task_pod 2023-03-29 22:00:52 -04:00
Hao Liu
a0fdf653fb enable web container to be restarted when configmap/secret change 2023-03-29 22:00:52 -04:00
thedoubl3j
5894a4ad25 remove old deployment during upgrade 2023-03-29 22:00:52 -04:00
thedoubl3j
3c0ea07a55 update documentation for the new fields added 2023-03-29 22:00:52 -04:00
Hao Liu
84b766ac40 update auto_upgrade logic (#1241)
update logic for determining if install.yml task should be run
to respect the auto_upgrade field in awx resource

conditions and expected behavior
```
  auto_upgrade   awx   awx-web   awx-task   run install.yml
 -------------- ----- --------- ---------- -----------------
  T              -     -         -          T
  F              T     -         -          F
  F              -     T         T          F
  F              -     T         F          T
  F              -     F         T          T
  F              -     F         F          T
```
2023-03-29 22:00:52 -04:00
jessicamack
41e84be0d3 added descriptors for new fields (#1238)
Signed-off-by: jessicamack <jmack@redhat.com>
2023-03-29 22:00:52 -04:00
Jake Jackson
d40683cbb9 add topology constraint for each deployment (#1234) 2023-03-29 22:00:52 -04:00
Hao Liu
918e487422 Add web and task replicas to the CRD (#1227)
add web_replicas and task_replicas

Co-Authored-By: Jake Jackson  <24478650+thedoubl3j@users.noreply.github.com>
2023-03-29 22:00:52 -04:00
Jake Jackson
6192cab653 fix affinity duplicate (#1225) 2023-03-29 22:00:52 -04:00
Jake Jackson
c1bbd85ea9 add nodeSelector work (#1219) 2023-03-29 22:00:52 -04:00
Jake Jackson
d9f3a428d4 [web/task split] split web and task deployment + a few supporting bits (#1189)
* first pass, still WIP, need tolerations etc

* add tolerations that don't work bc idk

* bug hunting

* local push, still a WIP

* affinity still needs testfor to_nice_yaml, tolerations logic is working

* fixed task deployment and affinity for both
2023-03-29 22:00:52 -04:00
Rick Elrod
ebc040fe75 scale web/task replicas separately
This is a breaking change since 'replicas' is no longer used.

Signed-off-by: Rick Elrod <rick@elrod.me>
2023-03-29 22:00:52 -04:00
Rick Elrod
12e51ad9ad add $MY_POD_IP back to web deployment
Signed-off-by: Rick Elrod <rick@elrod.me>
2023-03-29 22:00:52 -04:00
Rick Elrod
6477468729 drop awx-web container from awx-task deployment
Signed-off-by: Rick Elrod <rick@elrod.me>
2023-03-29 22:00:52 -04:00
Shane McDonald
19461fa86c Split web and task containers into separate deployments 2023-03-29 21:59:57 -04:00
Seth Foster
2b3fd833a3 Allow TLS 1.2 for Receptor connections (#1300)
- Required for FIPS environment where TLS 1.3 is
not supported
- TLS 1.3 can still be used if the nodes
both agree to use during handshake.
2023-03-29 19:19:40 -04:00
Guillaume Lefevre
c76ad2cff1 Change ansible k8s_info tasks api_version for Deployment kind to apps/v1 (#1299)
Co-authored-by: Guillaume Lefevre <guillaume.lefevre@agoda.com>
2023-03-29 15:39:41 -04:00
John Westcott IV
aa673de25d Merge pull request #1305 from john-westcott-iv/no_jmes
Modifying stage playbook to not need jmespath
2023-03-27 21:08:32 -04:00
John Westcott IV
f1512e9405 Modifying stage playbook to not need jmespath 2023-03-27 20:56:56 -04:00
John Westcott IV
d853e050cd Merge pull request #1304 from john-westcott-iv/fix_jmes_path
Adding jmespath to workflow for using json_query
2023-03-27 20:40:10 -04:00
John Westcott IV
9f0c5c8ba9 Adding jmespath to workflow for using json_query 2023-03-27 20:26:14 -04:00
John Westcott IV
1d34d86f32 Merge pull request #1303 from john-westcott-iv/fix-playbook
Making helm release playbook more idempotent
2023-03-27 16:18:56 -04:00
John Westcott IV
7164c412f0 Making helm release playbook more idempotent 2023-03-27 16:02:21 -04:00
John Westcott IV
a8a05bb113 Merge pull request #1302 from john-westcott-iv/fix_release
Adding missing \ in promote workflow
2023-03-27 14:40:19 -04:00
John Westcott IV
bf91f32f79 Adding missing \ in promote workflow 2023-03-27 14:28:18 -04:00
Andrii Salnikov
ef10b06be5 Update roles/installer/templates/settings/credentials.py.j2
Co-authored-by: Dimitri Savineau <savineau.dimitri@gmail.com>
2023-03-23 22:31:39 +01:00
Dimitri Savineau
1e453aefd3 Merge pull request #1297 from dsavineau/restore_requires_deployment_name
restore: Set deployment_name as required
2023-03-23 11:14:32 -04:00
Dimitri Savineau
71b950c243 Merge pull request #1298 from dsavineau/fix_restore_backup_source_enum
restore: Fix enum value for backup_source
2023-03-23 11:14:13 -04:00
Dimitri Savineau
b00137cc3e restore: Fix enum value for backup_source
The choice for backup_source are:
- Backup CR
- PVC

This current prevents to create an AWXRestore CR with the Backup CR value
from the OLM UI.

Error "Unsupported value: "Backup CR": supported values: "CR", "PVC"" for
field "spec.backup_source".

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2023-03-22 18:18:51 -04:00
Dimitri Savineau
2cc398d8d4 restore: Set deployment_name as required
The deployment_name from the AWXRestore CR doesn't requires to set a
value for this parameter.
That parameter is already required for the AWXBackup CR so it should be
the same for AWXRestore.

Creating an AWXRestore CR without deployment_name set results in a failure
during the Secrets restoration.

"reason":"FieldValueInvalid","message":"Invalid value: \\"-receptor-ca\\":
a lowercase RFC 1123 subdomain must consist of lower case alphanumeric
characters, \'-\' or \'.\', and must start and end with an alphanumeric
character (e.g. \'example.com\', regex used for validation is
\'[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\')"

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2023-03-22 17:59:49 -04:00
Joel
5c91bbd65e restore use k8s_cp module to read backup files (#1212) 2023-03-22 14:27:58 -04:00
Gene Tomilko
88b1a8c125 Add loadbalancerip (#1265)
* Add ability to configure loadbalancerip on service
* Add docs for configuring loadbalancerip
2023-03-22 18:27:17 +00:00
Christian Adams
6fd969633e Document the need for quotes on pg secret port value (#1288) 2023-03-22 14:17:40 -04:00
Christian Adams
9c788ba3bd Add more suggestions to Debugging doc (#1285) 2023-03-16 17:52:29 -04:00
Seth Foster
c2fd14e39a Merge pull request #1281 from trippinnik/patch-1
Update README.md
2023-03-15 14:29:57 -04:00
Seth Foster
6513e93e7f Merge pull request #1287 from sugitk/patch-1
fixes #1286 expand client_max_body_size to 5Mb
2023-03-15 14:17:18 -04:00
Takashi Sugimura
d0f4898aaa fix #1286 2023-03-15 08:20:16 +09:00
trippinnik
3d849d9179 Update README.md
documentation is incorrect for AUTH_LDAP_GROUP_TYPE and paramaters need to be noted with AUTH_LDAP_GROUP_TYPE_PARAMS
2023-03-09 09:46:46 -05:00
aurel333
fe77f1deae Fix awx-manager-role bad match between some apiGroups and resources (#1262)
Co-authored-by: Aurelien Potin <aurelien.potin@michelin.com>
2023-03-08 16:24:03 -05:00
Hao Liu
9156909023 Merge pull request #1263 from rh-dluong/date-format
change date format to avoid :
2023-03-08 15:58:58 -05:00
Christian Adams
03e3b68eeb Helm Release: Need to use shell, not command for multi-line (#1280) 2023-03-08 15:55:30 -05:00
Ravi Teja
6cae8dfa32 fix: use sha1 instead of md5 to make the installer work in FIPS (#1260)
Co-authored-by: RaviTeja Buddabathuni (rbuddaba) <rbuddaba@cisco.com>
2023-03-08 15:10:27 -05:00
Hao Liu
b1ecc89759 Merge pull request #1274 from TheRealHaoLiu/feature-branch-build
Add github workflow for publishing feature branch images
2023-03-07 17:05:08 -05:00
Hao Liu
bb85b31411 Add github workflow to publish feature branch img 2023-03-07 16:50:28 -05:00
Christian Adams
7e7c23e176 Fix helm-release task to work in ansible, not GHA env (#1267) 2023-03-06 15:25:04 -05:00
John Westcott IV
8442cc7ae8 Merge pull request #1268 from john-westcott-iv/ubuntu-change
Changing github actions from ubuntu-18 to ubuntu-latest
2023-03-06 15:06:02 -05:00
John Westcott IV
3faf76d7c9 Changing github actions from ubuntu-18 to ubuntu-latest
See https://github.com/actions/runner-images/issues/6002 for deprication warnings
2023-03-06 14:55:32 -05:00
David Luong
61ef5ef005 change date format to avoid : 2023-03-02 13:54:00 -05:00
Peter Hoffmann
86043361c6 Small fix/adjustment in README (#1257)
* Fix minor typo
2023-02-28 16:20:47 -05:00
Ravi Teja
06194960e9 Bump ansible operator SDK version to v1.26.0 (#1258)
Co-authored-by: RaviTeja Buddabathuni (rbuddaba) <rbuddaba@cisco.com>
2023-02-28 15:45:02 -05:00
Hao Liu
46da413585 Merge pull request #1193 from stanislav-zaprudskiy/add_termination_grace_period_seconds
AWX: Add `termination_grace_period_seconds`
2023-02-28 15:37:51 -05:00
Hao Liu
b5f255cf00 add nodeport_port to instantiate playbook (#1252) 2023-02-22 21:18:12 +00:00
Maxence Button
f328b0adb6 Customization of the init_projects_container_image is now possible (#1248) 2023-02-22 15:05:23 -05:00
Shane McDonald
1bfd3b2028 Merge pull request #1201 from thedoubl3j/debugging_doc_update
Update Installer Debugging Documentation
2023-02-22 14:51:05 -05:00
Christian Adams
edf01f009e Stage and push helm index where gitconfig is set (#1251) 2023-02-22 14:09:35 -05:00
Joel
a3c28be98a [enhancement] restore postgres database if external db (#1211)
* restore postgres fix resolvable_db_host

set the resolvable_db_host ansible variable based on the db deployment
2023-02-22 13:56:38 -05:00
Stanislav Zaprudskiy
49d1f00dbd Do not keep web container running during termination
We could let the web container terminate as usual, as there are no
reasons to keep it running as it doesn't participate in
job control. Additionally, it stops receiving traffic with the beginning
of termination

> At the same time as the kubelet is starting graceful shutdown, the
> control plane removes that shutting-down Pod from EndpointSlice (and
> Endpoints) objects where these represent a Service with a configured
> selector

@ https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
2023-02-22 10:40:40 +01:00
Christian Adams
81939cb521 K8s cpu value example in README.md needs quotes to be valid (#1220) 2023-02-20 17:37:53 -05:00
Shane McDonald
6b10a8141c Merge pull request #1231 from rooftopcellist/auto-assign-nodeport 2023-02-09 20:27:26 -05:00
Christian M. Adams
1ef1f00b3d Auto-assign NodePort port by default rather than hardcoding a default value
- previously, there was no way to auto-assign a port by default
   which led to conflicts with other deployments at times
 - nodeport_port param can still be used to specify a port if desired
2023-02-09 19:49:46 -05:00
Andrii Salnikov
ce48812921 add sslrootcert to database options conditionally (fixes #1215) 2023-02-09 00:57:19 +01:00
Stanislav Zaprudskiy
336ea58a0a AWX: Add termination_grace_period_seconds 2023-02-07 16:33:00 +01:00
Stanislav Zaprudskiy
f042cb3d00 Fix lint warnings 2023-02-07 16:31:26 +01:00
Stanislav Zaprudskiy
94d68bf382 Make Deployment to be rolled out on CM and Secrets changes
With the previous approach, not all associated (mounted) CM/Secrets
changes caused the Deployment to be rolled out, but also the Deployment
could have been rolled out unnecessary during e.g. Ingress or Service
changes (which do not require Pod restarts).

Previously existing Pod removal (state: absent) was not complete as
other pods continued to exist, but also is not needed with this commit
change due to added Pods annotations.

The added Deployment Pod annotations now cause the new ReplicaSet
version to be rolled out, effectively causing replacement of the
previously existing Pods in accordance with the deployment `strategy`
(https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#deploymentstrategy-v1-apps,
`RollingUpdate`) whenever there is a change in the associated CMs or
Secrets referenced in annotations. This implementation is quite standard
and widely used for Helm workflows -
https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments
2023-02-07 11:58:47 +01:00
Stanislav Zaprudskiy
b3a74362af Make AWX Pod variable to be calculated respecting creationTimestamp and deletionTimestamp
Do not consider Pods marked for deletion when calculating tower_pod to
address replicas scale down case - where normally Pods spawned recently
are being taken for removal. As well as the case when operator kicked
off but some old replicas are still terminating.

Respect `creationTimestamp` so to make sure that the newest Pod is taken
after Deployment application, in which case multiple RS Pods (from old
RS and new RS) could be running simultaneously while the rollout is
happening.
2023-02-07 11:47:49 +01:00
Stanislav Zaprudskiy
ad531c8dce Do not wait for a new Pod name after Deployment change
Proper waiting is already performed earlier during Deplyment{apply: yes, wait: yes} -
e6ac874098/plugins/module_utils/k8s/waiter.py (L27).

And also not every Deployment change produces new RS/Pods. For example,
changing Deployment labels won't cause new rollout, but will cause
`until` loop to be invoked unnecessarily (when replicas=1).
2023-02-07 11:43:34 +01:00
Stanislav Zaprudskiy
e589ceb661 When applying Deployment wait up to (timeout * replicas)
There are cases when having a new Deployment may be taking above the
default timeout of 120s.
For instance, when a Deployment has multiple replicas, and each replica
starts on a separate node, and the Deployment specifies new images, then
just pulling these new images for each replica may be taking above the
default timeout of 120s.

Having the default time multiplied by the number of replicas should
provide generally enough time for all replicas to start
2023-02-07 11:41:32 +01:00
Christian Adams
234a10d185 Add a more descriptive AWX CRD description (#1208) 2023-01-31 10:50:12 -05:00
Christian Adams
e0fa1610ca Fix minor typos in test task names (#1209) 2023-01-31 00:05:37 +00:00
Stanislav Zaprudskiy
5a856eeba8 Add additional_labels parameter (#1160)
* Move label templates into `common` role

So that there is single source of labels management, and labels are
unified across the other roles

* Introduce `additional_labels`
* Fix paths for labels templates
* Return `additional_labels_items` as list
* Add molecule tests
2023-01-30 18:51:08 -05:00
Christian Adams
d26a6bf641 Fix minor helm make target syntax error (#1206) 2023-01-27 09:56:40 -05:00
janorn
8d6db0934f Fix helm chart URLs (#1204) 2023-01-27 09:32:46 -05:00
John Westcott IV
c1b2e73123 Merge pull request #1202 from john-westcott-iv/security_requested_change
Nominal change to the pr body check
2023-01-25 17:29:50 -05:00
John Westcott IV
6ac8668ead Nominal change to the pr body check 2023-01-25 17:12:08 -05:00
thedoubl3j
d0516bcdc1 update vars file entry to include over ride examples 2023-01-25 14:41:18 -05:00
Christian Adams
ac5a2538bc Fix helm index.yaml generation error (#1199) 2023-01-24 21:40:42 -05:00
Christian Adams
2bdc87d0a8 Add docs for ingress resource apiVersion configuration (#1198) 2023-01-24 22:42:02 +00:00
Joel
ab566c2530 backup role use k8s_cp module to write files (#1111) 2023-01-24 17:02:05 -05:00
rakesh561
6a7c3ca2de Add docs for disabling IPv6
* Added procedure to disable ipv6 for AWX deployments when needed.
2023-01-24 04:26:25 +00:00
Miles
f6f58d5c6d Setup make index for testing (#1183)
- Reconfigure index file generation
- checkout gh-pages branch in promote.yaml
- fix helm-index make target
- add gh-pages folder in .gitignore

Signed-off-by: Miles Wilson <wilson.mil@icloud.com>
Co-authored-by: Hao Liu <haoli@redhat.com>
Co-authored-by: Christian Adams <rooftopcellist@gmail.com>
2023-01-18 17:53:57 -05:00
kurokobo
b1a547d2a6 fix: add quotes for PGPASSWORD in upgrade_postgres.yml (fixes #1166) (#1167) 2023-01-18 11:59:03 -05:00
Christian Adams
43f98eda77 Fix pr_body_check (#1187) 2023-01-11 22:16:58 -05:00
Christian Adams
007e47e35c Add pre-reqs to the backup and restore docs (#1186) 2023-01-11 17:18:49 -05:00
David Hageman
21eb83b052 Correct admin password updating (#1179)
Corrects an issue with admin passwords failing to be updated due to shell escaping. This aligns the operator with the logic in the normal installer.
2023-01-11 11:41:35 -05:00
Dimitri Savineau
1f8414b8cb molecule: set no_log to false (#1185)
In order to get information during CI debugging then turning off the
no_log statement will help with non hidden output.

FAILED! => {"censored": "the output has been hidden due to the fact that
            'no_log: true' was specified for this result"}

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2023-01-11 11:21:53 -05:00
Shane McDonald
a199a8c104 Merge pull request #1172 from orcema/orcema-patch-readme-CA
update Trusting a Custom Certificate Authority
2023-01-04 13:18:37 +08:00
Orce MARINKOVSKI
fb1639a5d4 update Trusting a Custom Certificate Authority
I had hard times to identify how to declare to include statement for a custom certifcate bundle within the Kustomize file.
The tricky part for me was to spot the option "disableNameSuffixHash: true" in order to avoid renaming the secret name with an has suffix
2022-12-27 10:43:56 +01:00
Christian Adams
19c6c77c41 Add ability to configmap and include config files for nginx.conf (#1145) 2022-12-16 10:36:29 -05:00
Mathijsvw
4ee523ed69 Added pg_dump_suffix doc and crd property (#1006)
* Added pg_dump_suffix crd property

Signed-off-by: Mathijs van Willigen <mathijs.vanwilligen@student.hu.nl>
2022-12-14 14:56:40 -05:00
Stanislav Zaprudskiy
4c5bae69ef Add possibility specifying affinity of AWX Pods. (#1139)
* Add an option to specify affinity rules for the awx pod

In some cases, you may want to use affinity rules instead of a
 node selector so you can have more flexbility. For example if you want
to have "soft" rules i.e. run my pod on this node if possible otherwise
run it anywhere

* Rename `node_affinity` to `affinity`
* Maintain defaults and CSV
* Add fields validation

Co-authored-by: Olivier <oliverf1ca@yahoo.com>
2022-12-14 10:39:41 -05:00
Dax Kelson
9bf896e37c Update README.md (#1147)
Use awx namespace whent getting AWX instance URL
2022-12-07 14:31:34 -05:00
Christian Adams
cb50f4f3ac Add docs for Openshift install configuration (#1140) 2022-12-07 14:18:06 -05:00
Christian Adams
066e55e179 Bump Ansible Operator SDK version to v1.25.3 (#1146) 2022-12-05 16:04:04 -05:00
dru90i
f35bd7cf83 add default cluster name (#1129)
* add default cluster name

* Update awx.ansible.com_awxrestores.yaml

Co-authored-by: Kirill Smirnov <kirilsmirnov@x5.ru>
2022-11-30 14:29:52 -05:00
Karsten Heymann
95a1fc082b README.md: Add newline after decoded passwords (#1137)
`base64 --decode` prints no new line after its output, resulting in the next shell prompt starting immediately after the password. This makes copying the password difficult. Adding an `echo` at the end of the command fixes this.
2022-11-30 15:59:38 +00:00
dale-mittleman
dbd1e59a55 Added flag to disable ipv6 listener (#1135) 2022-11-30 10:38:44 -05:00
Christian Adams
61f45147f6 Set Minimum K8s cluster version we expect to work (#1126) 2022-11-18 10:27:47 -05:00
Michael Cristina
c20f9b4128 fix default container name (#1048) 2022-11-16 20:33:50 -05:00
Seth Foster
15568fe564 docs show extra setting double quotes (#1123) 2022-11-16 20:25:28 -05:00
Florian LAUNAY
1baf417504 remove helm chart version from labels (#1114) 2022-11-15 16:32:33 -05:00
janorn
7fbf1c42aa Get tags from remote. Local copy not complete. (#1075) 2022-11-10 00:25:51 -05:00
Christian Adams
a5e21b56ae Backup and restore receptor tls secret with expected generated name (#1107) 2022-11-07 11:04:22 -05:00
John Westcott IV
1399504142 Adding community labels on PRs and Issues (#1108) 2022-11-04 11:55:47 -04:00
Shane McDonald
e5896d15ed Merge pull request #1078 from FlorianLaunay/devel
use dedicated image for projects persistence PVC init tasks
2022-11-03 19:37:58 -04:00
Christian Adams
6b01ff09ce Amend permissions for backup dir (#1109) 2022-11-03 12:52:48 -04:00
Florian LAUNAY
c708cef4dc use dedicated image for projects persistence PVC init tasks 2022-11-03 17:26:00 +01:00
Christian Adams
1cf466def2 Add expected postgres version and usage docs (#1103) 2022-10-28 15:54:14 -04:00
sivateja04
0fc145b6aa Enable configuration of route and ingress api versions (#1098)
* Introduce ingress_api_version and route_api_version
2022-10-26 08:51:15 -04:00
Shane McDonald
e30d26cf7b Merge pull request #1100 from AlanCoding/still_not_fixed
Version 4.0.3 still not fixed, pin to before
2022-10-25 16:50:34 -04:00
Alan Rominger
7c4a731995 Version 4.0.3 still not fixed, pin to before 2022-10-25 16:10:33 -04:00
Dimitri Savineau
d2efea08e6 ci: Add check for no_log statement (#1096)
Since e966e92 we're using the `no_log` variable to control the no_log
statement value.
This job will check if the no_log statements are correctly set.

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2022-10-24 14:37:27 -04:00
Julen Landa Alustiza
23e94f82c0 Merge pull request #1091 from Zokormazo/pin-molecule
Avoid molecule 4.0.2
2022-10-18 12:43:40 +02:00
Julen Landa Alustiza
de2e58f222 Avoid molecule 4.0.2
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2022-10-18 12:29:19 +02:00
Christian Adams
1c7c89efb3 Use Task container resource requirements for init container (#1084) 2022-10-13 12:27:51 -04:00
Ompragash Viswanathan
096fe100f7 Update config/manifests/bases/awx-operator.clusterserviceversion.yaml (#1083) 2022-10-12 14:12:06 -04:00
Christian Adams
58ee2f0c74 Be consistent when naming form entries and with capitalization (#1082) 2022-10-12 11:52:45 -04:00
Shane McDonald
93f7484f38 Merge pull request #1077 from chris93111/patch-1
fix templating config 0.30
2022-10-06 19:37:42 -04:00
chris93111
225c47dbbc fix templating config
indent the comment and remove last -
2022-10-06 13:21:52 +02:00
Christian Adams
2daf8a1320 Add CSV description for OperatorHub (#1072) 2022-10-05 09:17:18 -04:00
Julen Landa Alustiza
5772c706d3 Merge pull request #1073 from Zokormazo/truncate-labels
Fix version label truncating
2022-10-05 11:02:26 +02:00
Julen Landa Alustiza
ae0a74bea3 Fix version label truncating
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2022-10-05 10:49:47 +02:00
Christian Adams
97cd7a9b7a Clarify Restore options in Openshift UI interface (#924) 2022-10-05 00:40:40 -04:00
Dimitri Savineau
0975663a52 csv: Use booleanSwitch for no_log parameter (#1071)
Set the no_log default value in the CRDs and switch from hidden to
boolean in the CSV file so this can be display properly in the UI.

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2022-10-04 23:59:43 -04:00
Dimitri Savineau
efdbd61860 csv: Add missing no_log to backup/restore (#1070)
e966e92 adds the configurable no_log parameter to all CRDs (install, backup
and restore) but only once in the CSV file (for installer).

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2022-10-04 14:10:07 -04:00
Dimitri Savineau
13b45cbb12 Merge pull request #1069 from rooftopcellist/no_log_more
More no_log default updates
2022-10-04 11:49:54 -04:00
Christian M. Adams
d3ca9c57c9 One more no_log default update 2022-10-04 11:36:56 -04:00
Christian Adams
9b1b5e676d Change no_log type to boolean (#1068) 2022-10-04 10:48:51 -04:00
Hao Liu
17eb9cf8e8 Merge pull request #1061 from fosterseth/add_custom_ca_docs
Add docs for adding execution nodes and custom CA
2022-10-03 16:23:42 -04:00
Seth Foster
ed7e2b2a28 Add docs for adding execution nodes and custom CA 2022-09-29 15:54:29 -04:00
Hao Liu
5b7589accd Merge pull request #1063 from TheRealHaoLiu/receptor-ca-secret-alternative 2022-09-29 02:04:50 -04:00
janorn
a1e289e189 Add workaround to populate index.yaml (#1065)
This will download all releases before cr index is being run.
fixes #1053
2022-09-28 23:51:05 -04:00
Hao Liu
0611f3efaa add migration code for receptor ca secret
Signed-off-by: Hao Liu <haoli@redhat.com>
2022-09-28 16:22:20 -04:00
Hao Liu
a94a6f045d change receptor ca secret to tls secret
change the type of secret use for receptor ca to tls secret, to be more "proper"

Signed-off-by: Hao Liu <haoli@redhat.com>
2022-09-27 21:38:07 -04:00
Christian Adams
1892b8f0ea Explicitly set kind value to AWX (#1056) 2022-09-20 23:09:13 -04:00
Christian Adams
57b5795aab Determine if k8s or ocp and set var accordingly (#1051)
* conditionally set fsGroup for projects_persistence based on cluster
    type
2022-09-20 23:03:05 -04:00
Christian Adams
e8096a5f33 Pre-create dummy rh secret to avoid errors (#952) 2022-09-14 19:04:32 -04:00
Israel Blancas
271bce48bd Upgrade operator-sdk version from 1.22.2 to 1.23.0 (#1038)
Signed-off-by: Israel Blancas <iblancasa@gmail.com>
2022-09-12 10:04:07 -04:00
Hao Liu
d64c34f8a4 Add receptor firewall rules to control nodes (#1012)
Support external execution nodes

- Allow receptor.conf to be editable at runtime
- Create CA cert and key as a k8s secret
- Create work signing RSA keypair as a k8s secret
- Setup volume mounts for containers to have access to the needed
  Receptor keys / certs to facilitate generating the install bundle
  for a new execution node
- added firewall rule, work signing and tls cert configuration to default receptor.conf

The volume mount changes in this PR fulfill the following:
- `receptor.conf` need to be shared between task container and ee container
  - **task** container writes the `receptor.conf`
  - **ee** consume the `receptor.conf`
- receptor ca cert/key need to be mounted by both ee container and web container
  - **ee** container need the ca cert
  - **web** container will need the ca key to sign client cert for remote execution node
  - **web** container will need the ca cert to generate install bundle for remote execution node
- receptor work private/public key need to be mounted by both ee container and web container
  - **ee** container need to private key to sign the work
  - **web** container need the public key to generate install bundle  for remote execution node
  - **task** container need the private key to sign the work

Signed-off-by: Hao Liu <haoli@redhat.com>
Co-Authored-By: Seth Foster <fosterbseth@gmail.com>
Co-Authored-By: Shane McDonald <me@shanemcd.com>

Signed-off-by: Hao Liu <haoli@redhat.com>
Co-authored-by: Shane McDonald <me@shanemcd.com>
Co-authored-by: Seth Foster <fosterbseth@gmail.com>
2022-09-09 15:13:05 -04:00
Christian Adams
1bddb98476 Update requirements.yml and vendor new collections (#1045) 2022-08-31 18:46:33 -04:00
Christian Adams
5f183999d0 Fix restore resource requirements field name for management pod resources (#1044) 2022-08-31 17:06:01 -04:00
Shane McDonald
3769897131 Merge pull request #1041 from shanemcd/ignore-pycache
Add __pycache__ to gitignore
2022-08-30 11:26:02 -04:00
Shane McDonald
7f86231009 Add __pycache__ to gitignore 2022-08-30 11:14:49 -04:00
Shane McDonald
f59dac829a Merge pull request #1040 from shanemcd/reusable-labels
Move labels into reusable templates
2022-08-30 11:13:47 -04:00
Shane McDonald
edecf4d2fe Move labels into reusable templates 2022-08-30 11:00:43 -04:00
Shane McDonald
4120b5e2b0 Merge pull request #977 from somebadcode/add-ingress-class-name-to-ingress-template
Adding ingress class name to ingress template (#716)
2022-08-29 09:12:52 -04:00
Tobias Dahlberg
8dabca5418 Adding ingress class name to ingress template (#716) 2022-08-29 11:11:19 +02:00
Fedor V
1d341a21d0 feat(readme): remove use of NAMESPACE var (#1028)
- it was used previously, but not anymore
2022-08-25 16:21:58 -04:00
Shane McDonald
f8719db954 Merge pull request #1013 from miles-w-3/debug-helm
Streamlined chart build
2022-08-25 11:59:04 -04:00
SweetGeneral
89425826e8 AWX.enable corrected to AWX.enabled (#1035)
Co-authored-by: sandesh.gupta <sandesh.gupta@olacabs.com>
2022-08-25 09:26:26 -04:00
Shane McDonald
5c572a9ba6 Merge pull request #1033 from mateuszdrab/patch-1
Remove reference to cluster.local
2022-08-25 08:44:32 -04:00
Shane McDonald
b7bbfd432d Merge pull request #1034 from whitej6/jlw-jinj3-filter-update
Fixes #1032 - Update filter to jinja 3.x format
2022-08-25 08:42:42 -04:00
Shane McDonald
b17cd16fb7 Merge pull request #1008 from rooftopcellist/fix-helm-pkg-build
Fix helm package build redundancy and release automation
2022-08-25 08:38:09 -04:00
Mac Chaffee
dc6cbab501 Import all ldap config classes in settings.py (#961)
* Import all ldap config classes in settings.py
* Add AUTH_LDAP_GROUP_TYPE example to readme

Signed-off-by: Mac Chaffee <machaffe@renci.org>
2022-08-24 18:00:08 -04:00
Jeremy White
a81be586db update filter to jinja 3.x format 2022-08-24 14:56:08 -05:00
Mateusz Drab
f2a9e967cc Remove reference to cluster.local 2022-08-24 20:07:11 +01:00
Christian Adams
9f017d03e6 Make Backup & restore requests and limits configurable (#1030)
* Add resource specification options to the backup objects
* Add resource specification options to the restore object

Co-authored-by: Ivan Aragonés <26822043+ivarmu@users.noreply.github.com>
Co-authored-by: silvinux <silvinux7@gmail.com>
Co-authored-by: Ivan Aragonés Muniesa <iaragone@redhat.com>
2022-08-23 23:23:01 -04:00
Christian Adams
7d2d1b3c5e Upgrade to Operator SDK v1.22.2 (#1001)
* Upgrade to Operator SDK 1.16.0

* Upgrade Operator SDK to v1.22.2 & bump base image version
2022-08-22 18:54:56 -04:00
Shane McDonald
5d0ebd0121 Merge pull request #1029 from shanemcd/delete-logging-code
Delete logging overrides in configmap
2022-08-22 11:48:05 -04:00
Shane McDonald
f368a539a9 Delete logging overrides in configmap 2022-08-22 10:56:37 -04:00
Shane McDonald
0aef4cc35f Merge pull request #1026 from shanemcd/respect-LOG_AGGREGATOR_LEVEL
Respect LOG_AGGREGATOR_LEVEL
2022-08-19 13:25:33 -04:00
Shane McDonald
e3701dd3db Respect LOG_AGGREGATOR_LEVEL 2022-08-18 19:10:54 -04:00
Elijah DeLee
cf98edc282 Merge pull request #976 from jainnikhil30/scale_callback_receiver_workers
configure callback receiver workers based on CPU
2022-08-09 07:23:08 -04:00
Nikhil
58a4778c89 configure callback receiver workers based on CPU 2022-08-09 13:18:41 +05:30
Shane McDonald
8e50bdde9b Merge pull request #1015 from shanemcd/installer-templates-cleanup
Organize installer templates into subdirectories
2022-08-05 12:49:51 -04:00
Shane McDonald
60386bc928 Organize installer templates into subdirectories 2022-08-05 10:45:15 -04:00
kurokobo
f1df88dc53 fix: change to safely skip task if backupDirectory is not defined (#1003) (#1004) 2022-08-04 10:42:43 -04:00
Miles Wilson
8de6179ac7 Streamlined chart build 2022-08-03 22:48:27 -04:00
Dimitri Savineau
8a3c8e727a Merge pull request #929 from dsavineau/undefined_limits_key
installer: fix undefined limit key in config
2022-08-02 10:05:47 -04:00
Christian Adams
c230016819 Fix helm package build redundancy and release automation (#1010) 2022-08-01 21:27:15 +00:00
Christian M. Adams
bea05c97ee Fix helm package build redundancy and release automation 2022-08-01 16:00:51 -04:00
John Westcott IV
3a6040e0cd Adding GitHub check to ensure PRs have the proper X/Y/Z flags 2022-08-01 14:09:56 -04:00
John Westcott IV
24f3f440f1 Adding GitHub check to ensure PRs have the proper X/Y/Z flags 2022-08-01 13:04:38 -04:00
Christian Adams
87b0511997 Use new postgres pod label when migrating from old instance (#1005) 2022-07-29 16:38:04 -04:00
Christian Adams
fde4a47a14 Bump dependencies stream (#841)
* Bump Postgresql, Nginx and Redis versions
* pg12 --> pg13 upgrade path
* Set supported pg version as a variable to remain DRY
* Make deleting the old db data pvc after upgrade configurable
* Use labels to find the postgres pod

* backup/restore: fix postgres label selector value

We need to use the deployment_name variable for the postgres instance
name.

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>

* backup/restore: add missing default supported_pg_version variable

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>

* restore: update database_host fact with pg suffix

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>

Co-authored-by: Dimitri Savineau <dsavinea@redhat.com>
2022-07-29 13:21:51 -04:00
John Westcott IV
af2e681f1e Please backup before attempting an upgrade (#1002) 2022-07-28 16:19:57 -04:00
lutskevich
82ffa3d348 Restore not managed external postgresql (#877)
* Restore not managed external postgresql

Update postgres.yml for restore from backup not managed external postgresql db.

* Update postgres.yml

* rm trailing spaces #48

Co-authored-by: Viktor Lutskevich <lutskevich.v@mail366.com>
2022-07-27 16:23:51 -04:00
Ming Quah
db6a5b53ed Move custom resource definitions into a CRDs folder (#994)
* Add missing quote for port parameter

* Add step to move CRDs into the correct folder
2022-07-26 18:48:20 -04:00
Shane McDonald
0be17476cd Merge pull request #979 from stanislav-zaprudskiy/allow_skipping_labels_patching_on_awx_resource
Introduce `set_self_labels` in CRDs
2022-07-20 12:41:20 -04:00
Shane McDonald
f4a781ccc5 Merge pull request #984 from bewing/makefile-logic
fix helm-chart Makefile issue
2022-07-20 12:40:20 -04:00
John Westcott IV
fcd2c4c023 Merge pull request #982 from john-westcott-iv/pr_template
Adding PR template
2022-07-19 04:22:41 -04:00
John Westcott IV
8e30a17a77 Adding PR template 2022-07-19 04:12:38 -04:00
Christian Adams
b3037c1067 Deprecate the backup_pvc_namespace field (#988)
- Removes backup_pvc_namespace field from OLM forms
  - This field has created confusion for users and there is no strong
    case for needing this functionality
  - Users will still be able to add it to the yaml for the CR if they
    want to use it with the cluster-scoped AWX operator
  - Remove unneeded advanced descriptors to avoid empty Advanced
    configuration expander

fixes AAP-1176
2022-07-18 17:35:11 -04:00
Brandon Ewing
f7ff132a2e fix helm-chart Makefile issue
GNU make resolves the $(wildcard ) macro when starting a block, and
caches it for the duration of the run.  In order to correctly remove
namespace references from the generated helm charts, we have to split
the generation and editing into two makefile targets.
2022-07-14 14:38:09 -05:00
Shane McDonald
5f06e90906 Merge pull request #963 from miles-w-3/helm-values
Added helm values, templates, and readme
2022-07-12 13:50:27 -04:00
Stanislav Zaprudskiy
36355b6a15 Introduce set_self_labels in CRDs
To allow skipping labels maintenance on CRs processed by the operator.
Resolves https://github.com/ansible/awx-operator/issues/756
2022-07-12 10:48:16 +02:00
Miles Wilson
bc08c4bbbe Added helm values, templates, and readme 2022-07-11 19:59:03 -04:00
Shane McDonald
7697825944 Merge pull request #983 from shanemcd/ingress_path-test
Add tests around ingress_path feature
2022-07-11 19:55:28 -04:00
Shane McDonald
8a325293b1 Add tests around ingress_path feature 2022-07-11 19:45:11 -04:00
Shane McDonald
dd53a1d415 Merge pull request #980 from sdktr/958_pgdump_command_customization
Fix 958: allow pg_dump backup command customization
2022-07-11 19:30:30 -04:00
Shane McDonald
c5db0e7104 Merge pull request #954 from bewing/helm-namespace
remove namespace from helm chart
2022-07-11 19:18:08 -04:00
Stefan de Kooter
59036fc373 Add free format pg_dump backup parameter 2022-07-10 19:03:32 +00:00
Christian Adams
c45a7bd4d7 Add Docs notes for custom secret keys (#969) 2022-06-28 11:05:49 -04:00
Shane McDonald
34b6354001 Merge pull request #956 from Cl0udius/add_auto_upgrade_parameter
added auto_upgrade flag
2022-06-27 13:39:11 -04:00
Shane McDonald
801f392447 Merge pull request #964 from taishen/devel
Add an example of the nodeport_port in readme
2022-06-27 13:38:24 -04:00
Shane McDonald
779572e8ff Merge pull request #944 from viv-dev/backup-cleanup
Option to delete backup dir on PV when AWXBackup object is deleted
2022-06-27 13:35:57 -04:00
Shane McDonald
e7e48f92a0 Merge pull request #962 from rooftopcellist/operator-resource-defaults
Add default resource requests for operator container
2022-06-27 13:33:32 -04:00
Brandon Ewing
3cd9ddd8c6 remove namespace from helm chart
Helm should be able to set the namespace for the operator at deploy time
via the --namespace option.  Use yq to remove all references to
namespaces in the helm chart prior to publishing.

Update CI process to create namespace during install.

Resolves #907
2022-06-27 12:26:14 -05:00
taishen
4e6be0a82c Add an example of the nodeport_port in readme 2022-06-27 22:02:42 +08:00
Viviana Capote
05943687fe Added option to also delete backup directory on PVC when AWXBackup CRD object is deleted 2022-06-27 15:45:33 +10:00
Shane McDonald
9676ebc008 Merge pull request #955 from doanminhtu/tudoan/fix-ldap-password-secret-usage
Fix ldap bind password secret usage: ldap_password_secret
2022-06-26 10:45:26 -04:00
Christian M. Adams
8352237260 Add default resource requests for operator container 2022-06-24 16:40:45 -04:00
Alexander Stock
35d4954027 added auto_update flag 2022-06-23 15:05:05 +02:00
Shane McDonald
4d6a491766 Merge pull request #959 from mac-chaffee/no-latest
Use specific version of redis image
2022-06-23 08:16:21 -04:00
Shane McDonald
fa9eb53f92 Merge pull request #950 from basecom/feature/nginx-ipv6-support
Enable ipv6 listening in nginx config
2022-06-23 07:51:41 -04:00
Tu Doan
00c9f5fbd1 Fix ldap secret to secret file 2022-06-23 10:49:27 +07:00
Mac Chaffee
fe82e9259e Use specific version of redis image
Signed-off-by: Mac Chaffee <machaffe@renci.org>
2022-06-22 16:14:39 -04:00
Tu Doan
635d530dc9 Fix ldap bind password secret usage 2022-06-20 17:03:38 +07:00
David Luong
e966e9299f Resolves #918 to make no_log configurable (#923) 2022-06-16 01:03:13 -04:00
John Westcott IV
683d23dbea Adding feature requests issue type (#951) 2022-06-15 17:30:00 -04:00
Roger Sikorski
8b3a297086 enable ipv6 on nginx 2022-06-15 17:37:02 +02:00
John Westcott IV
15830e3536 Merge pull request #947 from john-westcott-iv/github_folder_maintainance
.github folder maintainance
2022-06-13 12:20:00 -04:00
John Westcott IV
ef46d7f49c Changes from PR review 2022-06-13 11:15:52 -04:00
John Westcott IV
a5328b1a09 .github folder maintainance
Changing bug_report from markdown to yaml
Adding config.yml for new issues
Adding Code of Conduct and support to the README (along with tags at the
top of the readme)
Adding SECURITY.md
Adding CODE_OF_CONDUCT.md
2022-06-13 08:22:40 -04:00
Christian Adams
0983220fba Use awx web launch script to pick up the correct supervisor config (#935)
- reduce resource requests so that CI passes in resource constrained
    environments
2022-06-01 19:11:25 -04:00
Dimitri Savineau
ba3b6f5436 installer: fix undefined limit key in config
When the task_resource_requirements variable has no "limits" key (which
is the default value) then the config template generation fails

----------------------------------
looking for "config.yaml.j2" at "/opt/ansible/roles/installer/templates/config.yaml.j2"
File lookup using /opt/ansible/roles/installer/templates/config.yaml.j2 as file
fatal: [localhost]: FAILED! => {
"msg": "The task includes an option with an undefined variable. The error was: the inline if-expression on line 36 evaluated to false and no else section was defined.

The error appears to be in /opt/ansible/roles/installer/tasks/resources_configuration.yml: line 30, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: Apply Resources
 ^ here
----------------------------------

The current condition doesn't have a else statement so the template fails
when the "limits" key isn't present.
This rewrite the current if/else statement in jinja template.

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
2022-05-24 09:29:36 -04:00
Paul Verhoeven
3ac0232e89 Updated the Readme (#906)
* defaults in Deploying a specific version of AWX added

* Update README.md

updated the README clarified the defaults of Deploying a specific version of AWX
2022-05-09 17:24:43 -04:00
Christian Adams
75c7231afd Remove unneeded olm-parameter template file (#901) 2022-05-04 16:45:18 -04:00
Christian Adams
363aa3642b added capability to set the redis container resources (#899)
* added capability to set the redis container resources

* Reduce resource requests so that it can be scheduled on GitHub workflows

Co-authored-by: Cedric Morin <cedric.morin_ext@michelin.com>
2022-05-03 08:53:45 -04:00
Shane McDonald
bf74d5cc34 Merge pull request #799 from mamercad/helm
Add Helm functionality
2022-05-02 14:38:24 -04:00
Shane McDonald
46586bd7b6 Rework helm release process
This was mostly me working around a limitation in chart-releaser where it does not allow for uploading a chart to an existing release.
2022-05-02 14:12:59 -04:00
Shane McDonald
191be7bf3c Run test helm install in CI 2022-05-02 14:12:59 -04:00
Shane McDonald
b7e5f235ad Fix yq target
Without this I was seeing:

$ make yq
tar: yq_linux_amd64: Not found in archive
tar: Exiting with failure status due to previous errors
make: *** [Makefile:240: yq] Error 2
2022-05-02 14:12:59 -04:00
Mark Mercado
6cbc6a7234 Set CHART_OWNER as ${{ github.repository_owner }} 2022-05-02 14:12:59 -04:00
Mark Mercado
beba6a900d Update kustomize build args for v4+ 2022-05-02 14:12:59 -04:00
Mark Mercado
7f72260445 Adding document-start markers 2022-05-02 14:12:59 -04:00
Mark Mercado
5b7baa106d Adding CI for "make helm-chart" 2022-05-02 14:12:59 -04:00
Mark Mercado
9380686395 Handle amd64 versus x86_64 2022-05-02 14:12:59 -04:00
Mark Mercado
0de966153d Fix kubectl-slice for amd64 2022-05-02 14:12:59 -04:00
Mark Mercado
efaa4718ec Adding Helm functionality 2022-05-02 14:12:57 -04:00
Shane McDonald
e6a473b765 Merge pull request #887 from ansible/add-content-type-option-header-op
Add the X-Content-Type-Options nosniff header
2022-05-02 08:25:48 -04:00
Christian Adams
859384e9f6 Changed default pull secret to agreed upon name (#896) 2022-04-29 16:21:03 -04:00
Christian Adams
b66a16508f Clarify docs on how to configure an External Database (#895) 2022-04-29 15:35:07 -04:00
Christian Adams
3da427f31d Look for a specific pull secret when deployed in certain cloud environments (#894) 2022-04-27 15:44:10 -04:00
Shane McDonald
9f2b51a6a9 Fix mistake in debugging docs 2022-04-25 16:32:50 -04:00
Hung Tran
5b73ad172e Load LDAP password from secret and update guideline (#659)
* Load LDAP password from secret and update guideline

* Add pod_labels for custom pod labels

Signed-off-by: Loc Mai <lmai@axon.com>

* Omit tls secret if using wildcard cert

* Resolve conflicts

* Remove the ingress changes

* Remove the config changes

* Load LDAP password from secret and update guideline

* Omit tls secret if using wildcard cert

* Resolve conflicts

* Remove the ingress changes

* Remove the config changes

Co-authored-by: hungts <hungts@axon.com>
Co-authored-by: Loc Mai <lmai@axon.com>
Co-authored-by: Max Bidlingmaier <Max-Florian.Bidlingmaier@sap.com>
Co-authored-by: Max Bidlingmaier <maks@konsolan.de>
2022-04-25 16:16:10 -04:00
Shane McDonald
2227301707 Merge pull request #888 from shanemcd/debugging-docs
Add docs/debugging.md
2022-04-25 16:11:21 -04:00
Shane McDonald
9f63fc0da5 Add docs/debugging.md 2022-04-25 16:02:30 -04:00
Seth Foster
322aea970d Merge pull request #886 from fosterseth/make_csrf_settings_boolean
Render cookie settings as a boolean
2022-04-25 15:45:42 -04:00
Seth Foster
c4bef95662 Render cookie settings as a boolean 2022-04-25 15:31:09 -04:00
Jeff Bradberry
fa705f6466 Add the X-Content-Type-Options nosniff header 2022-04-25 14:00:07 -04:00
Seth Foster
7fd5083c16 Merge pull request #862 from fosterseth/add_priorityclass_option
Add priority class options to high priority pods
2022-04-21 15:40:55 -04:00
Christian M. Adams
daf15a93bf Reduce the resources requests for CI runs
* GitHub Workflows run in a resource constrained environment, we were
    asking too much of it, so pods never got scheduled.
2022-04-21 15:10:09 -04:00
Christian M. Adams
dfa0f6d45e Add docs for priority classes & fix typo 2022-04-21 11:59:15 -04:00
Christian M. Adams
21062f0708 Add default resource requests for postgres containers 2022-04-18 12:30:02 -04:00
Seth Foster
5372771bac Add priority class options to high priority pods
- Add postgres_priority_class
- Add control_plane_priority_class
- Add default requests for postgres pod to ensure at a "Burstable" QoS
2022-04-18 12:29:54 -04:00
Mac Chaffee
8df0969e6a Fix namespace name in readme (#868)
Signed-off-by: Mac Chaffee <machaffe@renci.org>
2022-04-15 16:08:43 -04:00
Jeremy Kimber
5af7e7f4b9 Ensure custom control plane EE is defined prior to creation of application credentials (#873)
Co-authored-by: Jeremy Kimber <jeremy.kimber@garmin.com>
2022-04-15 16:04:47 -04:00
Christian Adams
d8f91d112e Stop updating the admin user password (#874)
* This is overwriting changes the user makes to the admin password via
    the app itself
2022-04-14 16:35:37 -04:00
Christian Adams
379552218d Add back image_pull_secret field for backwards compatibility (#870) 2022-04-14 13:25:54 -04:00
David Luong
1686875321 Customize CSRF options (#825) 2022-04-13 19:42:07 -04:00
Christian Adams
1b41d945e6 Check if image_pull_secrets variable is defined (#865)
* Do not attempt to backup secret if none are defined
2022-04-11 11:10:09 -04:00
Dragutan Alexandr
5e81729bc9 Update README.md (#858)
cut off svg-content, link preserverd.
2022-04-06 21:39:49 -04:00
Christian Adams
575e594314 Wait for the postgres pod to enter the ready state before starting containers (#861) 2022-04-06 08:29:53 -04:00
Christian Adams
5f76d4917e Enable setting a list of image_pull_secrets (#860)
When there are e.g. multiple authenticated container registries used
we need to be able to add multiple imagePullSecrets to the k8s resource

Co-authored-by: Maximilian Meister <maximilian.meister@pm.me>
2022-04-05 11:51:21 -04:00
gamuniz
94c5c41a24 reording the django tasks to avoid race condition aap-2847 (#855)
* Reorder the django init tasks to avoid race condition - aap-2847
2022-04-01 14:55:57 -04:00
Shane McDonald
ee84625107 Merge pull request #843 from mac-chaffee/kustomize-umbrella
Add docs for proper kustomization installs
2022-03-28 16:56:01 -04:00
Mac Chaffee
add76c159b Mention how to install Kustomize.
It's recommended to install the standalone version of kustomize rather
than using the version that ships with kubectl because that version is
typically very old and doesn't match the docs.
2022-03-26 11:53:17 -04:00
Mac Chaffee
375031e1f8 Remove explicit tags to avoid need to bump versions
Signed-off-by: Mac Chaffee <machaffe@renci.org>
2022-03-24 19:18:46 -04:00
Christian Adams
ca6ab0a380 Merge pull request #844 from rooftopcellist/update-changelog
Add Changelog entries for 0.19.0 release
2022-03-23 18:20:00 -04:00
Christian M. Adams
236bce6970 Add Changelog entries for 0.19.0 release 2022-03-23 18:10:23 -04:00
Mac Chaffee
0a9e9722c5 Add docs for proper kustomization installs 2022-03-23 15:42:24 -04:00
Shane McDonald
58ac0cc369 Merge pull request #835 from shanemcd/stream8
Use stream8 for init container
2022-03-22 09:11:19 -04:00
Christian Adams
c3ac2e2cde Merge pull request #838 from kurokobo/quote
fix: add quotes for PGPASSWORD for the backup and restore roles
2022-03-21 10:50:51 -04:00
kurokobo
589a3751e1 fix: add quotes for PGPASSWORD for the backup and restore roles 2022-03-20 16:13:12 +09:00
Shane McDonald
12a58d71fb Use stream8 for init container 2022-03-18 13:56:15 -04:00
Shane McDonald
6b873b05ab Merge pull request #822 from kurokobo/operator_version
fix: add OPERATOR_VERSION as build-arg to pass the version to operator
2022-03-18 11:06:08 -04:00
Christian Adams
5e97ff7c08 Merge pull request #827 from rooftopcellist/rm-inject-params
Add AWX Logo to OLM deployments
2022-03-16 14:15:49 -04:00
Christian M. Adams
86c31a4317 Add AWX Logo to OLM deployments
* Remove unnecessary script for injecting olm params, use bases template instead

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2022-03-16 12:01:28 -04:00
Seth Foster
487727b454 Merge pull request #815 from kurokobo/nodeport
fix: fix corrupted spec for the service with nodeport type (#814)
2022-03-15 14:39:13 -04:00
kurokobo
2f47b907fd fix: add OPERATOR_VERSION as build-arg to pass the version to operator 2022-03-09 22:32:39 +09:00
kurokobo
dbaf64efa0 fix: fix corrupted spec for the service with nodeport type (#814) 2022-03-09 21:00:24 +09:00
Shane McDonald
5375fec77d Merge pull request #811 from shanemcd/format-readme-tables
Reformat markdown tables in README.md
2022-03-05 12:12:25 -05:00
Shane McDonald
9980192d9e Reformat markdown tables in README.md 2022-03-05 12:02:18 -05:00
Shane McDonald
e2fc5f46c0 Merge pull request #803 from rooftopcellist/sts-db-check
Run database-check initContainer on postgres sts instead
2022-03-05 11:59:00 -05:00
Shane McDonald
5b3be06e8d Allow for customizing postgres init container resources 2022-03-05 11:48:13 -05:00
Shane McDonald
3c2405f304 Merge pull request #807 from MrBones757/devel
added support for pod annotations to awx deployment
2022-03-05 10:18:50 -05:00
Christian M. Adams
192611eea8 Run database-check initContainer on postgres sts instead
- This avoids issues with multple initContainers trying to mount the
    postgres pvc at once, as is the case when there are multiple
replicas.

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2022-03-05 10:07:07 -05:00
MrBones757
9ca14cef93 added support for pod annotations to awx deployment 2022-02-25 09:54:55 +08:00
Shane McDonald
fbc2d3475c Merge pull request #800 from ggiinnoo/readme-dummy-proof
Added namespace warning | added apply command for missing namespace
2022-02-23 09:30:19 -05:00
Shane McDonald
58f30fb96c Merge pull request #789 from ubajze/fix-nodeport-port
Fix the custom port specification when service type is NodePort
2022-02-23 09:28:42 -05:00
Gino Jansen
c81b78aad6 Added namespace warning | added apply command for missing namespace 2022-02-18 14:31:29 +01:00
Shane McDonald
c02e05925e Merge pull request #797 from kdelee/sky-is-the-limit
only set mem/cpu setting if limit is set
2022-02-15 15:41:52 -05:00
Elijah DeLee
479c009716 only set mem/cpu setting if limit is set
Otherwise, we get the too-low setting of the request, which
will be a rough experience for folks who have been using the operator
and are used to the experience of having entire underlying node capacity

Users can still set the setting via extra_settings to get the experience
of having each pod with a individualized capacity, or set a limit.
2022-02-15 15:35:36 -05:00
Shane McDonald
7807bc516e Merge pull request #791 from kdelee/set_controlpod_mem_cpu
set memory setting based on resource settings
2022-02-15 14:12:41 -05:00
Elijah DeLee
3afcd7fd89 set memory and cpu setting based on resource settings
This way we can start using this setting in AWX again to help fix
https://github.com/ansible/awx/issues/11640
2022-02-15 14:09:21 -05:00
Shane McDonald
7002131dda Merge pull request #793 from kurokobo/readme
Update TOC in README.md
2022-02-12 13:04:17 -05:00
kurokobo
877943cc27 fix: update TOC in README.md 2022-02-12 16:49:17 +09:00
Shane McDonald
b59a0c5b80 Merge pull request #766 from nodje/Makefile-aarch64-patch
Take into account `aarch64` architecture return from uname
2022-02-11 17:36:10 -05:00
Shane McDonald
26b1eb6c87 Merge pull request #776 from arrase/feature/service_annotations
Allow service annotations not only for LoadBalancer type
2022-02-11 17:30:56 -05:00
Matthias R. Wiora
39437da72b feat(readme): add k8s cluster setup instructions (#592)
Add instructions for using with existing kubernetes cluster
2022-02-11 17:25:37 -05:00
Shane McDonald
e1645a2f8d Merge pull request #593 from kurokobo/upgrading
Add steps to upgrade to 0.14.0
2022-02-11 17:24:10 -05:00
Shane McDonald
224dde769a Merge pull request #536 from siju-vasudevan/patch-1
LDAPSearch Module is missing
2022-02-11 17:20:56 -05:00
Uros Bajzelj
536d7dc842 Fix the NodePort port specification 2022-02-11 10:57:43 +00:00
Shane McDonald
eac2328bd3 Merge pull request #721 from longns1/update-makefile-undeploy
update Makefile undeploy
2022-02-10 10:19:10 -05:00
Shane McDonald
3be986c96c Merge pull request #783 from AlanCoding/loop_control
Add some loop control for ansible warnings
2022-02-10 10:18:26 -05:00
Shane McDonald
768bc2f857 Merge pull request #652 from shanemcd/url-prefix-support
Support running AWX at non-root path
2022-02-09 10:37:07 -05:00
Alan Rominger
f05faaaaa0 Add some loop control for ansible warnings 2022-02-04 16:12:28 -05:00
Shane McDonald
957566993b Merge pull request #782 from AlanCoding/not_that_one
Avoid broken openshift package
2022-02-04 15:36:33 -05:00
Alan Rominger
c95f3299b0 Avoid broken openshift package 2022-02-04 15:24:49 -05:00
Christian Adams
1a0e3cf410 Merge pull request #772 from rooftopcellist/always-run-pg-initContainer
Always run database-check initContainer
2022-02-02 16:16:34 -05:00
Christian Adams
9368b43614 Merge pull request #775 from rooftopcellist/pg-args-advanced
Add OLM params for postgres_extra_vars
2022-02-01 17:02:42 -05:00
Juan Ezquerro LLanes
108addc06e Allow service annotations not only for LoadBalancer 2022-02-01 20:49:37 +01:00
Shane McDonald
3a3260ffb7 Merge pull request #770 from john-westcott-iv/github_meta_changes
Adding triage label to any new issue
2022-02-01 13:15:18 -05:00
Christian M. Adams
960d1f8a32 Fix volume mount syntax error
* conditionally run database-check init container only for managed db
    deployments
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2022-02-01 10:50:48 -05:00
Christian M. Adams
4d8f84eb74 Add OLM params for postgres_extra_vars
* follow-up for https://github.com/ansible/awx-operator/pull/753
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2022-02-01 08:17:11 -05:00
John Westcott IV
1320c9d175 Fixing linting issues 2022-01-31 12:19:31 -05:00
Christian M. Adams
fab71e054e Always run database-check initContainer 2022-01-31 09:40:19 -05:00
John Westcott IV
3eede3c922 Adding triage label to any new issue 2022-01-30 13:59:22 -05:00
Christian Adams
d27ce3c34d Merge pull request #755 from rooftopcellist/mv-data-subPath
Use an Init Container to move the pg data subPath in the pvc
2022-01-27 19:55:48 -05:00
Shane McDonald
18d17f2485 Merge pull request #763 from sooslaca/devel
Fix issue #762
2022-01-27 08:16:33 -05:00
nodje
47d3ef57f2 Take into account aarch64 architecture return from uname 2022-01-26 09:32:16 +01:00
sooslaca
8f8336b25a Fix issue #762
Fix https://github.com/ansible/awx-operator/issues/762
2022-01-23 16:17:24 +01:00
Shane McDonald
4aeeb8db82 Merge pull request #698 from mhrivnak/remove-warning
removes obsolete and confusing warning about project status
2022-01-19 18:21:30 -05:00
Christian M. Adams
5b636bb8ea Use an Init Container to move the pg data subPath in the pvc 2022-01-13 23:17:33 -05:00
Christian Adams
83939ec007 Merge pull request #726 from Skaopap/feature_topology_constraints
Add topology constraints to AWX CRD
2022-01-13 21:16:23 -05:00
bthominet
608478e249 add topolgy_spread_constraints 2022-01-13 09:50:12 +01:00
Christian Adams
cb9e44fd4f Merge pull request #753 from rooftopcellist/pg-extra-config
Add ability to configure extra args for postgres
2022-01-11 14:38:55 -05:00
Christian M. Adams
cbd7da9dcf Add default for postgres_extra_args variable 2022-01-11 14:18:34 -05:00
chris93111
0f07a475b5 Add ability to configure extra args for postgres
* add default extra args postgres

* add postgres_extra_args option to readme
2022-01-11 12:44:18 -05:00
Christian Adams
a2222a9176 Merge pull request #717 from rooftopcellist/scale-down-app
Scale down app pod when database is unavailable
2022-01-07 14:33:58 -05:00
longns1
79152d2417 update to make undeploy in Makefile works correctly when namespace is not awx 2022-01-07 15:57:27 +07:00
Christian M. Adams
fdbe607189 Scale down app pod when database is unavailable 2022-01-04 17:07:39 -05:00
Christian Adams
4a43de5101 Merge pull request #702 from rooftopcellist/truncate-version-label
Truncate image version label so that it avoids the 63 char k8s limit
2021-12-20 21:41:40 -05:00
Christian M. Adams
345738cba3 Truncate image version label so that it avoids the 63 char k8s limit
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-12-16 15:18:22 -05:00
Michael Hrivnak
f4995afb39 removes obsolete and confusing warning about project status
This warning originated [two years
ago](6e6cd37ce6 (diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R18)).
The API is now at `v1beta1`, so it's probably not accurate to call it
"alpha" anymore.

Since AWX and awx-operator are both OSS upstream projects, there is
implicitly no vendor support from Red Hat. The warning about support can
lead to confusion, and potentially imply that some other part of AWX is
supported, as demonstrated in a recent [twitter
thread](https://twitter.com/vwbusguy/status/1470902780311212035). When
this warning was written, the operator was self-described as an
"installation method for Ansible Tower or AWX". Since then, it appears
that the operator is focused only on upstream AWX, so that presumably
removes any need to clarify vendor support status.
2021-12-15 17:34:03 -05:00
Christian Adams
35062157e0 Merge pull request #690 from rooftopcellist/wait-for-postgres-2
Do not try to wait for Postgres on external db deployments
2021-12-10 15:03:50 -05:00
Christian M. Adams
3150d55af6 Do not try to wait for Postgres on external db deployments
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-12-09 19:31:37 -05:00
Christian Adams
4c51ee28f5 Merge pull request #688 from rooftopcellist/wait-for-postgres
Wait for Postgres to initialize before starting containers
2021-12-08 14:56:48 -05:00
Christian M. Adams
fbd5803f10 Wait for Postgres to initialize before starting containers 2021-12-07 17:42:55 -05:00
Christian Adams
8972cae1cc Merge pull request #686 from rooftopcellist/fix-deploy-target-dev
Fix deploy target for the devel branch
2021-12-07 14:36:52 -05:00
Christian M. Adams
1d8b3d9b4c Fix deploy target for the devel branch
* piping a make target within another target causes issues

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-12-07 10:57:33 -05:00
Paul Belanger
57aa585a2e Merge pull request #663 from pabelanger/temp/catalog 2021-11-19 15:03:18 -05:00
Paul Belanger
752813c23e Add CONTAINER_CMD to Makefile
This allows people to use podman if they want.

Signed-off-by: Paul Belanger <pabelanger@redhat.com>
2021-11-19 14:32:21 -05:00
Christian Adams
48ee59e80f Merge pull request #662 from rooftopcellist/restore-vars
Add in ansible debug logs env var
2021-11-19 13:25:45 -05:00
Christian M. Adams
78fc099c75 Add in ansible debug logs env var
* This will be added to the CSV automatically when make bundle is run

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-11-19 10:03:04 -05:00
Shane McDonald
5b577603c8 Merge pull request #627 from steinbrueckri/add-make-task
Add make task to create resources without applying to the cluster
2021-11-19 21:08:27 +08:00
Shane McDonald
e5cfac2ba0 Merge pull request #660 from shanemcd/stage-operator
Allow for independently staging awx-operator
2021-11-19 16:29:31 +08:00
Shane McDonald
5ca536313a Add test for DEFAULT_AWX_VERSION 2021-11-19 08:17:16 +00:00
Shane McDonald
eaaf55e7f0 Drive-by lint fix, actually enforce line length 2021-11-19 08:16:34 +00:00
Shane McDonald
5d934ff2b5 Allow for independently staging awx-operator 2021-11-19 06:34:16 +00:00
Shane McDonald
84ab70f779 Fix secret name 2021-11-19 13:22:36 +08:00
Shane McDonald
d74b5baf45 Delete RELATED_ variables from upstream deployment
I ran into a bug with this when releasing the latest version of AWX. RELATED_IMAGE_AWX always clobbers the version and does not respect `DEFAULT_AWX_VERSION`
2021-11-19 13:16:24 +08:00
Shane McDonald
246bd829ec Merge pull request #658 from shanemcd/promote-releases
Move to promotion-based release process
2021-11-19 12:22:17 +08:00
Shane McDonald
c28e4729e6 Move to promotion-based release process 2021-11-19 02:29:16 +00:00
Christian Adams
da63fe4653 Merge pull request #656 from rooftopcellist/align-descriptions-2
Add back CSV descriptions that got lost
2021-11-18 09:43:19 -05:00
Christian M. Adams
7e2d726b26 Add more descriptions that got lost 2021-11-17 14:46:23 -05:00
Christian Adams
fd38c33f14 Merge pull request #654 from rooftopcellist/security-context-olm-params
Add security_context_settings param to olm-params
2021-11-17 14:35:07 -05:00
Christian M. Adams
a16e05d2f6 Add security_context_settings param to olm-params
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-11-17 09:47:43 -05:00
Shane McDonald
1ad5c9e981 Merge pull request #653 from rooftopcellist/align-descriptions
Minor description update
2021-11-17 21:40:39 +08:00
Christian M. Adams
79ee798df7 Align upstream and downstream descriptions 2021-11-16 15:22:27 -05:00
Shane McDonald
c843194cbd Support running AWX at non-root path 2021-11-14 04:26:24 +00:00
Shane McDonald
d1d6785b7d Merge pull request #645 from shanemcd/pod-security-context
Add support for arbitrary pod-level securityContext settings
2021-11-11 06:16:56 +08:00
Shane McDonald
138964f7ab Add support for arbitrary pod-level securityContext settings
This allows for doing stuff like this on the custom resource:

```
security_context_settings:
  runAsUser: 1000
  runAsGroup: 0
```

I added `snakeCaseParameters: False` because without it, variables like `runAsUser` become `run_as_user`... and that doesnt work.
2021-11-10 21:36:42 +08:00
Yanis Guenane
b2479c8014 Merge pull request #632 from Spredzy/fix_control_image
control_plane_ee: Honor proper ordering
2021-11-02 11:02:51 +01:00
Yanis Guenane
277b772c46 control_plane_ee: Honor proper ordering 2021-11-02 10:45:11 +01:00
Yanis Guenane
7d20335cff Merge pull request #630 from Spredzy/fix_handshake
Set default images, but use them as a last resort
2021-11-02 10:13:16 +01:00
Yanis Guenane
fc713e7b73 Properly apply default when env lookup returns empty 2021-11-02 09:57:04 +01:00
Yanis Guenane
26856d528d Merge pull request #629 from Spredzy/hidemoreunhidden
OLM: Mark as advanced more fields
2021-11-01 15:02:18 +01:00
Christian M. Adams
7eb6d0e0f5 Set default images, but use them as a last resort
* Only use them if user did not set an image, or RELATED_IMAGES_ var
    is not set

Signed-off-by: Christian M. Adams <chadams@redhat.com>
(cherry picked from commit bb957be9e6)
2021-11-01 14:58:24 +01:00
Yanis Guenane
fd03731a72 OLM: Mark as advanced more fields 2021-11-01 14:12:14 +01:00
kurokobo
b0824acc48 Add steps to upgrade to 0.14.0 2021-10-29 22:01:10 -04:00
Richard Steinbrück
782f97c42c Add make task to create resources without applying to the cluster 2021-10-29 11:24:14 +02:00
Shane McDonald
09088b5b18 Merge pull request #620 from rooftopcellist/rename-image-vars
Rename related image vars to be distinct across operators
2021-10-27 12:59:02 -04:00
Christian M. Adams
29879f7064 Rename related image vars to be distinct across operators 2021-10-27 11:26:51 -04:00
Christian Adams
b866d682ef Merge pull request #616 from rooftopcellist/disconnected
Use relatedImages to make disconnected deployments possible
2021-10-26 08:37:20 -04:00
Christian M. Adams
8aee279634 Use relatedImages to make disconnected deployments possible
* Add ability to pass images in from the CSV for disconnected installs

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-10-26 00:26:16 -04:00
Yanis Guenane
071b67a814 Merge pull request #617 from rooftopcellist/unique-operator-image
Rename operator image name to make it unique from resource & pulp
2021-10-25 21:15:12 +02:00
Christian M. Adams
894b0ffa5f Rename operator image name to make it unique from resource & pulp operators 2021-10-25 14:02:59 -04:00
Shane McDonald
670b1f7d40 Merge pull request #612 from shanemcd/allow-awx-version-override
Allow for overriding default AWX version as env var
2021-10-20 17:13:25 -04:00
Shane McDonald
7b59c36263 Allow for overriding default AWX version as env var 2021-10-20 17:01:23 -04:00
Shane McDonald
c8d4ae16bb Merge pull request #613 from shanemcd/obtain-version-from-git
Obtain version from git
2021-10-18 17:56:01 -04:00
Shane McDonald
2e74c63c9e Obtain version from git tags
If you `git checkout <some-released-tag>` this should just work. If you run this from the HEAD of devel, you will need to run `make docker-build docker-push` and override the appropriate image versions.
2021-10-18 17:37:26 -04:00
Shane McDonald
706dc80f17 Revert "Lookup version from git when building bundle / catalog"
This reverts commit 7fd4d46f6e.
2021-10-18 17:37:26 -04:00
Shane McDonald
3d6094a5b0 Merge pull request #606 from rooftopcellist/generate-csv
Inject OLM parameters when generating bundle
2021-10-15 14:04:40 -04:00
Christian M. Adams
37470a0943 Inject OLM parameters when generating bundle
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-10-14 01:18:27 -04:00
Shane McDonald
b65ba92b08 Merge pull request #605 from shanemcd/get-scm-version-for-bundle
Get version from tags when building bundle / catalog
2021-10-13 15:10:25 -04:00
Shane McDonald
7fd4d46f6e Lookup version from git when building bundle / catalog
VERSION = "latest" breaks `make bundle` and `make catalog`.
2021-10-13 14:59:32 -04:00
Shane McDonald
eaff6898a4 Ignore files generated by bundle / catalog Make targets 2021-10-13 14:54:55 -04:00
Shane McDonald
38c64a504d Merge pull request #559 from oliverf1/redis_capabilities
Add an option to specify container capabilities for the redis container
2021-10-13 14:24:23 -04:00
Shane McDonald
563bdd6360 Merge pull request #602 from shanemcd/kind-load-docker-image
Copy awx image into kind cluster in molecule tests
2021-10-11 18:25:02 -04:00
Shane McDonald
9eb0e35861 Copy awx image into kind cluster in molecule tests
This only happens when overriding the AWX image used in tests.
2021-10-11 18:14:57 -04:00
Shane McDonald
21fe2646b4 Merge pull request #598 from shanemcd/show-me-the-errors
Surface any errors that happen while launching demo jt in tests
2021-10-08 14:58:39 -04:00
Shane McDonald
ebbb87f9a6 Surface any errors that happen while launching demo jt in tests 2021-10-08 14:45:57 -04:00
Shane McDonald
ee2980b8bb Merge pull request #589 from shanemcd/override-awx-image-in-tests
Allow for overridding awx image in tests
2021-10-06 20:08:12 -04:00
Shane McDonald
2426956a0a Allow for overridding awx image in tests 2021-10-06 19:57:36 -04:00
Shane McDonald
391e0bb1b8 Merge pull request #587 from shanemcd/no-hardcoded-versions
Introduce latest tag
2021-10-05 21:31:08 -04:00
Shane McDonald
5e7fe9b05f Tag releases as "latest" 2021-10-05 21:20:10 -04:00
Shane McDonald
685c5efc94 Switch to latest tag 2021-10-05 21:20:02 -04:00
Shane McDonald
e3d5827951 Merge pull request #586 from shanemcd/no-hardcoded-versions
Remove hardcoded versions from repo
2021-10-05 21:11:32 -04:00
Shane McDonald
ebb4e76e1c Merge pull request #585 from shanemcd/fix-devel-workflow
Fix devel workflow
2021-10-05 20:58:59 -04:00
Shane McDonald
f62b66d4ae Remove hardcoded versions from repo 2021-10-05 20:56:29 -04:00
Shane McDonald
1f73e2ca32 Fix devel workflow 2021-10-05 20:51:56 -04:00
Shane McDonald
48f990f4a1 Merge pull request #579 from sdigit/devel
Add Ingress path type option
2021-10-04 17:58:14 -04:00
Sean Davis
b1dcf16fc8 Add Ingress path type option (#1)
* make ingress_path_type an option

* add to spec
2021-10-04 10:31:56 -05:00
Shane McDonald
9e9457cf99 Fix release workflow 2021-10-03 10:19:07 -04:00
Shane McDonald
b59205ce69 Fix release workflow 2021-10-03 10:12:23 -04:00
Olivier
f0c5d1b4e3 Add an option to specify container capabilities for the redis container
With some kubernetes clusters and settings, you might need to specify
some capabilities so the container can start. For example, the CHOWN,
SETUID and SETGID capabilties.
Setting the redis_capabilities option will add the capabilities in
the deployment.
2021-10-02 18:43:37 -04:00
Shane McDonald
d6eafcd85b Merge pull request #577 from shanemcd/awx-19.4.0
Bump AWX version
2021-10-02 16:16:07 -04:00
Shane McDonald
eb0d3cdebf Merge pull request #576 from jamesmarshall24/pr-issue-565
Note for wrapping pg password in quotes
2021-10-02 15:32:46 -04:00
Shane McDonald
ad2b49ab29 Update release workflow
To work with newer versions of operator-sdk
2021-10-02 15:27:41 -04:00
Shane McDonald
1095bc0518 Use AWX 19.4.0 2021-10-02 15:23:55 -04:00
jamesmarshall24
133dfc5138 Note for wrapping pg password in quotes
- Add a note suggesting the password for postgres stringData be wrapped in quotes especially for passwords with special characters.
2021-10-01 16:00:07 -07:00
Shane McDonald
7e4923864f Merge pull request #567 from craph/devel
Fix: Enhance migration documentation
2021-10-01 14:00:30 -04:00
Shane McDonald
ebe5d1e2f4 Merge pull request #569 from shanemcd/sdk-1.x
Migrate project to operator-sdk 1.x
2021-10-01 10:44:38 -04:00
Shane McDonald
8b64670146 Work around bug in k8s module with the "template" attribute 2021-09-29 20:24:00 -04:00
Shane McDonald
86e0cf884f Add smoke test that verifies that basic jobs work 2021-09-29 18:39:27 -04:00
Shane McDonald
eaa4d33aea Move test requirements out of github action workflow 2021-09-29 18:39:27 -04:00
Shane McDonald
ccff76dec5 Do not set default hostname for ingress 2021-09-29 18:39:27 -04:00
Shane McDonald
91d17eabef Delete scripts/ directory 2021-09-29 18:39:27 -04:00
Shane McDonald
ca72423ca4 Update release process docs 2021-09-29 18:39:27 -04:00
Shane McDonald
12361d6ff1 Delete files no longer necessary 2021-09-29 18:39:26 -04:00
Shane McDonald
e9ade56842 Add note about upgrading to 0.14.0 2021-09-29 18:39:26 -04:00
Shane McDonald
cf22f9ba52 Fix link to upgrade docs 2021-09-29 18:39:26 -04:00
Shane McDonald
d4c8fd67f3 Update readme 2021-09-29 18:39:26 -04:00
Shane McDonald
d9fbda5e15 Add ability to override namespace when running make deploy 2021-09-29 18:39:26 -04:00
Shane McDonald
aa969e2a93 yamllint: ignore files managed by kustomize 2021-09-29 18:39:26 -04:00
Shane McDonald
d27bb69b96 Lower resource requirements to get CI passing 2021-09-29 18:39:25 -04:00
Shane McDonald
85f3c23788 Whitespace fixes 2021-09-29 18:39:25 -04:00
Shane McDonald
965647f933 Update tests to use kubernetes.core 2021-09-29 18:39:25 -04:00
Shane McDonald
88dd0e648e Force install of correct kustomize version in GHA 2021-09-29 18:39:25 -04:00
Shane McDonald
59efcb7be8 Install community.docker in tests 2021-09-29 18:39:25 -04:00
Shane McDonald
48ab801c8c Adopt the new molecule/ directory structure from the operator-sdk 1.x scaffolding 2021-09-29 18:39:25 -04:00
Shane McDonald
65b89ea7bd Fix ansible-lint 2021-09-29 18:39:24 -04:00
Shane McDonald
69203723ef Update scaffolding to pass yamllint 2021-09-29 18:39:24 -04:00
Shane McDonald
e97def4429 meta -> ansible_operator_meta 2021-09-29 18:39:24 -04:00
Shane McDonald
316d08ccb4 Begin to migrate towards operator-sdk 1.x project structure 2021-09-29 18:39:22 -04:00
Raphaël COMBEAU
26fb620a40 Fix: Enhance migration documentation refs: https://github.com/ansible/awx-operator/issues/557 2021-09-28 16:29:42 +02:00
Yanis Guenane
302957e509 Merge pull request #541 from rooftopcellist/restrict-sa
Move to namespace-scoped operator for better security & isolation
2021-09-21 09:30:47 +02:00
Christian M. Adams
8bd6cffd7b Add namespace-scoped upgrade docs & changelog entry 2021-09-20 17:21:42 -04:00
Christian M. Adams
58c3ebf4b0 Move to a per-namespace deployment approach
* This increases security, the awx-operator SA has less cluster-wide
    access
  * This means one operator can only deploy to a single namespace
  * If AWX deployments are needed in multiple namespaces, multiple
    awx-operators can be deployed to accomplish this.

Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-09-20 09:15:10 -04:00
Christian M. Adams
fcbf8b5715 Reduce awx-operator service account permissions 2021-09-20 09:15:09 -04:00
Yanis Guenane
1165492185 Merge pull request #552 from fao89/color
Pinning molecule
2021-09-20 10:04:27 +02:00
Fabricio Aguiar
47c32d3e18 Pinning molecule
- temporarily pin molecule
- add color to molecule run
2021-09-17 17:20:02 -03:00
siju-vasudevan
38ec4a3b00 LDAPSearch Module is missing
Since LDAPSearch Module is missing LDAP authentication is not working if you configure the LDAP configuration via extra_settings.
2021-09-09 10:04:30 +05:30
Christian Adams
c235c6d7e8 Merge pull request #523 from eoq/eoq-patch-1
Add Uninstall section
2021-09-08 22:36:37 -04:00
eoq
054d5eb93f Update README.md
added some quotes
2021-09-08 22:14:08 -04:00
eoq
b684a5de35 Update README.md
one more tweak to uinstall comments
2021-09-08 16:03:18 -04:00
eoq
e6d7f88a33 Update README.md
modified uninstall section based on PR review feedback
2021-09-08 16:01:48 -04:00
Christian Adams
c24f191ec6 Merge pull request #534 from rooftopcellist/mount-receptor-config-followup
Make receptor.conf path consistent between containers
2021-09-08 09:46:54 -04:00
Christian M. Adams
fc9cd6bdb1 Make receptor.conf path consistent between containers 2021-09-08 09:11:37 -04:00
Christian Adams
e3b746f1c5 Merge pull request #529 from rooftopcellist/mount-receptor-config
Mount receptor config in awx-task container
2021-09-08 08:57:43 -04:00
Christian M. Adams
eb4b5b9b90 Mount receptor config in awx-task container 2021-09-07 18:49:26 -04:00
Christian Adams
f3cdf57f0d Merge pull request #501 from BongoEADGC6/devel
Added nodeport port properties
2021-09-07 09:09:10 -04:00
eoq
cd9bbc3a0e Add Uninstall section
Just a quick instruction on how to remove an AWX deployment from a new user who struggled with it for a bit.
2021-09-05 07:38:16 -04:00
Marcelo Moreira de Mello
4519dbdff7 Merge pull request #512 from thorian93/patch-1
Add clarification for inexperienced users
2021-09-02 12:32:18 -04:00
Christian Adams
549b8ca4c2 Merge pull request #508 from rooftopcellist/selective-v1-shift
Use v1 extensions because v1beta1 is being removed
2021-08-27 16:56:57 -04:00
Christian M. Adams
1df3df11ce Use v1 extensions because v1beta1 is being removed
Signed-off-by: Christian M. Adams <chadams@redhat.com>
2021-08-27 13:28:07 -04:00
Thorian93
12e38b7f69 Add clarification for inexperienced users
We hit that issue ourselves and it took us weeks until someone pointed out our error.
As it feels like this could hit other users inexperienced with kubernetes too, I propose this note.
2021-08-27 09:40:11 +02:00
Cliff Hults
fa410ae882 Fixing nodeport_port table default 2021-08-16 13:46:04 -04:00
Cliff Hults
9b072aa549 Added nodeport properties 2021-08-14 19:50:29 -04:00
Shane McDonald
0da8f41a86 Merge pull request #500 from shanemcd/0.13.0
Bump versions / OLM metadata
2021-08-12 23:22:31 -04:00
Shane McDonald
8ac0de159a Bump versions / OLM metadata 2021-08-12 23:12:22 -04:00
Shane McDonald
dcc32aa052 Merge pull request #499 from rooftopcellist/revert-fs-perm
Revert initContainer change to address FS permissions issues
2021-08-12 17:51:17 -04:00
Christian M. Adams
8952d8fd64 Revert "pgsql uses initContainer to address FS permissions"
This reverts commit 99d77dff99.
2021-08-12 15:51:15 -04:00
Christian M. Adams
ebaa407444 Revert "Added fsGroup"
This reverts commit 649f0cc3fb.
2021-08-12 15:50:42 -04:00
Christian Adams
47cec1f28d Merge pull request #485 from tchellomello/fsGroup-pgsql
pgsql uses initContainer to address FS permissions
2021-08-12 15:36:46 -04:00
Christian Adams
e636363e9e Merge pull request #495 from ansible/awx-ee-latest
use awx-ee:latest
2021-08-11 16:26:59 -04:00
Elijah DeLee
91d299926a update name of ee as well as the image 2021-08-11 14:54:24 -04:00
Elijah DeLee
01fe816fe8 use awx-ee:latest
We are updating the requirements in awx to get the latest receptor and runner in the task container,
we should also have the latest in the EE

see https://github.com/ansible/awx/pull/10861 and https://github.com/ansible/awx/pull/10858
2021-08-11 11:41:12 -04:00
Marcelo Moreira de Mello
649f0cc3fb Added fsGroup 2021-07-31 00:56:20 -04:00
Marcelo Moreira de Mello
99d77dff99 pgsql uses initContainer to address FS permissions 2021-07-31 00:50:30 -04:00
Christian Adams
f0b439c125 Merge pull request #464 from js-rwwa/devel
Define ingress path as variable for deployments
2021-07-26 09:54:13 -04:00
Marcelo Moreira de Mello
4651216cc0 Merge pull request #413 from tchellomello/fsGroup
Use fsGroup and handles NFS shares
2021-07-21 12:06:29 -04:00
Marcelo Moreira de Mello
24916c6fa1 Using fsGroup and extends propers via InitContainer (NFS) 2021-07-21 10:36:55 -04:00
tabjer
e36b1a3b2c Reset for some changes, updated crd and regenerated files 2021-07-15 08:44:30 +08:00
tabjer
cc6cb4b990 Updated awx-operator, crds for ingress_path 2021-07-12 12:23:11 +08:00
tabjer
0cd6d722af Updated ingress documentation 2021-07-12 09:20:52 +08:00
tabjer
3a330e4943 Added default ingress_path, made it an overridable var 2021-07-12 09:09:01 +08:00
Marcelo Moreira de Mello
6e59e24c40 Merge pull request #463 from bluikko/patch-1
Typo in README.md
2021-07-10 01:23:30 -04:00
bluikko
5c8897554a Typo in README.md
"from-file" mistyped as "from-fle"
2021-07-10 11:46:53 +07:00
Christian Adams
a8881c4de3 Merge pull request #460 from rooftopcellist/no_log_creds
Set no_log on all tasks that could leak secrets in logs
2021-07-08 09:11:25 -04:00
Christian M. Adams
68b00efe5e Set no_log on all tasks that could leak secrets in logs 2021-07-07 18:19:31 -04:00
Shane McDonald
3fd13f58f1 Merge pull request #456 from nntrn/patch-1
Update README.md
2021-07-06 12:54:13 -04:00
Shane McDonald
c43da3c1d1 Merge pull request #453 from EagleIJoe/fix_route_status
added openshift api version
2021-07-06 12:50:51 -04:00
annie tran
f8d5595032 Update README.md
Add demonstration for running kubectl inside minikube and add step to create alias
2021-07-06 10:30:48 -05:00
Martin Adler
c9ec522956 added openshift api version 2021-07-05 11:12:34 +02:00
Yanis Guenane
adbdf82aa3 Merge pull request #450 from Zokormazo/secrets
Backup and restore secret type
2021-07-02 14:05:17 +02:00
Yanis Guenane
3f75d9a782 Merge pull request #448 from Zokormazo/disown-restored-secrets
Remove ownerReference on restored secrets
2021-07-02 14:02:55 +02:00
Julen Landa Alustiza
663c009cf4 Backup and restore secret type
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-07-02 13:07:44 +02:00
Julen Landa Alustiza
c1b29505d9 Remove ownerReference on restored secrets
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-07-02 11:44:12 +02:00
Christian Adams
328c92ffe6 Merge pull request #446 from rooftopcellist/missing-secrets
Do not check for default ee-pull-cred secret
2021-07-01 15:17:12 -04:00
Christian M. Adams
cf2cd14154 Do not check for default ee-pull-cred secret
* fix nested var ref for awx_spec.spec
2021-07-01 15:05:18 -04:00
Yanis Guenane
e86799e05f Merge pull request #447 from rooftopcellist/namespace-not-required
Namespace not required
2021-07-01 21:01:58 +02:00
Christian M. Adams
1c74472b49 Namespace option always available in catalog for restores 2021-07-01 12:45:22 -04:00
Christian M. Adams
b79ab92714 Use restore namespace as default if none provided 2021-07-01 11:26:53 -04:00
Yanis Guenane
c0ff27a8e6 Merge pull request #444 from Spredzy/hide_postgres
Backup and Restore: Hide postgres_image overide
2021-07-01 15:16:46 +02:00
Yanis Guenane
a214264083 Backup and Restore: Hide postgres_image overide 2021-07-01 14:17:07 +02:00
Shane McDonald
869e7e3ef0 Merge pull request #442 from shiinro/devel
add image_pull_secret to postgres install
2021-06-30 15:33:27 -04:00
h-dev.inns-tools.ext
1ddbef6105 add image_pull_secret to postgres install 2021-06-30 20:43:33 +02:00
Shane McDonald
80001a192a Merge pull request #441 from rooftopcellist/add-gen-secrets
Fix var so that generated secret names are added to spec backup
2021-06-30 12:52:22 -04:00
Christian M. Adams
8b2bfa7380 Fix var so that generated secret names are added to spec backup 2021-06-30 10:57:42 -04:00
Yanis Guenane
8f43d8fe51 Merge pull request #438 from Spredzy/fix_incorrect_type
olm-catalog: Update incorrect type for image_pull_secret
2021-06-29 13:53:50 +02:00
Yanis Guenane
920db19f52 olm-catalog: Update incorrect type for impage_pull_secret 2021-06-29 11:49:52 +02:00
Yanis Guenane
60e9d254d5 Merge pull request #437 from Spredzy/fix_init_container_typo
olm-catalog: Setup accurate path var for init_container_image_version
2021-06-29 11:25:16 +02:00
Yanis Guenane
f218feb580 olm-catalog: Setup accurate path var for init_container_image_version 2021-06-29 10:46:23 +02:00
Shane McDonald
555dc8516a Merge pull request #436 from shanemcd/bump-0.12.0
Bump versions for next release
2021-06-28 18:31:19 -04:00
Shane McDonald
34958282d2 Merge pull request #435 from rooftopcellist/keep-spec-newlines
Preserve newlines in AWX spec
2021-06-28 17:50:54 -04:00
Christian M. Adams
6b01ada12b preserve newlines in AWX spec 2021-06-28 17:39:01 -04:00
Shane McDonald
e28d114d78 Bump versions for next release 2021-06-28 17:26:06 -04:00
Julen Landa Alustiza
cd312c6d70 Merge pull request #431 from Zokormazo/ca-fields-to-advanced
olm-catalog: Add missing custom trusted CA related fields
2021-06-28 11:02:20 +02:00
Shane McDonald
82422b8510 Merge pull request #412 from tchellomello/enhanhce_docs_ee
Enhances ee* documentation
2021-06-25 13:19:07 -04:00
Christian Adams
c7c97da68e Merge pull request #430 from rooftopcellist/backup-ee-pull-secret
Backup ingress, bundle & ee pull secrets
2021-06-25 12:00:12 -04:00
Shane McDonald
657b5b67db Merge pull request #432 from shanemcd/fix-extra-settings
Allow for types other than strings to be passed to extra_settings
2021-06-25 09:56:50 -04:00
Shane McDonald
b664b920dc Allow for types other than strings to be passed to extra_settings
This feature was not working as intended
2021-06-25 09:47:08 -04:00
Julen Landa Alustiza
7ea60efe3e olm-catalog: Add missing custom trusted CA related fields
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-06-25 11:36:36 +02:00
Christian M. Adams
f5c8b33b40 Backup ingress, bundle & ee pull secrets 2021-06-24 13:50:49 -04:00
Julen Landa Alustiza
a28a744f00 Merge pull request #429 from Zokormazo/explicitly-nullify-ownerreference
Explicitly nullify ownerReference on operator created backup pvc
2021-06-24 15:39:47 +02:00
Julen Landa Alustiza
68aaf1db79 Explicitly nullify ownerReference on operator created backup pvc
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-06-24 14:58:18 +02:00
Shane McDonald
b8d6dcfbf2 Merge pull request #427 from shanemcd/fix-secrets-with-newlines
Preserve newlines when restored secrets contain newlines
2021-06-23 20:09:08 -04:00
Shane McDonald
0ea9a04028 Preserve newlines when restored secrets contain newlines 2021-06-23 19:57:44 -04:00
Shane McDonald
e448d0ec8e Merge pull request #425 from rooftopcellist/downgrade-kubernetes-module
Downgrade kubernetes module to 1.1.1 because of template bug
2021-06-23 17:20:40 -04:00
Shane McDonald
cb14c9a1fc Pin to different version of kubernetes.core for CI usage
Bugs everywhere!
2021-06-23 17:07:27 -04:00
Shane McDonald
ca52b6c1c7 Merge pull request #423 from dolgovas/devel
Update README.md
2021-06-23 16:09:49 -04:00
Christian M. Adams
d3cfc55944 Downgrade kubernetes module to 1.1.1 because of template bug 2021-06-23 14:38:48 -04:00
dolgovas
00fd08e731 Update README.md
Add additional information about `image_pull_secret`
2021-06-23 20:06:41 +03:00
Yanis Guenane
e0c865a9f7 Merge pull request #419 from Spredzy/update_vendored
vendor: update dir with kubernetes.core
2021-06-23 00:49:50 +02:00
Yanis Guenane
53ffc8fdae vendor: update dir with kubernetes.core 2021-06-23 00:37:37 +02:00
Shane McDonald
6c1f251558 Merge pull request #417 from shanemcd/fix-uuid
Fix SYSTEM_UUID
2021-06-22 15:02:06 -04:00
Shane McDonald
7310b43a5c Use kubernetes.core 2021-06-22 14:52:54 -04:00
Shane McDonald
9a54ae2937 Delete test-local, run test-minikube in CI
bsycorp/kind is broken. See https://github.com/bsycorp/kind/issues/44
2021-06-22 14:35:39 -04:00
Shane McDonald
64c55c8824 Fix SYSTEM_UUID 2021-06-21 09:49:36 -04:00
Marcelo Moreira de Mello
9cc8aeeb4b Enhance ee documentation 2021-06-18 13:53:22 -04:00
Marcelo Moreira de Mello
d6d39889c4 Merge pull request #401 from tchellomello/custom-ca
Added ability to trust a custom bundle CA
2021-06-18 12:07:51 -04:00
Yanis Guenane
68a6a55cfc Merge pull request #411 from Spredzy/remove_extra_space
awx-cro.yml: Remove extra space
2021-06-18 10:23:58 +02:00
Yanis Guenane
ad036c2e65 awx-cro.yml: Remove extra space
Fixes: https://github.com/ansible/awx-operator/issues/410
2021-06-18 09:54:49 +02:00
Marcelo Moreira de Mello
f2e43db37c Added ability to trust a custom bundle CA 2021-06-18 01:48:50 -04:00
Shane McDonald
1fb429b1ed Merge pull request #409 from shanemcd/bump-0.11.0
AWX Operator 0.11.0
2021-06-17 17:10:04 -04:00
Shane McDonald
4d027c7d22 Update README 2021-06-17 16:28:45 -04:00
Shane McDonald
785b9ef70f Bump versions 2021-06-17 16:28:30 -04:00
Yanis Guenane
d834701612 Merge pull request #407 from Spredzy/ee_resource_requirements
EE: Allow one to specify resource requirements
2021-06-17 15:00:06 +02:00
Yanis Guenane
0f4cc52e71 EE: Allow one to specify resource requirements 2021-06-17 12:44:12 +02:00
Yanis Guenane
135ee98146 Merge pull request #406 from Spredzy/tower_ee_extra_env
EE: Allow one to specify extra environment variable
2021-06-17 11:19:20 +02:00
Yanis Guenane
3899365da7 EE: Allow one to specify extra environment variable 2021-06-17 10:43:52 +02:00
Shane McDonald
12f9fff6d5 Merge pull request #405 from shanemcd/community.docker
Update build-and-push.yml to use community.docker
2021-06-16 12:51:04 -04:00
Shane McDonald
f565befdb0 Update build-and-push.yml to use community.docker 2021-06-16 12:41:57 -04:00
Yanis Guenane
7c02eabbdf Merge pull request #404 from Spredzy/restore_colon
backup: Ensure colon are preserved in awx spec
2021-06-16 15:26:02 +02:00
Yanis Guenane
3398cc2f01 backup: Ensure colon are preserved in awx spec
Due to the way the command is run, the field with a colon in it will
generate a broken yaml serialization. This commit aims to keep it
accurate.
2021-06-16 14:17:11 +02:00
Yanis Guenane
5bbe7b6e3e Merge pull request #397 from rooftopcellist/dynamic_secrets
Dynamic secret backup & restore
2021-06-16 10:41:04 +02:00
Yanis Guenane
da1e7674f6 Merge pull request #400 from rooftopcellist/rm_pvc_ownerref
Do not clean up pvc when awxbackup cr is deleted
2021-06-16 10:40:34 +02:00
Marcelo Moreira de Mello
d46fdbc3c9 Merge pull request #396 from tchellomello/extra_config
Documenting extra_settings usage
2021-06-15 15:09:03 -04:00
Christian M. Adams
bfec61ad8d Dynamically collect secrets for backup & restore roles
- This prevents us from overwriting vars unintentionally at restore time
  - This will make it easier to add secrets to be backed up in the future
  - Add generated secret names to awx spec backup
  - Fail early if secret status doesn't exist
  - Skip if secret is not in spec for non-generated secrets
  - Secret values must be b64 decoded before secret is created
  - Cleanup temp files
2021-06-15 14:17:02 -04:00
Christian M. Adams
42141cd159 Do not clean up pvc when awxbackup cr is deleted
- This is accomplished by explicitly setting ownerRefs to null
2021-06-15 12:23:04 -04:00
Yanis Guenane
1bb6ada3a2 Merge pull request #398 from Spredzy/control_plane_ee
olm-catalog: Add missing control_plane_ee_image
2021-06-15 10:31:08 +02:00
Yanis Guenane
baeb822c39 olm-catalog: Add missing control_plane_ee_image 2021-06-15 09:57:26 +02:00
Marcelo Moreira de Mello
e22720dc82 Fixed typo 2021-06-14 16:29:10 -04:00
Marcelo Moreira de Mello
dd70d0e4ec Fixed typo 2021-06-14 16:27:42 -04:00
Marcelo Moreira de Mello
804e6c3de7 Documenting extra_settings usage 2021-06-14 13:42:52 -04:00
Yanis Guenane
5d597d1e19 Merge pull request #393 from Spredzy/remove_uneeded_default
Do not specify unneeded default
2021-06-14 16:43:25 +02:00
Yanis Guenane
ebb3d7b6a5 Merge pull request #392 from Spredzy/favico
favicon: update path to favicon.ico
2021-06-14 16:43:14 +02:00
Yanis Guenane
754ad98d3c Do not specify unneeded default 2021-06-14 09:33:39 +02:00
Yanis Guenane
d47d25b584 favicon: update path to favicon.ico
Relates: https://github.com/ansible/awx/pull/10388
2021-06-14 09:31:04 +02:00
Yanis Guenane
ef1c57c932 Merge pull request #388 from Spredzy/fix_label_selector2
olm-catalog: Add missing postgres_olm_selector
2021-06-11 13:45:14 +02:00
Yanis Guenane
da912f1189 Merge pull request #387 from Spredzy/remove_unecessary_default
olm-catalog: Remove unecessary defaults at the crd level
2021-06-11 13:34:43 +02:00
Yanis Guenane
bb0039c70b Merge pull request #386 from Spredzy/make_ee_pull_credentials_secret_advanced
Make ee pull credentials secret advanced
2021-06-11 13:34:33 +02:00
Yanis Guenane
5833b06c5b olm-catalog: Add missing postgres_olm_selector 2021-06-11 13:31:30 +02:00
Yanis Guenane
955a15786e olm-catalog: Remove unecessary defaults at the crd level 2021-06-11 13:07:25 +02:00
Yanis Guenane
e37afab2cd ee_pull_credentials_secret: Ensure its advanced and a secret type 2021-06-11 12:03:40 +02:00
Christian Adams
c4162752bc Merge pull request #384 from rooftopcellist/add-generate-files-script
Add script to generate files after crd.yml.j2 changes
2021-06-09 14:29:01 -04:00
Christian M. Adams
a30f3f658e Add script to generate files after crd.yml.j2 changes 2021-06-09 11:49:39 -04:00
Christian Adams
f1b1293f5f Merge pull request #372 from rooftopcellist/fail-loud
Fail task if pg_dump fails in backup role
2021-06-09 10:58:15 -04:00
Yanis Guenane
7891e88131 Merge pull request #377 from aperigault/aperigault-patch-1
Fix service annotations
2021-06-09 09:53:01 +02:00
Shane McDonald
5d7cd9ab1c Merge pull request #379 from kdelee/register_ees
Register ees
2021-06-08 17:21:19 -04:00
Shane McDonald
2777c5e00a Dont register instance in operator
This happens in the app
2021-06-08 17:05:56 -04:00
Shane McDonald
6b57caeb92 Fix quoting issue
This was causing Ansible to always report changed=2
2021-06-08 16:56:19 -04:00
Shane McDonald
156788c56e Add missing quotes 2021-06-08 16:56:19 -04:00
Elijah DeLee
c4d197f5ce add type to control_plane_ee_image 2021-06-08 16:56:19 -04:00
Elijah DeLee
f53354d20d update the README for the changes to execution environments vars 2021-06-08 16:56:19 -04:00
Elijah DeLee
075969f25d Use new setting for control plan ee
Now this is consumed by the awx-manage register_default_execution_environments to
make the EE that is used for project updates
2021-06-08 16:56:19 -04:00
Julen Landa Alustiza
1fc22749a5 Use awx-manage register_default_execution_environments
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-06-08 16:56:17 -04:00
Shane McDonald
46f5b3dcb0 Merge pull request #378 from Spredzy/default_queue_name
Use new awx default queue name
2021-06-08 15:19:01 -04:00
Shane McDonald
2622e0e111 Merge pull request #361 from Zokormazo/control-plane-ee
Use own attribute for control_plane_ee
2021-06-07 15:43:30 -04:00
Yanis Guenane
e96298b5a8 Use new awx default queue name
Relates: https://github.com/ansible/awx/pull/10324
2021-06-07 17:36:23 +02:00
aperigault
626b8acaa9 Fix service 2021-06-07 11:41:54 +02:00
Christian M. Adams
69b3f43414 Make postgres image and version separately configurable for backup/restore
- Update templated and generated manifest files
2021-06-04 11:00:50 -04:00
Christian M. Adams
e857902dcc Fail task if pg_dump command fails 2021-06-04 10:31:57 -04:00
Christian Adams
af5983cb68 Merge pull request #362 from rooftopcellist/update-catalog-statuses
olm-catalog: Add statuses to schemas for awxbackup and awxrestore objects
2021-06-03 14:37:56 -04:00
Christian M. Adams
ead7532c3c Add statuses to schemas for awxbackup and awxrestore objects
- Fix small docstring typos
2021-06-03 09:22:04 -04:00
Christian Adams
b37bf06800 Merge pull request #366 from rooftopcellist/release-docs
Update Release Process docs
2021-06-02 17:45:51 -04:00
Christian M. Adams
d0523b9eb3 Update Release Process docs 2021-06-02 17:31:19 -04:00
Shane McDonald
543bf3e156 Merge pull request #365 from tchellomello/changelog-0.10.0
Changelog for 0.10.0
2021-06-02 17:20:46 -04:00
Marcelo Moreira de Mello
d8f864c88f Changelog for 0.10.0 2021-06-02 17:07:10 -04:00
Shane McDonald
53e0f1455e Merge pull request #364 from shanemcd/update-olm
Update OLM metadata
2021-06-02 17:04:41 -04:00
Shane McDonald
6347ceb976 Update OLM metadata 2021-06-02 16:42:45 -04:00
Yanis Guenane
a923ee112c Merge pull request #358 from Spredzy/improve_nginx_conf
nginx: Improve security configuration
2021-06-02 20:28:47 +02:00
Julen Landa Alustiza
83e46ee84b Use own attribute for control_plane_ee
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-06-02 14:55:53 +02:00
Yanis Guenane
bc66f8e4bb Merge pull request #354 from rooftopcellist/fix-postgres-pod-label
Update name of default postgres label selector for backup role
2021-06-02 11:36:15 +02:00
Yanis Guenane
f1fe7d8fc5 nginx: Improve security configuration 2021-06-02 11:07:46 +02:00
Yanis Guenane
21df85cbf4 Merge pull request #353 from Spredzy/missing_statuss
olm-catalog: Add missing statuses
2021-06-02 09:59:17 +02:00
Shane McDonald
25bdc23d45 Merge pull request #355 from shanemcd/bump-0.10.0
Bump versions for 0.10.0
2021-06-01 19:31:13 -04:00
Yanis Guenane
bc2f1bfde9 olm-catalog: Add missing statuses 2021-06-01 23:27:56 +02:00
Christian M. Adams
da75e4b400 update name of default postgres label selector for backup role 2021-06-01 17:12:23 -04:00
Shane McDonald
b74d6a582e Bump versions for 0.10.0 2021-06-01 17:07:52 -04:00
Shane McDonald
679af90d71 Merge pull request #352 from tchellomello/ingress_readme_fixup
Updated README.md to point to released version
2021-06-01 16:46:29 -04:00
Marcelo Moreira de Mello
5e58da7c7e Updated README.md to point to released version 2021-06-01 16:35:59 -04:00
Shane McDonald
9555a04870 Merge pull request #330 from tchellomello/ingress_minikube
Introducing service type definition and reworking Ingress rules
2021-06-01 16:10:32 -04:00
Marcelo Moreira de Mello
e37c091d17 Make tower_ingress_type to respect ClusterIP definition 2021-06-01 15:42:39 -04:00
Shane McDonald
d6c9ebf35c Merge pull request #324 from Zokormazo/extra_settings_quote
Add quotes to string type extra_settings
2021-05-26 12:06:02 -04:00
Julen Landa Alustiza
899a8e7bf5 Add quotes to string type extra_settings
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-05-26 09:19:00 +02:00
Shane McDonald
a8399c5ec0 Merge pull request #333 from tchellomello/sa_annotations
Added ability to specify annotations to ServiceAccount
2021-05-25 20:50:25 -04:00
Shane McDonald
cb3451e8dc Merge pull request #334 from rooftopcellist/extend-service-account-perm
Add ability to get/create/delete secrets for the awx service account
2021-05-25 16:02:46 -04:00
Christian M. Adams
61b3cb4c7f Add ability to get/create/delete secrets for the awx service account 2021-05-25 15:38:05 -04:00
Marcelo Moreira de Mello
446ac0b190 Added ability to specify annotations to ServiceAccount 2021-05-25 12:16:16 -04:00
Yanis Guenane
8c6ccfbca2 Merge pull request #331 from Spredzy/remove_variable_prefix
Do not prepend variables name with tower_
2021-05-25 15:58:46 +02:00
Yanis Guenane
223fe988aa Do not shadow other variables 2021-05-25 15:38:35 +02:00
Yanis Guenane
75458d0678 Do not prepend variables name with tower_ 2021-05-25 09:52:13 +02:00
Christian Adams
d0a74edd34 Merge pull request #323 from rooftopcellist/remove_finalizer
Fully remove finalizer
2021-05-19 11:39:27 -04:00
Shane McDonald
f6b0fb62b8 Merge pull request #200 from tchellomello/okd_console
Added OKD console deployment
2021-05-18 14:15:08 -04:00
Christian M. Adams
fd9205070e Fully remove finalizer 2021-05-18 11:34:29 -04:00
Christian Adams
e18ce59ea9 Merge pull request #297 from rooftopcellist/pg-labels
Make postgres sts labels consistent with k8s recommendations & pulp-operator
2021-05-18 10:37:46 -04:00
Christian Adams
5fd86e07ce Merge pull request #319 from rooftopcellist/custom_format_backup
Use custom pg_dump format for faster restores
2021-05-18 10:33:23 -04:00
Christian M. Adams
406bbf90fa Make postgres sts labels consistent with k8s recommendations & pulp-operator
- k8s recommended labels: https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/
2021-05-18 10:02:15 -04:00
Marcelo Moreira de Mello
b887315c8d Merge pull request #317 from tchellomello/operator_labels_complementary
Extended labels to AWX Backup/Restore
2021-05-17 21:58:14 -04:00
Marcelo Moreira de Mello
08776ca2b6 Extended labels to AWX Backup/Restore 2021-05-17 21:40:37 -04:00
Christian Adams
8a34188854 Merge pull request #273 from tchellomello/contributing
Adding contributing guidelines
2021-05-17 18:12:37 -04:00
Marcelo Moreira de Mello
68e0de4d9e Adding contributing guidelines 2021-05-17 17:54:35 -04:00
Christian M. Adams
f16d9ac55f Use custom pg_dump format for faster restores 2021-05-17 16:54:49 -04:00
Christian Adams
0239062fa4 Merge pull request #318 from rooftopcellist/storage_class_empty
Default to storage class being undefined
2021-05-17 16:52:09 -04:00
Christian M. Adams
82ed9d6d56 Default to storage class being undefined
* This is so that users can intentially set it to an empty string if they want to use the default storage class
  * conversely, now users can manually create a pvc that does not utilize the default storage class
2021-05-17 16:41:53 -04:00
Christian Adams
1ce36572c4 Merge pull request #302 from rooftopcellist/upgrade_note
Add note about how to upgrade AWX and the operator
2021-05-17 16:25:34 -04:00
Christian Adams
708f5d49e8 Merge pull request #315 from rooftopcellist/allow_manual_pvc
Allow user to specify empty string for storage class on PVC
2021-05-17 12:27:26 -04:00
Christian M. Adams
818b837fb2 Allow user to specify empty string for storage class on PVC 2021-05-17 12:15:03 -04:00
Marcelo Moreira de Mello
7b7965d506 Merge pull request #308 from tchellomello/operator_version
Adds operator-version to k8s resources
2021-05-13 10:00:26 -04:00
Marcelo Moreira de Mello
5266cc23a9 Adds operator-version to k8s resources 2021-05-12 22:17:36 -04:00
Marcelo Moreira de Mello
fd9532ee3f Merge pull request #303 from tchellomello/tower_loadbalancer_annotations
Set initial value for tower_loadbalancer_annotations
2021-05-11 11:15:29 -04:00
Marcelo Moreira de Mello
b2b1e07e45 Set initial value for tower_loadbalancer_annotations 2021-05-10 23:31:01 -04:00
Christian Adams
8519ff93b2 Merge pull request #272 from kimbernator/devel
Add support for custom service labels
2021-05-10 15:18:31 -04:00
Christian Adams
123d6e4c29 Merge pull request #299 from rooftopcellist/stuck-finalizer
Unset ownerRefs in the installer instead of the finalizer
2021-05-10 13:21:46 -04:00
Christian M. Adams
c16e53da46 Add note about how to upgrade AWX and the operator 2021-05-10 11:54:18 -04:00
Christian M. Adams
c12a1f02ab Unset ownerRefs in the installer instead of the finalizer 2021-05-07 17:55:01 -04:00
Christian Adams
13e114afc1 Merge pull request #296 from rooftopcellist/pg_custom_archive
Use custom archive format when migrating data
2021-05-07 15:20:00 -04:00
Christian M. Adams
9145b32d11 Use custom archive format when migrating data
- this approach is compatible with the RH postgresql container
2021-05-07 15:04:20 -04:00
Christian Adams
aed4d07cf1 Merge pull request #295 from rooftopcellist/scale_down_restore
Scale down the new deployment before restoring
2021-05-07 15:03:48 -04:00
Christian M. Adams
ca8127448e Scale down the new deployment before restoring 2021-05-07 11:18:40 -04:00
Christian Adams
e082180cf9 Merge pull request #293 from Zokormazo/restore-kind
Restore: set proper kind var after deploying AWX CR
2021-05-07 09:23:02 -04:00
Christian Adams
df2522fa8d Merge pull request #283 from rooftopcellist/fix-lint-errors
Fix file permissions for tmp spec vars file
2021-05-07 09:10:25 -04:00
Julen Landa Alustiza
fc4687ff77 Restore: set proper kind var after deploying AWX CR
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-05-07 13:31:29 +02:00
Shane McDonald
9cca0d0520 Merge pull request #287 from AlanCoding/include_playbook
Make awx-operator compatible with Ansible 2.12
2021-05-06 11:05:19 -04:00
Alan Rominger
521648925c Make awx-operator compatible with Ansible 2.12 2021-05-06 10:49:01 -04:00
Yanis Guenane
bc1814ce95 Merge pull request #282 from Spredzy/olm_backup_and_restore
olm-catalog: Update with latest content from AWXBackup and AWXRestore
2021-05-05 17:26:20 +02:00
Christian M. Adams
c551d05182 Fix file permissions for tmp spec vars file 2021-05-05 09:35:03 -04:00
Yanis Guenane
ce0a251c1c olm-catalog: Update with latest content from AWXBackup and AWXRestore 2021-05-05 10:37:23 +02:00
Christian Adams
51dd524579 Merge pull request #279 from rooftopcellist/persist-secrets
Persist secret names from old deployment & add them to the spec
2021-05-04 14:59:28 -04:00
Christian M. Adams
9532cc754e Use copy module, not shell 2021-05-04 14:28:59 -04:00
Christian M. Adams
15bc12b7f6 Remove ownerReferences based on secret name from backup 2021-05-04 11:46:09 -04:00
Christian M. Adams
a46938e1be Retrieve pg secret values consistently, do not hardcode secret names 2021-05-04 10:06:39 -04:00
Christian M. Adams
8af0681373 Persist secret names from old deployment & add them to the spec
- renamed some more variables to be consistent with the pulp-operator
  - removed unneeded vars from backup & restore crds
  - added a way to parse spec at restore time by including vars to
    get around the issue of triply nested quotes when using to_json
2021-05-04 10:06:29 -04:00
Christian Adams
bd6a5c3156 Merge pull request #133 from rooftopcellist/backup-role
Backup role for awx-operator
2021-05-03 15:36:04 -04:00
Jeremy Kimber
51435e3c2b fix example to use correct label 2021-05-03 13:14:49 -05:00
Jeremy Kimber
b204c91baa set tower_service_labels field to hidden 2021-05-03 13:12:37 -05:00
Marcelo Moreira de Mello
e7fd1e265f Merge pull request #271 from tchellomello/changelog
Added initial CHANGELOG.md
2021-05-03 13:18:42 -04:00
Marcelo Moreira de Mello
42b39eda40 Merge pull request #264 from ansible/tchellomello-bugreport-template
Updated bug report template
2021-05-03 13:18:25 -04:00
Marcelo Moreira de Mello
b50cf82639 Added initial CHANGELOG.md 2021-05-03 11:44:47 -04:00
Jeremy Kimber
fd42802512 Add support for custom service labels 2021-05-03 10:20:56 -05:00
Shane McDonald
8772d0eec5 Merge pull request #266 from shanemcd/bump-19.1.0
Bump 19.1.0
2021-05-01 10:27:39 -04:00
Shane McDonald
ca20dcf053 Use 'admin' username in tests 2021-05-01 09:39:50 -04:00
Shane McDonald
67a650ce38 Remove isolated logger from configmap
Isolated nodes have been removed in upstream AWX
2021-05-01 09:32:09 -04:00
Shane McDonald
acb443432e Bump version 2021-05-01 08:18:30 -04:00
Shane McDonald
3f2bb3e5db Regenerate files 2021-05-01 08:18:13 -04:00
Shane McDonald
c318611561 Bump AWX version 2021-05-01 07:45:18 -04:00
Shane McDonald
77e7039a2e Update playbook to allow for deploying custom image version/tag 2021-05-01 07:44:53 -04:00
Marcelo Moreira de Mello
b7e043eca8 Update bug_report.md 2021-04-30 13:53:59 -04:00
Marcelo Moreira de Mello
78d03e03bb Updated bug report template 2021-04-30 13:52:09 -04:00
Christian M. Adams
5e2d11835e Fix rebase issue & remove dynamic kind/version var setting 2021-04-30 13:51:48 -04:00
Marcelo Moreira de Mello
8656ee1a1d Merge pull request #263 from tchellomello/projects
Mounts /var/lib/awx/projects on awx-web container
2021-04-30 13:46:17 -04:00
Marcelo Moreira de Mello
f21ec4de61 Mounts /var/lib/awx/projects on awx-web container 2021-04-30 13:31:31 -04:00
Christian M. Adams
cdbaf9460e Remove unnecessary intermediate awx_spec var 2021-04-30 10:49:32 -04:00
Christian M. Adams
5439681a39 Fix rebase issue due to order or pg config tasks 2021-04-30 10:49:32 -04:00
Christian M. Adams
9cfb7921bc update templated files with new var names 2021-04-30 10:49:32 -04:00
Christian M. Adams
36852cd5f5 remove unused variables in restore role 2021-04-30 10:49:32 -04:00
Christian M. Adams
b5c5a1722d revert unneccesary admin password update 2021-04-30 10:49:31 -04:00
Christian M. Adams
5ae36367a4 Rename product specific variable names 2021-04-30 10:49:31 -04:00
Christian M. Adams
d743936ee4 Update admin user password with value in provided/generated secret 2021-04-30 10:49:31 -04:00
Christian M. Adams
c817a2234d Simplify vars needed for restore CR & do not garbage collect secrets 2021-04-30 10:49:31 -04:00
Christian M. Adams
57f9530198 Simplify pvc naming scheme, one pvc per deployment 2021-04-30 10:49:31 -04:00
Christian M. Adams
3e444da7bc Set ownerRef to null for restore created AWX object to avoid garbage collection
- Set defaults for pg type to satisfy conditional
2021-04-30 10:49:30 -04:00
Christian M. Adams
867bc258b9 Allow custom postgres pod label to support user managed pg pods
- Only set resolvable pg host path for pg container when managed
2021-04-30 10:49:30 -04:00
Christian M. Adams
ff9248e971 create pvc in namespace of old awx by default, update docs, fix bug with secret statuses 2021-04-30 10:49:30 -04:00
Christian M. Adams
38a6a02f85 Add secret names as statuses on the AWX object
- set migrate data status even if custom name for old postgres config is not used
 - Allow users to change pg name, pw & db name for a managed postgres
 - set default value for postgres-configuration type as unmanaged if secret is created
 - Make pg port configurable for managed deployments
2021-04-30 10:49:27 -04:00
Christian M. Adams
90f4d71606 Make pg port configurable for managed deployments 2021-04-30 10:32:07 -04:00
Christian M. Adams
8f760e2842 Allow users to change pg name, pw & db name for a managed postgres
- set default value for postgres-configuration type as unmanaged if secret is created
2021-04-30 10:32:05 -04:00
Christian M. Adams
5b32c41277 Fix retry for checking postgres pod & fix secrets template
- fixed a lot of typos & updated the README.md files
2021-04-30 10:24:37 -04:00
Christian M. Adams
fb612c24df Only write values for spec section of awx object in backup 2021-04-30 10:24:37 -04:00
Christian M. Adams
8ed0b1fe61 Template only what is needed from secrets and awx cro 2021-04-30 10:24:37 -04:00
Christian M. Adams
82efe05343 store secrets & definitions in a tempfile dir, fix postgres label 2021-04-30 10:24:36 -04:00
Christian M. Adams
2cbf60fa17 Remove unneeded fqcn for modules & fix CI 2021-04-30 10:24:36 -04:00
Christian M. Adams
ce8c58f542 added secrets logic, fixed permissions issues 2021-04-30 10:24:36 -04:00
Christian M. Adams
b9d0852c83 Fix small namespace issue 2021-04-30 10:24:36 -04:00
Christian M. Adams
5669747bbf Scope pvc and management pod to default namespace
- make this configurable via tower_backup_pvc_namespace var
  - remove redundant k8s task info
2021-04-30 10:24:36 -04:00
Christian M. Adams
0580398c90 Finish db restore logic
- rename _backup_dir to backup_dir
  - add towerBackupClaim status to make the pvc name easier to find for users
2021-04-30 10:24:36 -04:00
Christian M. Adams
8422f6fbd9 rename db task vars with awx instead of tower for consistency 2021-04-30 10:24:35 -04:00
Christian M. Adams
8467209d35 init restore 2021-04-30 10:24:35 -04:00
Christian M. Adams
80c8d87f71 Create an event when pvc is not set to alert the user 2021-04-30 10:24:35 -04:00
Christian M. Adams
6bc149bae2 template awxbackup crd into awx-operator.yml for easy deployment 2021-04-30 10:24:35 -04:00
Christian M. Adams
250ff960bd Add awxbackup CRD creation to molecule to get tests passing 2021-04-30 10:24:35 -04:00
Christian M. Adams
e1dca00f46 Fix backup reconciliation loop, add error status 2021-04-30 10:24:35 -04:00
Christian M. Adams
f17dcdc3e9 Swap vars and defaults, rename to awxbackups 2021-04-30 10:24:35 -04:00
Christian M. Adams
4839bdcaad Rename Backup CR to AWXBackup to be more unique
- we could alternatively direct users to use the full GVK.  Issue is potential conflict with AH operator CRs
2021-04-30 10:24:34 -04:00
Christian M. Adams
91dda5cb16 backup secrets to YAML files 2021-04-30 10:24:34 -04:00
Christian M. Adams
0a82fec359 Refactor backup role & store secrets as well 2021-04-30 10:24:34 -04:00
Christian M. Adams
13397f41ad use meta.data to keep pods and pvcs unique in the same namespace 2021-04-30 10:24:34 -04:00
Christian M. Adams
9e44e21a66 Rename pvc name var to be consistent with other backup variables 2021-04-30 10:24:34 -04:00
Christian M. Adams
54efda1a25 Use default cluster storage class if none is provided 2021-04-30 10:24:34 -04:00
Christian M. Adams
bcd1410438 init backup CR files 2021-04-30 10:24:33 -04:00
Christian M. Adams
fdcc745f11 Add watcher for backup CR 2021-04-30 10:24:33 -04:00
Christian M. Adams
4a5ca184c0 Use storage class to dynamically create volume for backups 2021-04-30 10:24:33 -04:00
Christian M. Adams
e037feafbf Create management pod and pvc for backup 2021-04-30 10:24:33 -04:00
Christian M. Adams
0220c75884 wip deployment podspec or sts 2021-04-30 10:24:33 -04:00
Shane McDonald
5f668d76f0 Merge pull request #262 from Spredzy/extra_settings
Extra Settings: Allow one to pass extra API configuration settings.
2021-04-30 10:01:47 -04:00
Yanis Guenane
1d14ebccad Extra Settings: Allow one to pass extra API configuration settings.
For more advanced usage, a user can do the
extra_volumes/extra_volume_mounts dance. But for simple need adding this
parameter make it easy to just specify an extra parameter.
2021-04-30 11:06:40 +02:00
Yanis Guenane
06ab6d2dad Merge pull request #257 from Spredzy/rename_postgres_parameters
PostgreSQL: Properly handle variable name difference when using Red Hat containers
2021-04-30 09:35:35 +02:00
Yanis Guenane
6b0ecacc63 Merge pull request #258 from Spredzy/fix_tower_ee_images
Properly hide tower_ee_images
2021-04-30 09:35:20 +02:00
Yanis Guenane
2965a9091e PostgreSQL: Properly handle variable name difference when using Red Hat containers 2021-04-29 18:16:20 +02:00
Yanis Guenane
160209698c Properly hide tower_ee_images 2021-04-29 17:39:57 +02:00
Marcelo Moreira de Mello
7361defa17 Merge pull request #198 from tchellomello/ssl_pg
Added support to override PosgreSQL sslmode
2021-04-28 15:51:01 -04:00
Shane McDonald
68774a3ccc Merge pull request #250 from rooftopcellist/ee-vars
Add templated EE volume mount var to operator config
2021-04-28 11:33:13 -04:00
Shane McDonald
70b7991cdf Merge pull request #253 from Spredzy/base_component_on_deployment_type
Deployment type: Make more fields dynamic based on that field
2021-04-28 11:32:37 -04:00
Yanis Guenane
4706aa9a1e Deployment type: Make more fields dynamic based on that field 2021-04-28 12:12:06 +02:00
Marcelo Moreira de Mello
fb183f4eab Merge pull request #251 from tchellomello/redeploy-it
Handle statefulset updates
2021-04-27 23:29:19 -04:00
Marcelo Moreira de Mello
3d5a9eae31 Handle statefulset updates 2021-04-27 17:16:57 -04:00
Christian M. Adams
e55d83ffa0 Add templated EE volume mount var to operator config 2021-04-27 15:54:37 -04:00
Yanis Guenane
fd9ce8f0cb Merge pull request #249 from Spredzy/fix_wrong_indentation
olm manifests: fix wrong identation making file incorrect
2021-04-27 14:19:30 +02:00
Yanis Guenane
126228774c olm manifests: fix wrong identation making file incorrect
Currently the file is inacurrate and yaml parsing would fail on line 166
with

>  syntax error: expected <block end>, but found '<block mapping start>'
(syntax)
2021-04-27 13:24:52 +02:00
Marcelo Moreira de Mello
3c26af0cd7 Merge pull request #217 from tchellomello/crashing
Updated logic to validate changes on configmaps, deployments and statefulsets
2021-04-26 17:04:20 -04:00
Shane McDonald
b781300977 Merge pull request #248 from shanemcd/devel
Fix service type logic
2021-04-26 14:10:43 -04:00
Shane McDonald
c0e164d763 Fix service type logic 2021-04-26 13:58:44 -04:00
Marcelo Moreira de Mello
2fd737fbc2 Merge pull request #204 from TheStally/devel
Set Service to use type ClusterIP instead of NodePort when tower_ingress_type is Ingress
2021-04-25 21:59:25 -04:00
Shane McDonald
ee9800c258 Merge pull request #244 from ilijamt/ee-conf-wrong
added missing comma, to AWX execution_environments.py file
2021-04-24 11:58:41 -04:00
stal
5b38c85f8a Extra changes for new tower_ingress_type NodePort 2021-04-24 15:16:49 +01:00
Ilija Matoski
72c122dff9 added missing comma, to AWX execution_environets.py file 2021-04-24 14:34:19 +02:00
Shane McDonald
3e8834e057 Merge pull request #243 from ansible/shanemcd-patch-3
Update default ee version
2021-04-23 14:24:28 -04:00
Shane McDonald
5779afd858 Update default ee version 2021-04-23 13:58:01 -04:00
Shane McDonald
da43c5ba7d Merge pull request #226 from fust/fix_postgres_resources
Fix postgres resources
2021-04-22 13:33:11 -04:00
Marcelo Moreira de Mello
cd181bc1fd Merge pull request #235 from tchellomello/split_image_expr
Split container image and version in 2 variables
2021-04-22 13:31:46 -04:00
Marcelo Moreira de Mello
01f1321bd4 Merge branch 'devel' into split_image_expr 2021-04-22 10:28:32 -04:00
Marcelo Moreira de Mello
52768c9a65 updated coumentation 2021-04-22 10:18:46 -04:00
TheStally
96b878f049 Add NodePort to tower_ingress_type enum 2021-04-22 08:39:28 +01:00
TheStally
a00052a8ca Fix template logic 2021-04-22 08:37:31 +01:00
Thom Wijtenburg
4596c30e9d Make displayName for PostgreSQL parameters single line 2021-04-22 07:07:51 +02:00
Marcelo Moreira de Mello
051500fff1 updated documentation 2021-04-21 17:51:40 -04:00
Marcelo Moreira de Mello
bc34758c91 Split container image and version in 2 variables 2021-04-21 17:18:02 -04:00
Shane McDonald
e3f027d625 Merge pull request #212 from tchellomello/change_pull_policy_redis
Inherit imagePullPolicy to redis container
2021-04-21 16:44:07 -04:00
Marcelo Moreira de Mello
46fca2af5a updated 2021-04-21 15:41:18 -04:00
Marcelo Moreira de Mello
dc073c85ed updated 2021-04-21 15:02:33 -04:00
Marcelo Moreira de Mello
597356f317 Handles deleting and recreating statefulset and deployment when needed 2021-04-21 14:58:21 -04:00
Shane McDonald
0655122a57 Merge pull request #234 from shanemcd/stop-using-devel
Stop telling folks to use devel
2021-04-21 13:32:06 -04:00
Shane McDonald
51ea411a79 Stop telling folks to use devel 2021-04-21 13:19:43 -04:00
Shane McDonald
776dba5e23 Merge pull request #216 from gamuniz/document_env_config
added documentation around environment variables
2021-04-21 10:21:59 -04:00
Shane McDonald
6858dcfa7a Merge pull request #231 from daenney/migration-docs
migration: Clarify you can migrate in-place
2021-04-21 09:15:29 -04:00
Daniele Sluijters
ea018be298 migration: Clarify you can migrate in-place
Closes #213
2021-04-21 15:01:39 +02:00
Thom Wijtenburg
841d1f94f2 Change default resource requirement to object 2021-04-20 11:52:56 +02:00
Thom Wijtenburg
262b1cca34 Update variable table for PostgreSQL service 2021-04-20 11:33:24 +02:00
Thom Wijtenburg
378a33aaee Fix PostgreSQL resource requests 2021-04-20 11:14:48 +02:00
Marcelo Moreira de Mello
09652056b7 Added initial upgrade documentation 2021-04-20 00:23:10 -04:00
Marcelo Moreira de Mello
39ef816f5e Updated logic to avoid crash during upgrades 2021-04-19 23:19:13 -04:00
Gabe Muniz
f68dc77ea3 added documentation around environment variables 2021-04-15 17:33:31 -04:00
Shane McDonald
51b2a211cb Merge pull request #214 from gamuniz/expose_extra_volume_config
Expose extra volume config
2021-04-15 16:08:11 -04:00
Gabe Muniz
9de67ad898 added default value for ee extra mounts 2021-04-15 15:25:45 -04:00
Gabe Muniz
8922e9fe7d added warning about kubernetes api naming 2021-04-15 11:09:32 -04:00
Gabe Muniz
90f25ab20c added ability to mount to Execution container with example 2021-04-15 10:01:46 -04:00
Gabe Muniz
6c476a994e added ability to mount conf.d and fixed underscore api issue 2021-04-14 16:18:44 -04:00
stal
1b87616a11 Add tower_ingress_type NodePort 2021-04-14 20:15:15 +01:00
Gabe Muniz
8d65b84b89 expose settings to use custom volumes and volume mounts 2021-04-14 14:49:42 -04:00
Marcelo Moreira de Mello
13f7b2ae30 Fixed indentation lint 2021-04-14 12:00:26 -04:00
Marcelo Moreira de Mello
bdcd95ab55 Fixing lint 2021-04-14 11:45:46 -04:00
Marcelo Moreira de Mello
032d6b790a Added OKD console deployment 2021-04-14 11:41:54 -04:00
Shane McDonald
125b6fbe58 Merge pull request #208 from a-eperez/devel
Include support for nodeSelector and tolerations in AWX Postgres pod
2021-04-14 11:25:34 -04:00
Ernesto Pérez
d4d9d2a982 Correction, replace tower_tolerations by tower_postgres_tolerations 2021-04-14 09:59:50 +02:00
Ernesto Pérez
1cc47f7570 Correction, replace tower_node_selector by tower_postgres_selector 2021-04-14 09:56:06 +02:00
Marcelo Moreira de Mello
83a85d15c0 Inherit imagePullPolicy to redis container 2021-04-13 21:28:55 -04:00
Ernesto Pérez
0ab33a17df Fix yaml missing starting space in comment 2021-04-13 14:33:47 +02:00
Ernesto Pérez
30e4ad0d3d Postgres selector and tolerations description included in README.md 2021-04-13 14:00:15 +02:00
Ernesto Pérez
151ff11745 Add nodeSelector and tolerations for Postgres pod 2021-04-13 13:50:14 +02:00
Shane McDonald
b942794179 Merge pull request #206 from tchellomello/pwd_quotes
Removed jinja2 filter 'quote' for db password
2021-04-12 16:36:53 -04:00
Marcelo Moreira de Mello
57071129bf Removed jinja2 filter 'quote' for db password 2021-04-12 16:23:21 -04:00
stal
0f90847c07 Add Service types to docs based on Ingress used 2021-04-12 21:14:54 +01:00
stal
e091b32c4b use ClusterIP service when ingress type is Ingress 2021-04-12 19:35:29 +01:00
Marcelo Moreira de Mello
298d39c57b Added support to override pg_sslmode 2021-04-12 12:48:00 -04:00
Shane McDonald
9503d3cf48 Merge pull request #197 from RylandDeGregory/rylanddegregory-patch-1
Update docs and service Template for LoadBalancer ingress type
2021-04-08 12:45:05 -04:00
Ryland DeGregory
95f04abdfd Added conditional to validate that tower_loadbalancer_annotations is defined 2021-04-08 12:24:56 -04:00
Ryland DeGregory
7e3f5047a1 Updated protocol var in LoadBalancer ingress spec 2021-04-08 12:20:08 -04:00
Shane McDonald
5c77cf004b Merge pull request #192 from shanemcd/gha-release-workflow
Add GHA workflow for pushing releases to Quay
2021-04-08 09:10:08 -04:00
Shane McDonald
295ed47c43 Add GHA workflow for pushing releases to Quay 2021-04-08 07:26:45 -04:00
Shane McDonald
d8b7ed81b5 Merge pull request #189 from shanemcd/bump-19
Version bump for AWX 19
2021-04-07 18:00:16 -04:00
Shane McDonald
f4980917d2 Merge pull request #186 from tchellomello/build
Added build.sh to facilitate local tests
2021-04-07 17:27:45 -04:00
Shane McDonald
1c9173f48a Regenerate OLM metadata 2021-04-07 17:24:14 -04:00
Shane McDonald
f6b7a32a33 Bump version 2021-04-07 17:24:08 -04:00
Shane McDonald
aa03a7f268 Ensure CRD exists before deploying Operator 2021-04-07 17:20:52 -04:00
Shane McDonald
136b2c47f8 Remove unnecessary variables from molecule CR 2021-04-07 17:20:04 -04:00
Shane McDonald
0043c375d8 Merge pull request #184 from no-12/devel
add tower_image_pull_secret as property of AWX resource
2021-04-07 16:30:05 -04:00
Shane McDonald
c44c3fb095 Merge pull request #176 from rooftopcellist/fix-mismatched-db-name
Fix data migrations when the database names do not match
2021-04-07 16:29:52 -04:00
Shane McDonald
cb70e97366 Merge pull request #180 from tchellomello/add_labels_to_awx_kind
Added expected labels to AWX kind
2021-04-07 16:29:37 -04:00
Marcelo Moreira de Mello
1d21dc7f20 Added build.sh to facilitate local tests 2021-04-07 16:28:10 -04:00
Marcelo Moreira de Mello
4d4ed3e827 Added labels to AWX kind resource 2021-04-07 14:24:34 -04:00
Nico Ohnezat
0eb4286b71 add tower_image_pull_secret as property of AWX resource 2021-04-07 17:55:18 +02:00
Shane McDonald
f73cff3cb3 Merge pull request #177 from tchellomello/persistent_vol
Introducing ability to mount /var/lib/projects
2021-04-07 11:14:30 -04:00
Marcelo Moreira de Mello
54c8a7beef Fixed webUI form drop-down 2021-04-06 22:52:00 -04:00
Marcelo Moreira de Mello
584d45d315 Introducing ability to mount /var/lib/projects 2021-04-06 12:53:08 -04:00
Christian M. Adams
43aa01ce5f Fix data migrations when the database names do not match 2021-04-05 17:14:47 -04:00
Shane McDonald
a0c6565e59 Merge pull request #174 from shanemcd/cleanup
Clean up instances of tower_ee_image
2021-04-05 16:30:28 -04:00
Shane McDonald
bac795a36a Clean up instances of tower_ee_image 2021-04-05 15:50:29 -04:00
Shane McDonald
c9acc30009 Merge pull request #170 from tylerauerbeck/update-actions
Update GH Actions to run on push to devel
2021-04-03 17:34:45 -04:00
Shane McDonald
0cf0fd52c7 Merge pull request #171 from shanemcd/tower-ee-images
More flexibility for customizing default EEs
2021-04-03 17:32:27 -04:00
Shane McDonald
2b8530b3e2 Update instantiate playbook to document tower_ee_images 2021-04-03 17:21:53 -04:00
Shane McDonald
550756c33c Update CRD stuff related to tower_ee_image -> tower_ee_images rename 2021-04-03 17:21:49 -04:00
Shane McDonald
4230120884 More flexibility for customizing default EEs 2021-04-03 17:15:56 -04:00
Tyler Auerbeck
90b88676c5 Update README; Update GHA to run on push to devel 2021-04-03 14:42:24 -04:00
Shane McDonald
862123e2d6 Merge pull request #169 from shanemcd/fix-instantiate
Fix instantiate playbook when development_mode var is not provided
2021-04-03 13:05:42 -04:00
Shane McDonald
c1a2f6e649 Fix instantiate playbook when development_mode var is not provided 2021-04-03 12:54:43 -04:00
Shane McDonald
c0d3047dab Merge pull request #166 from ilijamt/wrong-supervisor-conf
fix wrong conf file for SUPERVISOR_WEB_CONFIG_PATH in kubernetes deployment file
2021-04-03 12:45:52 -04:00
Shane McDonald
1a50cd339e Merge pull request #162 from Spredzy/add_bundle_dockerfile
bundle.Dockerfile: Add the Dockerfile so user can build their own bundle
2021-04-03 12:45:30 -04:00
Shane McDonald
30db53d250 Merge pull request #164 from tchellomello/unique_labels
Use k8s labels to create unique matchLabels for svc and deployments
2021-04-03 12:44:31 -04:00
Shane McDonald
1309cc63c9 Merge pull request #165 from TrueTickets/athak/add-nodeselector-and-tolerations
Add support for nodeSelector and tolerations
2021-04-03 12:42:17 -04:00
Shane McDonald
32b862c79b Update roles/installer/templates/tower_deployment.yaml.j2 2021-04-03 12:36:55 -04:00
Shane McDonald
e09a468d2c Merge pull request #168 from shanemcd/goodbye-travis
Remove usage of Travis CI
2021-04-03 12:35:51 -04:00
Shane McDonald
adb896f294 Remove usage of Travis CI 2021-04-03 12:26:13 -04:00
Shane McDonald
2fd3158c7b Merge pull request #167 from shanemcd/remove-environment-sh
Remove usage of environment.sh
2021-04-03 12:25:20 -04:00
Shane McDonald
ba2672a0b0 Remove usage of environment.sh
This is no longer sourced in the launch scripts.
2021-04-03 12:07:02 -04:00
Shane McDonald
7c02a9728a Merge pull request #136 from tylerauerbeck/gha
Intial GH Actions - Publish latest build and CI
2021-04-03 11:58:55 -04:00
Ilija Matoski
9b327f6ad5 fix wrong conf file 2021-04-03 13:30:55 +02:00
Atha Kouroussis
2a3f700fde Update README and OLM catalog manifests 2021-04-02 11:03:54 -03:00
Yanis Guenane
d221c64f62 README.md: Extend README.md to explain how to generate the bundle 2021-04-02 15:43:26 +02:00
Yanis Guenane
0f1cc494fe bundle.Dockerfile: Add the Dockerfile so user can build their own bundle 2021-04-02 15:34:42 +02:00
Atha Kouroussis
be68adbf01 Add support for nodeSelector and tolerations 2021-04-01 18:28:07 -03:00
Marcelo Moreira de Mello
185238c199 Use k8s labels on managed resources 2021-04-01 14:04:59 -04:00
Yanis Guenane
210ac2c419 Merge pull request #157 from tchellomello/ldaps
Added ability to specify LDAP CA cert
2021-04-01 09:56:52 +02:00
Marcelo Moreira de Mello
658cf92a3b Make sure we only proceed with ldap-ca.crt is a valid secret 2021-03-31 11:25:25 -04:00
Yanis Guenane
d3f7594aea Merge pull request #160 from tchellomello/warning_admin_pass
tower_admin_password_secret warning note @ docs
2021-03-31 14:24:21 +02:00
Marcelo Moreira de Mello
939dd0b295 Warning for tower_admin_password_secret 2021-03-30 22:34:27 -04:00
Shane McDonald
51e384292c Merge pull request #159 from tchellomello/typo
Fixed typo on migration docs
2021-03-30 12:00:02 -04:00
Marcelo Moreira de Mello
f27f1d188c Fixed typo on migration docs 2021-03-30 10:44:28 -04:00
Marcelo Moreira de Mello
8974e3446a Added ability to configure LDAP CA 2021-03-29 22:19:22 -04:00
Shane McDonald
57a408e384 Merge pull request #155 from shanemcd/update-awx-ee
Use newer awx-ee image
2021-03-29 13:04:36 -04:00
Shane McDonald
1fa391a9f1 Bump awx-ee version 2021-03-29 12:39:57 -04:00
Shane McDonald
7885f8e454 Merge pull request #154 from starcraft66/patch-1
Create kustomization.yaml
2021-03-29 09:39:19 -04:00
Yanis Guenane
32ac0941dc Merge pull request #156 from Spredzy/hidden_tower_ee_image
olm-catalog: Set tower_ee_image as hidden
2021-03-29 14:48:24 +02:00
Yanis Guenane
371d826dd4 olm-catalog: Set tower_ee_image as hidden 2021-03-29 14:09:39 +02:00
Shane McDonald
aeebe6cc4b Allow group to access receptor socket 2021-03-28 15:09:18 -04:00
Shane McDonald
257a3ba807 Allow tower_ee_image to be specified in CR 2021-03-28 15:09:03 -04:00
Shane McDonald
ecdfaf6c0d Pin version of awx-ee 2021-03-28 15:08:49 -04:00
Shane McDonald
bc28071205 Update variable name 2021-03-28 15:07:39 -04:00
Shane McDonald
8962d501b3 Delete unnecessary file 2021-03-28 15:07:14 -04:00
Shane McDonald
e91031fa73 Fix deployment playbook 2021-03-28 15:06:41 -04:00
Tristan
cb2a059e16 Update kustomization.yaml 2021-03-28 01:25:18 -04:00
Tristan
5e5c7bbdaf Create kustomization.yaml
Creating a kustomization.yaml file will allow awx-operator to be added as a remote resource in a Kustomize deployment.
e.g. :
```
resources:
- https://github.com/ansible/awx-operator/deploy?ref=0.7.0
```
2021-03-28 01:10:50 -04:00
Shane McDonald
8b241e7871 Merge pull request #153 from billett83/devel
Handling HTTP loadbalancer
2021-03-26 09:54:49 -04:00
cbillett83@outlook.com
0740fc2bc1 fixes #151 Handling HTTP loadbalancer 2021-03-26 11:20:13 +00:00
billett83
a3cf6c4ea8 Merge pull request #2 from ansible/devel
merge changes
2021-03-26 11:05:21 +00:00
Shane McDonald
697ff11fa7 Merge pull request #144 from rooftopcellist/more_unique_pg_pod
Name pg pod in a more unique way
2021-03-25 11:20:14 -04:00
Yanis Guenane
0d6980b9b4 Merge pull request #145 from Spredzy/liveliness
Update liveness probe defaults
2021-03-24 21:04:48 +01:00
Yanis Guenane
387932e960 Update liveness probe defaults
The liveness probes default are too agressive and can lead to
undeployable operators[1][2] - We are bumping them as per the
operator-sdk default in 1.0[3]

[1] https://github.com/operator-framework/operator-sdk/issues/3216
[2] https://github.com/operator-framework/operator-sdk/issues/3267
[3]
ea43495073

Fixes: https://github.com/ansible/awx-operator/issues/131
2021-03-24 20:33:07 +01:00
Yanis Guenane
79e62755b8 Merge pull request #143 from Spredzy/update_bundle_params
Update bundle variables to catchup with latest commits
2021-03-24 20:25:38 +01:00
Christian M. Adams
746dc2738f Name pg pod in a more unique way
- this is to make it possible to run migration with multiple deployments in the same pod
2021-03-24 13:37:39 -04:00
Shane McDonald
7e67838adb Merge pull request #137 from Zokormazo/backup-read-default-old-configuration
Check the default old PostgreSQL configuration
2021-03-24 11:53:53 -04:00
Shane McDonald
7010ab1fc6 Update deploy/olm-catalog/awx-operator/manifests/awx-operator.clusterserviceversion.yaml 2021-03-24 11:52:33 -04:00
Shane McDonald
4eb4abf4f5 Merge pull request #141 from billett83/devel
fixes #140 - Allow for private hosted awx-ee image
2021-03-24 09:14:21 -04:00
Yanis Guenane
451e2b6497 Update bundle variables to catchup with latest commits 2021-03-24 14:07:36 +01:00
cbillett83@outlook.com
60479971b8 resolve build failure 2021-03-24 10:19:14 +00:00
cbillett83@outlook.com
76092c366e alow private hosted awx-ee image 2021-03-24 10:02:33 +00:00
billett83
e09c48d67c Merge pull request #1 from ansible/devel
Merge changes
2021-03-23 16:44:07 +00:00
Julen Landa Alustiza
60199f79aa Check the default old PostgreSQL configuration
Signed-off-by: Julen Landa Alustiza <jlanda@redhat.com>
2021-03-23 12:59:29 +01:00
Tyler Auerbeck
d713dce7e0 Intial GH Actions 2021-03-21 20:42:19 -04:00
290 changed files with 14042 additions and 3983 deletions

3
.github/CODE_OF_CONDUCT.md vendored Normal file
View File

@@ -0,0 +1,3 @@
# Community Code of Conduct
Please see the official [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).

125
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,125 @@
---
name: Bug Report
description: "🐞 Create a report to help us improve"
body:
- type: markdown
attributes:
value: |
Bug Report issues are for **concrete, actionable bugs** only.
For debugging help or technical support, please see the [Get Involved section of our README](https://github.com/ansible/awx-operator#get-involved)
- type: checkboxes
id: terms
attributes:
label: Please confirm the following
options:
- label: I agree to follow this project's [code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
required: true
- label: I have checked the [current issues](https://github.com/ansible/awx-operator/issues) for duplicates.
required: true
- label: I understand that the AWX Operator is open source software provided for free and that I might not receive a timely response.
required: true
- type: textarea
id: summary
attributes:
label: Bug Summary
description: Briefly describe the problem.
validations:
required: false
- type: input
id: awx-operator-version
attributes:
label: AWX Operator version
description: What version of the AWX Operator are you running?
validations:
required: true
- type: input
id: awx-version
attributes:
label: AWX version
description: What version of AWX are you running?
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Kubernetes platform
description: What platform did you install the Operator in?
multiple: false
options:
- kubernetes
- minikube
- openshift
- minishift
- docker development environment
- other (please specify in additional information)
validations:
required: true
- type: input
id: kube-version
attributes:
label: Kubernetes/Platform version
description: What version of your platform/kuberneties are you using?
validations:
required: true
- type: dropdown
id: modified-architecture
attributes:
label: Modifications
description: >-
Have you modified the installation, deployment topology, or container images in any way? If yes, please
explain in the "additional information" field at the bottom of the form.
multiple: false
options:
- "no"
- "yes"
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: Steps to reproduce
description: >-
Starting from a new installation of the system, describe exactly how a developer or quality engineer can reproduce the bug
on infrastructure that isn't yours. Include any and all resources created, input values, test users, roles assigned, playbooks used, etc.
validations:
required: true
- type: textarea
id: expected-results
attributes:
label: Expected results
description: What did you expect to happpen when running the steps above?
validations:
required: true
- type: textarea
id: actual-results
attributes:
label: Actual results
description: What actually happened?
validations:
required: true
- type: textarea
id: additional-information
attributes:
label: Additional information
description: Include any relevant log output, links to sosreport, database dumps, screenshots, AWX spec yaml, or other information.
validations:
required: false
- type: textarea
id: operator-logs
attributes:
label: Operator Logs
description: Include any relevant logs generated by the operator.
validations:
required: false

12
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
---
blank_issues_enabled: false
contact_links:
- name: For debugging help or technical support
url: https://github.com/ansible/awx-operator#get-involved
about: For general debugging or technical support please see the Get Involved section of our readme.
- name: 📝 Ansible Code of Conduct
url: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html?utm_medium=github&utm_source=issue_template_chooser
about: AWX uses the Ansible Code of Conduct; ❤ Be nice to other members of the community. ☮ Behave.
- name: 💼 For Enterprise
url: https://www.ansible.com/products/engine?utm_medium=github&utm_source=issue_template_chooser
about: Red Hat offers support for the Ansible Automation Platform

View File

@@ -0,0 +1,29 @@
---
name: ✨ Feature request
description: Suggest an idea for this project
body:
- type: markdown
attributes:
value: |
Feature Request issues are for **feature requests** only.
For debugging help or technical support, please see the [Get Involved section of our README](https://github.com/ansible/awx-operator#get-involved)
- type: checkboxes
id: terms
attributes:
label: Please confirm the following
options:
- label: I agree to follow this project's [code of conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
required: true
- label: I have checked the [current issues](https://github.com/ansible/awx-operator/issues) for duplicates.
required: true
- label: I understand that AWX Operator is open source software provided for free and that I might not receive a timely response.
required: true
- type: textarea
id: summary
attributes:
label: Feature Summary
description: Briefly describe the desired enhancement.
validations:
required: true

26
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,26 @@
##### SUMMARY
<!--- Describe the change, including rationale and design decisions -->
<!---
If you are fixing an existing issue, please include "fixes #nnn" in your
commit message and your description; but you should still explain what
the change does.
-->
##### ISSUE TYPE
<!--- Pick one below and delete the rest: -->
- Breaking Change
- New or Enhanced Feature
- Bug, Docs Fix or other nominal change
##### ADDITIONAL INFORMATION
<!---
Include additional information to help people understand the change here.
For bugs that don't have a linked bug report, a step-by-step reproduction
of the problem is helpful.
-->
<!--- Paste verbatim command output below, e.g. before and after your change -->
```
```

3
.github/issue_labeler.yml vendored Normal file
View File

@@ -0,0 +1,3 @@
---
needs_triage:
- '.*'

101
.github/workflows/ci.yaml vendored Normal file
View File

@@ -0,0 +1,101 @@
---
name: CI
on:
pull_request:
push:
jobs:
molecule:
runs-on: ubuntu-latest
name: molecule
strategy:
matrix:
ansible_args:
- --skip-tags=replicas
- -t replicas
env:
DOCKER_API_VERSION: "1.41"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.8"
- name: Install Dependencies
run: |
pip install -r molecule/requirements.txt
- name: Install Collections
run: |
ansible-galaxy collection install -r molecule/requirements.yml
- name: Run Molecule
env:
MOLECULE_VERBOSITY: 3
PY_COLORS: '1'
ANSIBLE_FORCE_COLOR: '1'
run: |
sudo rm -f $(which kustomize)
make kustomize
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule test -s kind -- ${{ matrix.ansible_args }}
helm:
runs-on: ubuntu-latest
name: helm
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Create k8s Kind Cluster
uses: helm/kind-action@v1.8.0
- name: Build operator image and load into kind
run: |
IMG=awx-operator-ci make docker-build
kind load docker-image --name chart-testing awx-operator-ci
- name: Patch pull policy for tests
run: |
kustomize edit add patch --path ../testing/pull_policy/Never.yaml
working-directory: config/default
- name: Build and lint helm chart
run: |
IMG=awx-operator-ci make helm-chart
helm lint ./charts/awx-operator
- name: Install kubeval
run: |
mkdir tmp && cd tmp
wget https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz
tar xf kubeval-linux-amd64.tar.gz
sudo cp kubeval /usr/local/bin
working-directory: ./charts
- name: Run kubeval
run: |
helm template -n awx awx-operator > tmp/test.yaml
kubeval --strict --force-color --ignore-missing-schemas tmp/test.yaml
working-directory: ./charts
- name: Install helm chart
run: |
helm install --wait my-awx-operator --namespace awx --create-namespace ./charts/awx-operator
no-log:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Check no_log statements
run: |
set +e
no_log=$(grep -nr ' no_log:' roles | grep -v '"{{ no_log }}"')
if [ -n "${no_log}" ]; then
echo 'Please update the following no_log statement(s) with the "{{ no_log }}" value'
echo "${no_log}"
exit 1
fi

27
.github/workflows/devel.yaml vendored Normal file
View File

@@ -0,0 +1,27 @@
---
name: Devel
on:
push:
branches: [devel]
jobs:
release:
runs-on: ubuntu-latest
name: Push devel image
steps:
- uses: actions/checkout@v3
- name: Build Image
run: |
IMG=awx-operator:devel make docker-build
- name: Push To Quay
uses: redhat-actions/push-to-registry@v2.1.1
with:
image: awx-operator
tags: devel
registry: quay.io/ansible/
username: ${{ secrets.QUAY_USER }}
password: ${{ secrets.QUAY_TOKEN }}

56
.github/workflows/feature.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
---
name: Feature Branch Image Build and Push
on:
push:
branches: [feature_*]
jobs:
release:
runs-on: ubuntu-latest
name: Push devel image
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # needed so that git describe --tag works
- name: Set VERSION
run: |
echo "VERSION=$(git describe --tags)" >>${GITHUB_ENV}
- name: Set lower case owner name
run: |
echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
env:
OWNER: '${{ github.repository_owner }}'
- name: Set IMAGE_TAG_BASE
run: |
echo "IMAGE_TAG_BASE=ghcr.io/${OWNER_LC}/awx-operator" >>${GITHUB_ENV}
- name: Log in to registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build and Push awx-operator Image
run: |
make docker-build docker-push
docker tag ${IMAGE_TAG_BASE}:${VERSION} ${IMAGE_TAG_BASE}:${GITHUB_REF##*/}
docker push ${IMAGE_TAG_BASE}:${GITHUB_REF##*/}
- name: Build bundle manifests
run: |
make bundle
- name: Build and Push awx-operator Bundle
run: |
make bundle-build bundle-push
docker tag ${IMAGE_TAG_BASE}-bundle:v${VERSION} ${IMAGE_TAG_BASE}-bundle:${GITHUB_REF##*/}
docker push ${IMAGE_TAG_BASE}-bundle:${GITHUB_REF##*/}
- name: Build and Push awx-operator Catalog
run: |
make catalog-build catalog-push
docker tag ${IMAGE_TAG_BASE}-catalog:v${VERSION} ${IMAGE_TAG_BASE}-catalog:${GITHUB_REF##*/}
docker push ${IMAGE_TAG_BASE}-catalog:${GITHUB_REF##*/}

54
.github/workflows/label_issue.yml vendored Normal file
View File

@@ -0,0 +1,54 @@
---
name: Label Issues
on:
issues:
types:
- opened
- reopened
jobs:
triage:
runs-on: ubuntu-latest
name: Label
steps:
- name: Label Issue - Needs Triage
uses: github/issue-labeler@v2.4.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
not-before: 2021-12-07T07:00:00Z
configuration-path: .github/issue_labeler.yml
enable-versioned-regex: 0
if: github.event_name == 'issues'
community:
runs-on: ubuntu-latest
name: Label Issue - Community
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- name: Install python requests
run: pip install requests
- name: Check if user is a member of Ansible org
uses: jannekem/run-python-script-action@v1
id: check_user
with:
script: |
import requests
headers = {'Accept': 'application/vnd.github+json', 'Authorization': 'token ${{ secrets.GITHUB_TOKEN }}'}
response = requests.get('${{ fromJson(toJson(github.event.issue.user.url)) }}/orgs?per_page=100', headers=headers)
is_member = False
for org in response.json():
if org['login'] == 'ansible':
is_member = True
if is_member:
print("User is member")
else:
print("User is community")
- name: Add community label if not a member
if: contains(steps.check_user.outputs.stdout, 'community')
uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90
with:
add-labels: "community"
repo-token: ${{ secrets.GITHUB_TOKEN }}

40
.github/workflows/label_pr.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Label PR
on:
pull_request_target:
types:
- opened
- reopened
- synchronize
jobs:
community:
runs-on: ubuntu-latest
name: Label PR - Community
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- name: Install python requests
run: pip install requests
- name: Check if user is a member of Ansible org
uses: jannekem/run-python-script-action@v1
id: check_user
with:
script: |
import requests
headers = {'Accept': 'application/vnd.github+json', 'Authorization': 'token ${{ secrets.GITHUB_TOKEN }}'}
response = requests.get('${{ fromJson(toJson(github.event.pull_request.user.url)) }}/orgs?per_page=100', headers=headers)
is_member = False
for org in response.json():
if org['login'] == 'ansible':
is_member = True
if is_member:
print("User is member")
else:
print("User is community")
- name: Add community label if not a member
if: contains(steps.check_user.outputs.stdout, 'community')
uses: andymckay/labeler@e6c4322d0397f3240f0e7e30a33b5c5df2d39e90
with:
add-labels: "community"
repo-token: ${{ secrets.GITHUB_TOKEN }}

37
.github/workflows/pr_body_check.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
---
name: PR Check
env:
BRANCH: ${{ github.base_ref || 'devel' }}
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
pr-check:
name: Scan PR description for semantic versioning keywords
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Check for each of the lines
env:
PR_BODY: ${{ github.event.pull_request.body }}
run: |
echo "$PR_BODY" | grep "Bug, Docs Fix or other nominal change" > Z
echo "$PR_BODY" | grep "New or Enhanced Feature" > Y
echo "$PR_BODY" | grep "Breaking Change" > X
exit 0
# We exit 0 and set the shell to prevent the returns from the greps from failing this step
# See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference
shell: bash {0}
- name: Check for exactly one item
run: |
if [ $(cat X Y Z | wc -l) != 1 ] ; then
echo "The PR body must contain exactly one of [ 'Bug, Docs Fix or other nominal change', 'New or Enhanced Feature', 'Breaking Change' ]"
echo "We counted $(cat X Y Z | wc -l)"
echo "See the default PR body for examples"
exit 255;
else
exit 0;
fi

54
.github/workflows/promote.yaml vendored Normal file
View File

@@ -0,0 +1,54 @@
---
name: Promote AWX Operator image
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag_name:
description: 'Name for the tag of the release.'
required: true
jobs:
promote:
runs-on: ubuntu-latest
steps:
- name: Set TAG_NAME for workflow_dispatch event
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo "TAG_NAME=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
- name: Set TAG_NAME for release event
if: ${{ github.event_name == 'release' }}
run: |
echo "TAG_NAME=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
- uses: actions/checkout@v3
with:
depth: 0
- name: Log in to GHCR
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Log in to Quay
run: |
echo ${{ secrets.QUAY_TOKEN }} | docker login quay.io -u ${{ secrets.QUAY_USER }} --password-stdin
- name: Re-tag and promote awx-operator image
run: |
docker pull ghcr.io/${{ github.repository }}:${TAG_NAME}
docker tag ghcr.io/${{ github.repository }}:${TAG_NAME} quay.io/${{ github.repository }}:${TAG_NAME}
docker tag ghcr.io/${{ github.repository }}:${TAG_NAME} quay.io/${{ github.repository }}:latest
docker push quay.io/${{ github.repository }}:${TAG_NAME}
docker push quay.io/${{ github.repository }}:latest
- name: Release Helm chart
run: |
ansible-playbook ansible/helm-release.yml -v \
-e operator_image=quay.io/${{ github.repository }} \
-e chart_owner=${{ github.repository_owner }} \
-e tag=${TAG_NAME} \
-e gh_token=${{ secrets.GITHUB_TOKEN }} \
-e gh_user=${{ github.actor }} \
-e repo_type=https

26
.github/workflows/publish-helm.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
---
name: Re-publish helm chart
on:
workflow_dispatch:
inputs:
tag:
description: 'Release tag'
required: true
type: string
jobs:
promote:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
depth: 0
- name: Release Helm chart
run: |
ansible-playbook ansible/helm-release.yml -v \
-e operator_image=quay.io/${{ github.repository }} \
-e chart_owner=${{ github.repository_owner }} \
-e tag=${{ inputs.tag }} \
-e gh_token=${{ secrets.GITHUB_TOKEN }} \
-e gh_user=${{ github.actor }} \
-e repo_type=https

View File

@@ -0,0 +1,86 @@
name: Publish AWX Operator on operator-hub
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag_name:
description: 'Name for the tag of the release.'
required: true
operator_hub_fork:
description: 'Fork of operator-hub where the PR will be created from. default: awx-auto'
required: true
default: 'awx-auto'
image_registry:
description: 'Image registry where the image is published to. default: quay.io'
required: true
default: 'quay.io'
image_registry_organization:
description: 'Image registry organization where the image is published to. default: ansible'
required: true
default: 'ansible'
community_operator_github_org:
description: 'Github organization for community-opeartor project. default: k8s-operatorhub'
required: true
default: 'k8s-operatorhub'
community_operator_prod_github_org:
description: 'GitHub organization for community-operator-prod project. default: redhat-openshift-ecosystem'
required: true
default: 'redhat-openshift-ecosystem'
jobs:
promote:
runs-on: ubuntu-latest
steps:
- name: Set GITHUB_ENV from workflow_dispatch event
if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo "VERSION=${{ github.event.inputs.tag_name }}" >> $GITHUB_ENV
echo "IMAGE_REGISTRY=${{ github.event.inputs.image_registry }}" >> $GITHUB_ENV
echo "IMAGE_REGISTRY_ORGANIZATION=${{ github.event.inputs.image_registry_organization }}" >> $GITHUB_ENV
echo "COMMUNITY_OPERATOR_GITHUB_ORG=${{ github.event.inputs.community_operator_github_org }}" >> $GITHUB_ENV
echo "COMMUNITY_OPERATOR_PROD_GITHUB_ORG=${{ github.event.inputs.community_operator_prod_github_org }}" >> $GITHUB_ENV
- name: Set GITHUB_ENV for release event
if: ${{ github.event_name == 'release' }}
run: |
echo "VERSION=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
echo "IMAGE_REGISTRY=quay.io" >> $GITHUB_ENV
echo "IMAGE_REGISTRY_ORGANIZATION=ansible" >> $GITHUB_ENV
echo "COMMUNITY_OPERATOR_GITHUB_ORG=k8s-operatorhub" >> $GITHUB_ENV
echo "COMMUNITY_OPERATOR_PROD_GITHUB_ORG=redhat-openshift-ecosystem" >> $GITHUB_ENV
- name: Log in to image registry
run: |
echo ${{ secrets.QUAY_TOKEN }} | docker login ${{ env.IMAGE_REGISTRY }} -u ${{ secrets.QUAY_USER }} --password-stdin
- name: Checkout awx-operator at workflow branch
uses: actions/checkout@v4
with:
path: awx-operator
- name: Checkout awx-opearator at ${{ env.VERSION }}
uses: actions/checkout@v4
with:
fetch-tags: true
ref: ${{ env.VERSION }}
path: awx-operator-${{ env.VERSION }}
fetch-depth: 0 # fetch all history so that git describe works
- name: Copy scripts to awx-operator-${{ env.VERSION }}
run: |
cp -f \
awx-operator/hack/publish-to-operator-hub.sh \
awx-operator-${{ env.VERSION }}/hack/publish-to-operator-hub.sh
cp -f \
awx-operator/Makefile \
awx-operator-${{ env.VERSION }}/Makefile
- name: Build and publish bundle to operator-hub
working-directory: awx-operator-${{ env.VERSION }}
env:
IMG_REPOSITORY: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_REGISTRY_ORGANIZATION }}
GITHUB_TOKEN: ${{ secrets.AWX_AUTO_GITHUB_TOKEN }}
run: |
git config --global user.email "awx-automation@redhat.com"
git config --global user.name "AWX Automation"
./hack/publish-to-operator-hub.sh

85
.github/workflows/stage.yml vendored Normal file
View File

@@ -0,0 +1,85 @@
---
name: Stage Release
on:
workflow_dispatch:
inputs:
version:
description: 'Version to stage'
required: true
default_awx_version:
description: 'Will be injected as the DEFAULT_AWX_VERSION build arg.'
required: true
confirm:
description: 'Are you sure? Set this to yes.'
required: true
default: 'no'
jobs:
stage:
runs-on: ubuntu-latest
permissions:
packages: write
contents: write
steps:
- name: Verify inputs
run: |
set -e
if [[ ${{ github.event.inputs.confirm }} != "yes" ]]; then
>&2 echo "Confirm must be 'yes'"
exit 1
fi
if [[ ${{ github.event.inputs.version }} == "" ]]; then
>&2 echo "Set version to continue."
exit 1
fi
exit 0
- name: Checkout awx
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/awx
path: awx
- name: Checkout awx-operator
uses: actions/checkout@v3
with:
repository: ${{ github.repository_owner }}/awx-operator
path: awx-operator
- name: Install playbook dependencies
run: |
python3 -m pip install docker
- name: Log in to GHCR
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build and stage awx-operator
working-directory: awx-operator
run: |
BUILD_ARGS="--build-arg DEFAULT_AWX_VERSION=${{ github.event.inputs.default_awx_version }} \
--build-arg OPERATOR_VERSION=${{ github.event.inputs.version }}" \
IMAGE_TAG_BASE=ghcr.io/${{ github.repository_owner }}/awx-operator \
VERSION=${{ github.event.inputs.version }} make docker-build docker-push
- name: Run test deployment
working-directory: awx-operator
run: |
python3 -m pip install -r molecule/requirements.txt
ansible-galaxy collection install -r molecule/requirements.yml
sudo rm -f $(which kustomize)
make kustomize
KUSTOMIZE_PATH=$(readlink -f bin/kustomize) molecule test -s kind
env:
AWX_TEST_VERSION: ${{ github.event.inputs.default_awx_version }}
- name: Create draft release
working-directory: awx
run: |
ansible-playbook tools/ansible/stage.yml \
-e version=${{ github.event.inputs.version }} \
-e repo=${{ github.repository_owner }}/awx-operator \
-e github_token=${{ secrets.GITHUB_TOKEN }}

10
.gitignore vendored
View File

@@ -1,2 +1,12 @@
*~
gh-pages/
.cache/
/bin
/bundle
/bundle_tmp*
/bundle.Dockerfile
/charts
/.cr-release-packages
.vscode/
__pycache__
/site

23
.helm/starter/.helmignore Normal file
View File

@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

7
.helm/starter/Chart.yaml Normal file
View File

@@ -0,0 +1,7 @@
---
apiVersion: v2
appVersion: 0.1.0
description: A Helm chart for Kubernetes
name: starter
type: application
version: 0.1.0

67
.helm/starter/README.md Normal file
View File

@@ -0,0 +1,67 @@
# AWX Operator Helm Chart
This chart installs the AWX Operator resources configured in [this](https://github.com/ansible/awx-operator) repository.
## Getting Started
To configure your AWX resource using this chart, create your own `yaml` values file. The name is up to personal preference since it will explicitly be passed into the helm chart. Helm will merge whatever values you specify in your file with the default `values.yaml`, overriding any settings you've changed while allowing you to fall back on defaults. Because of this functionality, `values.yaml` should not be edited directly.
In your values config, enable `AWX.enabled` and add `AWX.spec` values based on the awx operator's [documentation](https://github.com/ansible/awx-operator/blob/devel/README.md). Consult the docs below for additional functionality.
### Installing
The operator's [helm install](https://github.com/ansible/awx-operator/blob/devel/README.md#helm-install-on-existing-cluster) guide provides key installation instructions.
Example:
```
helm install my-awx-operator awx-operator/awx-operator -n awx --create-namespace -f myvalues.yaml
```
Argument breakdown:
* `-f` passes in the file with your custom values
* `-n` sets the namespace to be installed in
* This value is accessed by `{{ $.Release.Namespace }}` in the templates
* Acts as the default namespace for all unspecified resources
* `--create-namespace` specifies that helm should create the namespace before installing
To update an existing installation, use `helm upgrade` instead of `install`. The rest of the syntax remains the same.
## Configuration
The goal of adding helm configurations is to abstract out and simplify the creation of multi-resource configs. The `AWX.spec` field maps directly to the spec configs of the `AWX` resource that the operator provides, which are detailed in the [main README](https://github.com/ansible/awx-operator/blob/devel/README.md). Other sub-config can be added with the goal of simplifying more involved setups that require additional resources to be specified.
These sub-headers aim to be a more intuitive entrypoint into customizing your deployment, and are easier to manage in the long-term. By design, the helm templates will defer to the manually defined specs to avoid configuration conflicts. For example, if `AWX.spec.postgres_configuration_secret` is being used, the `AWX.postgres` settings will not be applied, even if enabled.
### External Postgres
The `AWX.postgres` section simplifies the creation of the external postgres secret. If enabled, the configs provided will automatically be placed in a `postgres-config` secret and linked to the `AWX` resource. For proper secret management, the `AWX.postgres.password` value, and any other sensitive values, can be passed in at the command line rather than specified in code. Use the `--set` argument with `helm install`. Supplying the password this way is not recommended for production use, but may be helpful for initial PoC.
## Values Summary
### AWX
| Value | Description | Default |
|---|---|---|
| `AWX.enabled` | Enable this AWX resource configuration | `false` |
| `AWX.name` | The name of the AWX resource and default prefix for other resources | `"awx"` |
| `AWX.spec` | specs to directly configure the AWX resource | `{}` |
| `AWX.postgres` | configurations for the external postgres secret | - |
# Contributing
## Adding abstracted sections
Where possible, defer to `AWX.spec` configs before applying the abstracted configs to avoid collision. This can be facilitated by the `(hasKey .spec what_i_will_abstract)` check.
## Building and Testing
This chart is built using the Makefile in the [awx-operator repo](https://github.com/ansible/awx-operator). Clone the repo and run `make helm-chart`. This will create the awx-operator chart in the `charts/awx-operator` directory. In this process, the contents of the `.helm/starter` directory will be added to the chart.
## Future Goals
All values under the `AWX` header are focused on configurations that use the operator. Configurations that relate to the Operator itself could be placed under an `Operator` heading, but that may add a layer of complication over current development.
# Chart Publishing
The chart is currently hosted on the gh-pages branch of the repo. During the release pipeline, the `index.yaml` stored in that branch is generated with helm chart entries from all valid tags. We are currently unable to use the `chart-releaser` pipeline due to the fact that the complete helm chart is not committed to the repo and is instead built during the release process. Therefore, the cr action is unable to compare against previous versions.
Instead of CR, we use `helm repo index` to generate an index from all locally pulled chart versions. Since we build from scratch every time, the timestamps of all entries will be updated. This could be improved by using yq or something similar to detect which tags are already in the index.yaml file, and only merge in tags that are not present.
Not using CR could be addressed in the future by keeping the chart built as a part of releases, as long as CR compares the chart to previous release packages rather than previous commits. If the latter is the case, then we would not have the necessary history for comparison.

View File

@@ -0,0 +1,6 @@
{{/*
Generate the name of the postgres secret, expects AWX context passed in
*/}}
{{- define "postgres.secretName" -}}
{{ default (printf "%s-postgres-configuration" .Values.AWX.name) .Values.AWX.postgres.secretName }}
{{- end }}

View File

@@ -0,0 +1,24 @@
{{- if $.Values.AWX.enabled }}
{{- with .Values.AWX }}
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: {{ .name }}
namespace: {{ $.Release.Namespace }}
spec:
{{- /* Include raw map from the values file spec */}}
{{ .spec | toYaml | indent 2 }}
{{- /* Provide security context defaults */}}
{{- if not (hasKey .spec "security_context_settings") }}
security_context_settings:
runAsGroup: 0
runAsUser: 0
fsGroup: 0
fsGroupChangePolicy: OnRootMismatch
{{- end }}
{{- /* Postgres configs if enabled and not already present */}}
{{- if and .postgres.enabled (not (hasKey .spec "postgres_configuration_secret")) }}
postgres_configuration_secret: {{ include "postgres.secretName" $ }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,18 @@
{{- if and $.Values.AWX.enabled $.Values.AWX.postgres.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "postgres.secretName" . }}
namespace: {{ $.Release.Namespace }}
{{- with $.Values.AWX.postgres }}
stringData:
host: {{ .host }}
port: {{ .port | quote }}
database: {{ .dbName }}
username: {{ .username }}
password: {{ .password }}
sslmode: {{ .sslmode }}
type: {{ .type }}
type: Opaque
{{- end }}
{{- end }}

19
.helm/starter/values.yaml Normal file
View File

@@ -0,0 +1,19 @@
AWX:
# enable use of awx-deploy template
enabled: false
name: awx
spec:
admin_user: admin
# configurations for external postgres instance
postgres:
enabled: false
host: Unset
port: 5678
dbName: Unset
username: admin
# for secret management, pass in the password independently of this file
# at the command line, use --set AWX.postgres.password
password: Unset
sslmode: prefer
type: unmanaged

17
.readthedocs.yml Normal file
View File

@@ -0,0 +1,17 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# RTD API version
version: 2
build:
os: ubuntu-22.04
tools:
python: "3.11"
mkdocs:
configuration: mkdocs.yml
python:
install:
- requirements: ./docs/requirements.txt

View File

@@ -1,19 +0,0 @@
---
services: docker
language: python
before_install:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
env:
- DOCKER_API_VERSION=1.38
install:
- pip3 install docker molecule molecule-docker yamllint ansible-lint openshift jmespath ansible
- ansible-galaxy collection install community.kubernetes operator_sdk.util
script:
- MOLECULE_VERBOSITY=3 molecule test -s test-local

View File

@@ -3,10 +3,18 @@ extends: default
ignore: |
.cache/
deploy/olm-catalog
kustomization.yaml
awx-operator.clusterserviceversion.yaml
bundle
.helm/starter
hacking/
rules:
truthy: disable
line-length:
max: 160
max: 170
document-start: disable
comments-indentation: disable
indentation:
level: warning
indent-sequences: consistent

50
CHANGELOG.md Normal file
View File

@@ -0,0 +1,50 @@
# Changelog
This is a list of high-level changes for each release of `awx-operator`. A full list of commits can be found at `https://github.com/ansible/awx-operator/releases/tag/<version>`.
# 0.19.0 (Mar 23, 2022)
- Fix corrupted spec for the service with nodeport type (kurokobo) - dbaf64e
- Add ability to deploy with OLM & added logo (Christian Adams) - 86c31a4
- Fix backup & restore issues with special characters in the postgres password (kurokobo) - 589a375
- Use centos:stream8 container where applicable (Shane McDonald)- 12a58d7
# 0.14.0 (Oct 03, 2021)
- Starting with awx-operator 0.14.0, the project is now based on operator-sdk 1.x.
- To avoid a headache, you probably want to delete your existing operator Deployment and follow the README.
- Starting with awx-operator 0.14.0, AWX can only be deployed in the namespace that the operator exists in. See [upgrade docs](./README.md#upgrading) for necessary cleanup actions. (Christian Adams) - 58c3ebf (breaking change)
# 0.10.0 (Jun 1, 2021)
- Make tower_ingress_type to respect ClusterIP definition (Marcelo Moreira de Mello) - e37c091 (breaking_change)
- Add ability to get/create/delete secrets for the awx service account (Christian M. Adams) - 61b3cb4
- Added ability to specify annotations to ServiceAccount (Marcelo Moreira de Mello) - 446ac0b
- Do not shadow other variables (Yanis Guenane) - 223fe98
- Do not prepend variables name with tower_ (Yanis Guenane) - 75458d0 (breaking_change)
- Fully remove finalizer (Christian M. Adams) - fd92050
- Use custom pg_dump format for faster restores (Christian M. Adams) - f16d9ac
- Allow user to specify empty string for storage class on PVC (Christian M. Adams) - 818b837
- Unset ownerRefs in the installer instead of the finalizer (Christian M. Adams) - c12a1f0
- Make awx-operator compatible with Ansible 2.12 (Alan Rominger) - 5216489
- Restore: set proper kind var after deploying AWX CR (Julen Landa Alustiza) - fc4687f
- Add support for custom service labels (Jeremy Kimber) - fd42802
- Rename product specific variable names (Christian M. Adams) - 5ae3636 (breaking_change)
- Add watcher for backup CR (Christian M. Adams) - fdcc745
# 0.9.0 (May 1, 2021)
- Update playbook to allow for deploying custom image version/tag (Shane McDonald) - 77e7039
- Mounts /var/lib/awx/projects on awx-web container (Marcelo Moreira de Mello) - f21ec4d
- Extra Settings: Allow one to pass extra API configuration settings. (Yanis Guenane) - 1d14ebc
- PostgreSQL: Properly handle variable name difference when using Red Hat containers (Yanis Guenane) - 2965a90
- Deployment type: Make more fields dynamic based on that field (Yanis Guenane) - 4706aa9
- Add templated EE volume mount var to operator config (Christian M. Adams) - e55d83f
- Add NodePort to tower_ingress_type enum (TheStally) - 96b878f
- Split container image and version in 2 variables (Marcelo Moreira de Mello) - bc34758 (breaking_change)
- Handles deleting and recreating statefulset and deployment when needed (Marcelo Moreira de Mello) - 597356f
- Add tower_ingress_type NodePort (stal) - 1b87616
- expose settings to use custom volumes and volume mounts (Gabe Muniz) - 8d65b84
- Inherit imagePullPolicy to redis container (Marcelo Moreira de Mello) - 83a85d1
- Add nodeSelector and tolerations for Postgres pod (Ernesto Pérez) - 151ff11
- Added support to override pg_sslmode (Marcelo Moreira de Mello) - 298d39c

143
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,143 @@
# AWX-Operator Contributing Guidelines
Hi there! We're excited to have you as a contributor.
Have questions about this document or anything not covered here? Please file a new at [https://github.com/ansible/awx-operator/issues](https://github.com/ansible/awx-operator/issues).
## Table of contents
* [Things to know prior to submitting code](#things-to-know-prior-to-submitting-code)
* [Submmiting your Work](#submitting-your-work)
* [Testing](#testing)
* [Testing in Docker](#testing-in-docker)
* [Testing in Minikube](#testing-in-minikube)
* [Generating a bundle](#generating-a-bundle)
* [Reporting Issues](#reporting-issues)
## Things to know prior to submitting code
- All code submissions are done through pull requests against the `devel` branch.
- All PRs must have a single commit. Make sure to `squash` any changes into a single commit.
- Take care to make sure no merge commits are in the submission, and use `git rebase` vs `git merge` for this reason.
- If collaborating with someone else on the same branch, consider using `--force-with-lease` instead of `--force`. This will prevent you from accidentally overwriting commits pushed by someone else. For more information, see https://git-scm.com/docs/git-push#git-push---force-with-leaseltrefnamegt
- We ask all of our community members and contributors to adhere to the [Ansible code of conduct](http://docs.ansible.com/ansible/latest/community/code_of_conduct.html). If you have questions, or need assistance, please reach out to our community team at [codeofconduct@ansible.com](mailto:codeofconduct@ansible.com)
## Submmiting your work
1. From your fork `devel` branch, create a new brach to stage your changes.
```sh
#> git checkout -b <branch-name>
```
2. Make your changes.
3. Test your changes according described on the Testing section.
4. If everything looks correct, commit your changes.
```sh
#> git add <FILES>
#> git commit -m "My message here"
```
5. Create your [pull request](https://github.com/ansible/awx-operator/pulls)
**Note**: If you have multiple commits, make sure to `squash` your commits into a single commit which will facilitate our release process.
## Testing
This Operator includes a [Molecule](https://molecule.readthedocs.io/en/stable/)-based test environment, which can be executed standalone in Docker (e.g. in CI or in a single Docker container anywhere), or inside any kind of Kubernetes cluster (e.g. Minikube).
You need to make sure you have Molecule installed before running the following commands. You can install Molecule with:
```sh
#> pip install 'molecule[docker]'
```
Running `molecule test` sets up a clean environment, builds the operator, runs all configured tests on an example operator instance, then tears down the environment (at least in the case of Docker).
If you want to actively develop the operator, use `molecule converge`, which does everything but tear down the environment at the end.
#### Testing in Kind
Testing with a kind cluster is the recommended way to test the awx-operator locally. First, you need to install kind if you haven't already. Please see these docs for setting that up:
* https://kind.sigs.k8s.io/docs/user/quick-start/
To run the tests, from the root of your checkout, run the following command:
```sh
#> molecule test -s kind
```
#### Testing in Minikube
```sh
#> minikube start --memory 8g --cpus 4
#> minikube addons enable ingress
#> molecule test -s test-minikube
```
[Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) is a more full-featured test environment running inside a full VM on your computer, with an assigned IP address. This makes it easier to test things like NodePort services and Ingress from outside the Kubernetes cluster (e.g. in a browser on your computer).
Once the operator is deployed, you can visit the AWX UI in your browser by following these steps:
1. Make sure you have an entry like `IP_ADDRESS example-awx.test` in your `/etc/hosts` file. (Get the IP address with `minikube ip`.)
2. Visit `http://example-awx.test/` in your browser. (Default admin login is `test`/`changeme`.)
Alternatively, you can also update the service `awx-service` in your namespace to use the type `NodePort` and use following command to get the URL to access your AWX instance:
```sh
#> minikube service <serviceName> -n <namespaceName> --url
```
## Generating a bundle
> :warning: operator-sdk version 0.19.4 is needed to run the following commands
If one has the Operator Lifecycle Manager (OLM) installed, the following steps is the process to generate the bundle that would nicely display in the OLM interface.
At the root of this directory:
1. Build and publish the operator
```
#> operator-sdk build registry.example.com/ansible/awx-operator:mytag
#> podman push registry.example.com/ansible/awx-operator:mytag
```
2. Build and publish the bundle
```
#> podman build . -f bundle.Dockerfile -t registry.example.com/ansible/awx-operator-bundle:mytag
#> podman push registry.example.com/ansible/awx-operator-bundle:mytag
```
3. Build and publish an index with your bundle in it
```
#> opm index add --bundles registry.example.com/ansible/awx-operator-bundle:mytag --tag registry.example.com/ansible/awx-operator-catalog:mytag
#> podman push registry.example.com/ansible/awx-operator-catalog:mytag
```
4. In your Kubernetes create a new CatalogSource pointing to `registry.example.com/ansible/awx-operator-catalog:mytag`
```
---
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: <catalogsource-name>
namespace: <namespace>
spec:
displayName: 'myoperatorhub'
image: registry.example.com/ansible/awx-operator-catalog:mytag
publisher: 'myoperatorhub'
sourceType: grpc
```
Applying this template will do it. Once the CatalogSource is in a READY state, the bundle should be available on the OperatorHub tab (as part of the custom CatalogSource that just got added)
5. Enjoy
## Reporting Issues
We welcome your feedback, and encourage you to file an issue when you run into a problem.

25
Dockerfile Normal file
View File

@@ -0,0 +1,25 @@
FROM quay.io/operator-framework/ansible-operator:v1.31.0
USER 0
RUN dnf install -y openssl
USER 1001
ARG DEFAULT_AWX_VERSION
ARG OPERATOR_VERSION
ENV DEFAULT_AWX_VERSION=${DEFAULT_AWX_VERSION}
ENV OPERATOR_VERSION=${OPERATOR_VERSION}
COPY requirements.yml ${HOME}/requirements.yml
RUN ansible-galaxy collection install -r ${HOME}/requirements.yml \
&& chmod -R ug+rwx ${HOME}/.ansible
COPY watches.yaml ${HOME}/watches.yaml
COPY roles/ ${HOME}/roles/
COPY playbooks/ ${HOME}/playbooks/
ENTRYPOINT ["/tini", "--", "/usr/local/bin/ansible-operator", "run", \
"--watches-file=./watches.yaml", \
"--reconcile-period=0s" \
]

427
Makefile Normal file
View File

@@ -0,0 +1,427 @@
# VERSION defines the project version for the bundle.
# Update this value when you upgrade the version of your project.
# To re-generate a bundle for another specific version without changing the standard setup, you can:
# - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2)
# - use environment variables to overwrite this value (e.g export VERSION=0.0.2)
VERSION ?= $(shell git describe --tags)
PREV_VERSION ?= $(shell git describe --abbrev=0 --tags $(shell git rev-list --tags --skip=1 --max-count=1))
CONTAINER_CMD ?= docker
# GNU vs BSD in-place sed
ifeq ($(shell sed --version 2>/dev/null | grep -q GNU && echo gnu),gnu)
SED_I := sed -i
else
SED_I := sed -i ''
endif
# CHANNELS define the bundle channels used in the bundle.
# Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable")
# To re-generate a bundle for other specific channels without changing the standard setup, you can:
# - use the CHANNELS as arg of the bundle target (e.g make bundle CHANNELS=candidate,fast,stable)
# - use environment variables to overwrite this value (e.g export CHANNELS="candidate,fast,stable")
ifneq ($(origin CHANNELS), undefined)
BUNDLE_CHANNELS := --channels=$(CHANNELS)
endif
# DEFAULT_CHANNEL defines the default channel used in the bundle.
# Add a new line here if you would like to change its default config. (E.g DEFAULT_CHANNEL = "stable")
# To re-generate a bundle for any other default channel without changing the default setup, you can:
# - use the DEFAULT_CHANNEL as arg of the bundle target (e.g make bundle DEFAULT_CHANNEL=stable)
# - use environment variables to overwrite this value (e.g export DEFAULT_CHANNEL="stable")
ifneq ($(origin DEFAULT_CHANNEL), undefined)
BUNDLE_DEFAULT_CHANNEL := --default-channel=$(DEFAULT_CHANNEL)
endif
BUNDLE_METADATA_OPTS ?= $(BUNDLE_CHANNELS) $(BUNDLE_DEFAULT_CHANNEL)
# IMAGE_TAG_BASE defines the docker.io namespace and part of the image name for remote images.
# This variable is used to construct full image tags for bundle and catalog images.
#
# For example, running 'make bundle-build bundle-push catalog-build catalog-push' will build and push both
# ansible.com/awx-operator-bundle:$VERSION and ansible.com/awx-operator-catalog:$VERSION.
IMAGE_TAG_BASE ?= quay.io/ansible/awx-operator
# BUNDLE_IMG defines the image:tag used for the bundle.
# You can use it as an arg. (E.g make bundle-build BUNDLE_IMG=<some-registry>/<project-name-bundle>:<tag>)
BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION)
# BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command
BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)
# USE_IMAGE_DIGESTS defines if images are resolved via tags or digests
# You can enable this value if you would like to use SHA Based Digests
# To enable set flag to true
USE_IMAGE_DIGESTS ?= false
ifeq ($(USE_IMAGE_DIGESTS), true)
BUNDLE_GEN_FLAGS += --use-image-digests
endif
# Image URL to use all building/pushing image targets
IMG ?= $(IMAGE_TAG_BASE):$(VERSION)
NAMESPACE ?= awx
# Helm variables
CHART_NAME ?= awx-operator
CHART_DESCRIPTION ?= A Helm chart for the AWX Operator
CHART_OWNER ?= $(GH_REPO_OWNER)
CHART_REPO ?= awx-operator
CHART_BRANCH ?= gh-pages
CHART_DIR ?= gh-pages
CHART_INDEX ?= index.yaml
.PHONY: all
all: docker-build
##@ General
# The help target prints out all targets with their descriptions organized
# beneath their categories. The categories are represented by '##@' and the
# target descriptions by '##'. The awk commands is responsible for reading the
# entire set of makefiles included in this invocation, looking for lines of the
# file as xyz: ## something, and then pretty-format the target and help. Then,
# if there's a line with ##@ something, that gets pretty-printed as a category.
# More info on the usage of ANSI control characters for terminal formatting:
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
# More info on the awk command:
# http://linuxcommand.org/lc3_adv_awk.php
.PHONY: help
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
.PHONY: print-%
print-%: ## Print any variable from the Makefile. Use as `make print-VARIABLE`
@echo $($*)
##@ Build
.PHONY: run
run: ansible-operator ## Run against the configured Kubernetes cluster in ~/.kube/config
ANSIBLE_ROLES_PATH="$(ANSIBLE_ROLES_PATH):$(shell pwd)/roles" $(ANSIBLE_OPERATOR) run
.PHONY: docker-build
docker-build: ## Build docker image with the manager.
${CONTAINER_CMD} build $(BUILD_ARGS) -t ${IMG} .
.PHONY: docker-push
docker-push: ## Push docker image with the manager.
${CONTAINER_CMD} push ${IMG}
##@ Deployment
.PHONY: install
install: kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | kubectl apply -f -
.PHONY: uninstall
uninstall: kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config.
$(KUSTOMIZE) build config/crd | kubectl delete -f -
.PHONY: gen-resources
gen-resources: kustomize ## Generate resources for controller and print to stdout
@cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
@cd config/default && $(KUSTOMIZE) edit set namespace ${NAMESPACE}
@$(KUSTOMIZE) build config/default
.PHONY: deploy
deploy: kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.
@cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
@cd config/default && $(KUSTOMIZE) edit set namespace ${NAMESPACE}
@$(KUSTOMIZE) build config/default | kubectl apply -f -
.PHONY: undeploy
undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config.
@cd config/default && $(KUSTOMIZE) edit set namespace ${NAMESPACE}
$(KUSTOMIZE) build config/default | kubectl delete -f -
OS := $(shell uname -s | tr '[:upper:]' '[:lower:]')
ARCHA := $(shell uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')
ARCHX := $(shell uname -m | sed -e 's/amd64/x86_64/' -e 's/aarch64/arm64/')
.PHONY: kustomize
KUSTOMIZE = $(shell pwd)/bin/kustomize
kustomize: ## Download kustomize locally if necessary.
ifeq (,$(wildcard $(KUSTOMIZE)))
ifeq (,$(shell which kustomize 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(KUSTOMIZE)) ;\
curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.0.1/kustomize_v5.0.1_$(OS)_$(ARCHA).tar.gz | \
tar xzf - -C bin/ ;\
}
else
KUSTOMIZE = $(shell which kustomize)
endif
endif
.PHONY: operator-sdk
OPERATOR_SDK = $(shell pwd)/bin/operator-sdk
operator-sdk: ## Download operator-sdk locally if necessary, preferring the $(pwd)/bin path over global if both exist.
ifeq (,$(wildcard $(OPERATOR_SDK)))
ifeq (,$(shell which operator-sdk 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(OPERATOR_SDK)) ;\
curl -sSLo $(OPERATOR_SDK) https://github.com/operator-framework/operator-sdk/releases/download/v1.31.0/operator-sdk_$(OS)_$(ARCHA) ;\
chmod +x $(OPERATOR_SDK) ;\
}
else
OPERATOR_SDK = $(shell which operator-sdk)
endif
endif
.PHONY: ansible-operator
ANSIBLE_OPERATOR = $(shell pwd)/bin/ansible-operator
ansible-operator: ## Download ansible-operator locally if necessary, preferring the $(pwd)/bin path over global if both exist.
ifeq (,$(wildcard $(ANSIBLE_OPERATOR)))
ifeq (,$(shell which ansible-operator 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(ANSIBLE_OPERATOR)) ;\
curl -sSLo $(ANSIBLE_OPERATOR) https://github.com/operator-framework/operator-sdk/releases/download/v1.31.0/ansible-operator_$(OS)_$(ARCHA) ;\
chmod +x $(ANSIBLE_OPERATOR) ;\
}
else
ANSIBLE_OPERATOR = $(shell which ansible-operator)
endif
endif
.PHONY: bundle
bundle: kustomize operator-sdk ## Generate bundle manifests and metadata, then validate generated files.
$(OPERATOR_SDK) generate kustomize manifests -q
cd config/manager && $(KUSTOMIZE) edit set image controller=$(IMG)
$(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)
$(OPERATOR_SDK) bundle validate ./bundle
.PHONY: bundle-build
bundle-build: ## Build the bundle image.
${CONTAINER_CMD} build -f bundle.Dockerfile -t $(BUNDLE_IMG) .
.PHONY: bundle-push
bundle-push: ## Push the bundle image.
$(MAKE) docker-push IMG=$(BUNDLE_IMG)
.PHONY: opm
OPM = ./bin/opm
opm: ## Download opm locally if necessary.
ifeq (,$(wildcard $(OPM)))
ifeq (,$(shell which opm 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(OPM)) ;\
curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.26.0/$(OS)-$(ARCHA)-opm ;\
chmod +x $(OPM) ;\
}
else
OPM = $(shell which opm)
endif
endif
# A comma-separated list of bundle images (e.g. make catalog-build BUNDLE_IMGS=example.com/operator-bundle:v0.1.0,example.com/operator-bundle:v0.2.0).
# These images MUST exist in a registry and be pull-able.
BUNDLE_IMGS ?= $(BUNDLE_IMG)
# The image tag given to the resulting catalog image (e.g. make catalog-build CATALOG_IMG=example.com/operator-catalog:v0.2.0).
CATALOG_IMG ?= $(IMAGE_TAG_BASE)-catalog:v$(VERSION)
# Set CATALOG_BASE_IMG to an existing catalog image tag to add $BUNDLE_IMGS to that image.
ifneq ($(origin CATALOG_BASE_IMG), undefined)
FROM_INDEX_OPT := --from-index $(CATALOG_BASE_IMG)
endif
# Build a catalog image by adding bundle images to an empty catalog using the operator package manager tool, 'opm'.
# This recipe invokes 'opm' in 'semver' bundle add mode. For more information on add modes, see:
# https://github.com/operator-framework/community-operators/blob/7f1438c/docs/packaging-operator.md#updating-your-existing-operator
.PHONY: catalog-build
catalog-build: opm ## Build a catalog image.
$(OPM) index add --container-tool ${CONTAINER_CMD} --mode semver --tag $(CATALOG_IMG) --bundles $(BUNDLE_IMGS) $(FROM_INDEX_OPT)
# Push the catalog image.
.PHONY: catalog-push
catalog-push: ## Push a catalog image.
$(MAKE) docker-push IMG=$(CATALOG_IMG)
.PHONY: kubectl-slice
KUBECTL_SLICE = $(shell pwd)/bin/kubectl-slice
kubectl-slice: ## Download kubectl-slice locally if necessary.
ifeq (,$(wildcard $(KUBECTL_SLICE)))
ifeq (,$(shell which kubectl-slice 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(KUBECTL_SLICE)) ;\
curl -sSLo - https://github.com/patrickdappollonio/kubectl-slice/releases/download/v1.2.6/kubectl-slice_$(OS)_$(ARCHX).tar.gz | \
tar xzf - -C bin/ kubectl-slice ;\
}
else
KUBECTL_SLICE = $(shell which kubectl-slice)
endif
endif
.PHONY: helm
HELM = $(shell pwd)/bin/helm
helm: ## Download helm locally if necessary.
ifeq (,$(wildcard $(HELM)))
ifeq (,$(shell which helm 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(HELM)) ;\
curl -sSLo - https://get.helm.sh/helm-v3.8.0-$(OS)-$(ARCHA).tar.gz | \
tar xzf - -C bin/ $(OS)-$(ARCHA)/helm ;\
mv bin/$(OS)-$(ARCHA)/helm bin/helm ;\
rmdir bin/$(OS)-$(ARCHA) ;\
}
else
HELM = $(shell which helm)
endif
endif
.PHONY: yq
YQ = $(shell pwd)/bin/yq
yq: ## Download yq locally if necessary.
ifeq (,$(wildcard $(YQ)))
ifeq (,$(shell which yq 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(HELM)) ;\
curl -sSLo - https://github.com/mikefarah/yq/releases/download/v4.20.2/yq_$(OS)_$(ARCHA).tar.gz | \
tar xzf - -C bin/ ;\
mv bin/yq_$(OS)_$(ARCHA) bin/yq ;\
}
else
YQ = $(shell which yq)
endif
endif
PHONY: cr
CR = $(shell pwd)/bin/cr
cr: ## Download cr locally if necessary.
ifeq (,$(wildcard $(CR)))
ifeq (,$(shell which cr 2>/dev/null))
@{ \
set -e ;\
mkdir -p $(dir $(CR)) ;\
curl -sSLo - https://github.com/helm/chart-releaser/releases/download/v1.3.0/chart-releaser_1.3.0_$(OS)_$(ARCHA).tar.gz | \
tar xzf - -C bin/ cr ;\
}
else
CR = $(shell which cr)
endif
endif
charts:
mkdir -p $@
.PHONY: helm-chart
helm-chart: helm-chart-generate
.PHONY: helm-chart-generate
helm-chart-generate: kustomize helm kubectl-slice yq charts
@echo "== KUSTOMIZE: Set image and chart label =="
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
cd config/manager && $(KUSTOMIZE) edit set label helm.sh/chart:$(CHART_NAME)
cd config/default && $(KUSTOMIZE) edit set label helm.sh/chart:$(CHART_NAME)
@echo "== Gather Helm Chart Metadata =="
# remove the existing chart if it exists
rm -rf charts/$(CHART_NAME)
# create new chart metadata in Chart.yaml
cd charts && \
$(HELM) create awx-operator --starter $(shell pwd)/.helm/starter ;\
$(YQ) -i '.version = "$(VERSION)"' $(CHART_NAME)/Chart.yaml ;\
$(YQ) -i '.appVersion = "$(VERSION)" | .appVersion style="double"' $(CHART_NAME)/Chart.yaml ;\
$(YQ) -i '.description = "$(CHART_DESCRIPTION)"' $(CHART_NAME)/Chart.yaml ;\
@echo "Generated chart metadata:"
@cat charts/$(CHART_NAME)/Chart.yaml
@echo "== KUSTOMIZE: Generate resources and slice into templates =="
# place in raw-files directory so they can be modified while they are valid yaml - as soon as they are in templates/,
# wild cards pick up the actual templates, which are not real yaml and can't have yq run on them.
$(KUSTOMIZE) build --load-restrictor LoadRestrictionsNone config/default | \
$(KUBECTL_SLICE) --input-file=- \
--output-dir=charts/$(CHART_NAME)/raw-files \
--sort-by-kind
@echo "== GIT: Reset kustomize configs =="
# reset kustomize configs following kustomize build
git checkout -f config/.
@echo "== Build Templates and CRDS =="
# Delete metadata.namespace, release namespace will be automatically inserted by helm
for file in charts/$(CHART_NAME)/raw-files/*; do\
$(YQ) -i 'del(.metadata.namespace)' $${file};\
done
# Correct namespace for rolebinding to be release namespace, this must be explicit
for file in charts/$(CHART_NAME)/raw-files/*rolebinding*; do\
$(YQ) -i '.subjects[0].namespace = "{{ .Release.Namespace }}"' $${file};\
done
# Correct .metadata.name for cluster scoped resources
cluster_scoped_files="charts/$(CHART_NAME)/raw-files/clusterrolebinding-awx-operator-proxy-rolebinding.yaml charts/$(CHART_NAME)/raw-files/clusterrole-awx-operator-metrics-reader.yaml charts/$(CHART_NAME)/raw-files/clusterrole-awx-operator-proxy-role.yaml";\
for file in $${cluster_scoped_files}; do\
$(YQ) -i '.metadata.name += "-{{ .Release.Name }}"' $${file};\
done
# Correct the reference for the clusterrolebinding
$(YQ) -i '.roleRef.name += "-{{ .Release.Name }}"' 'charts/$(CHART_NAME)/raw-files/clusterrolebinding-awx-operator-proxy-rolebinding.yaml'
# move all custom resource definitions to crds folder
mkdir charts/$(CHART_NAME)/crds
mv charts/$(CHART_NAME)/raw-files/customresourcedefinition*.yaml charts/$(CHART_NAME)/crds/.
# remove any namespace definitions
rm -f charts/$(CHART_NAME)/raw-files/namespace*.yaml
# move remaining resources to helm templates
mv charts/$(CHART_NAME)/raw-files/* charts/$(CHART_NAME)/templates/.
# remove the raw-files folder
rm -rf charts/$(CHART_NAME)/raw-files
# create and populate NOTES.txt
@echo "AWX Operator installed with Helm Chart version $(VERSION)" > charts/$(CHART_NAME)/templates/NOTES.txt
@echo "Helm chart successfully configured for $(CHART_NAME) version $(VERSION)"
.PHONY: helm-package
helm-package: helm-chart
@echo "== Package Current Chart Version =="
mkdir -p .cr-release-packages
# package the chart and put it in .cr-release-packages dir
$(HELM) package ./charts/awx-operator -d .cr-release-packages/$(VERSION)
# List all tags oldest to newest.
TAGS := $(shell git ls-remote --tags --sort=version:refname --refs -q | cut -d/ -f3)
# The actual release happens in ansible/helm-release.yml, which calls this targer
# until https://github.com/helm/chart-releaser/issues/122 happens, chart-releaser is not ideal for a chart
# that is contained within a larger repo, where a tag may not require a new chart version
.PHONY: helm-index
helm-index:
# when running in CI the gh-pages branch is checked out by the ansible playbook
# TODO: test if gh-pages directory exists and if not exist
@echo "== GENERATE INDEX FILE =="
# This step to workaround issues with old releases being dropped.
# Until https://github.com/helm/chart-releaser/issues/133 happens
@echo "== CHART FETCH previous releases =="
# Download all old releases
mkdir -p .cr-release-packages
for tag in $(TAGS); do\
dl_url="https://github.com/$(CHART_OWNER)/$(CHART_REPO)/releases/download/$${tag}/$(CHART_REPO)-$${tag}.tgz";\
echo "Downloading $${tag} from $${dl_url}";\
curl -RLOs -z "$(CHART_REPO)-$${tag}.tgz" --fail $${dl_url};\
result=$$?;\
if [ $${result} -eq 0 ]; then\
echo "Downloaded $${dl_url}";\
mkdir -p .cr-release-packages/$${tag};\
mv ./$(CHART_REPO)-$${tag}.tgz .cr-release-packages/$${tag};\
else\
echo "Skipping release $${tag}; No helm chart present";\
rm -rf "$(CHART_REPO)-$${tag}.tgz";\
fi;\
done;\
# generate the index file in the root of the gh-pages branch
# --merge will leave any values in index.yaml that don't get generated by this command, but
# it is likely that all values are overridden
$(HELM) repo index .cr-release-packages --url https://github.com/$(CHART_OWNER)/$(CHART_REPO)/releases/download/ --merge $(CHART_DIR)/index.yaml
mv .cr-release-packages/index.yaml $(CHART_DIR)/index.yaml

30
PROJECT Normal file
View File

@@ -0,0 +1,30 @@
domain: ansible.com
layout:
- ansible.sdk.operatorframework.io/v1
plugins:
manifests.sdk.operatorframework.io/v2: {}
scorecard.sdk.operatorframework.io/v2: {}
projectName: awx-operator
resources:
- api:
crdVersion: v1
namespaced: true
domain: ansible.com
group: awx
kind: AWX
version: v1beta1
- api:
crdVersion: v1
namespaced: true
domain: ansible.com
group: awx
kind: AWXBackup
version: v1beta1
- api:
crdVersion: v1
namespaced: true
domain: ansible.com
group: awx
kind: AWXRestore
version: v1beta1
version: "3"

414
README.md
View File

@@ -1,407 +1,49 @@
# AWX Operator
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Build Status](https://travis-ci.org/ansible/awx-operator.svg?branch=devel)](https://travis-ci.org/ansible/awx-operator)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Build Status](https://github.com/ansible/awx-operator/workflows/CI/badge.svg?event=push)](https://github.com/ansible/awx-operator/actions)
[![Code of Conduct](https://img.shields.io/badge/code%20of%20conduct-Ansible-yellow.svg)](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html)
[![AWX Mailing List](https://img.shields.io/badge/mailing%20list-AWX-orange.svg)](https://groups.google.com/g/awx-project)
[![IRC Chat - #ansible-awx](https://img.shields.io/badge/IRC-%23ansible--awx-blueviolet.svg)](https://libera.chat)
An [Ansible AWX](https://github.com/ansible/awx) operator for Kubernetes built with [Operator SDK](https://github.com/operator-framework/operator-sdk) and Ansible.
# Table of Contents
<!-- Regenerate this table of contents using https://github.com/ekalinin/github-markdown-toc -->
<!-- gh-md-toc --insert README.md -->
<!--ts-->
* [AWX Operator](#awx-operator)
* [Table of Contents](#table-of-contents)
* [Purpose](#purpose)
* [Usage](#usage)
* [Basic Install](#basic-install)
* [Admin user account configuration](#admin-user-account-configuration)
* [Network and TLS Configuration](#network-and-tls-configuration)
* [Ingress Type](#ingress-type)
* [TLS Termination](#tls-termination)
* [Database Configuration](#database-configuration)
* [External PostgreSQL Service](#external-postgresql-service)
* [Migrating data from an old AWX instance](#migrating-data-from-an-old-awx-instance)
* [Managed PostgreSQL Service](#managed-postgresql-service)
* [Advanced Configuration](#advanced-configuration)
* [Deploying a specific version of AWX](#deploying-a-specific-version-of-awx)
* [Privileged Tasks](#privileged-tasks)
* [Containers Resource Requirements](#containers-resource-requirements)
* [Development](#development)
* [Testing](#testing)
* [Testing in Docker](#testing-in-docker)
* [Testing in Minikube](#testing-in-minikube)
* [Release Process](#release-process)
* [Build a new release](#build-a-new-release)
* [Build a new version of the operator yaml file](#build-a-new-version-of-the-operator-yaml-file)
* [Author](#author)
<!--te-->
## Purpose
# AWX Operator Documentation
This operator is meant to provide a more Kubernetes-native installation method for AWX via an AWX Custom Resource Definition (CRD).
The AWX Operator documentation is now available at https://awx-operator.readthedocs.io/en/latest/
Note that the operator is not supported by Red Hat, and is in **alpha** status. For now, use it at your own risk!
For docs changes, create PRs on the appropriate files in the /docs folder.
## Usage
## Contributing
### Basic Install
This Kubernetes Operator is meant to be deployed in your Kubernetes cluster(s) and can manage one or more AWX instances in any namespace.
First you need to deploy AWX Operator into your cluster:
```bash
#> kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
```
Then create a file named `my-awx.yml` with the following contents:
```yaml
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
```
Finally, use `kubectl` to create the awx instance in your cluster:
```bash
#> kubectl apply -f my-awx.yml
```
After a few minutes, the new AWX instance will be deployed. One can look at the operator pod logs in order to know where the installation process is at. This can be done by running the following command: `kubectl logs -f deployments/awx-operator`.
Once deployed, the AWX instance will be accessible at `http://awx.mycompany.com/` (assuming your cluster has an Ingress controller configured).
By default, the admin user is `admin` and the password is available in the `<resourcename>-admin-password` secret. To retrieve the admin password, run `kubectl get secret <resourcename>-admin-password -o jsonpath="{.data.password}" | base64 --decode`
You just completed the most basic install of an AWX instance via this operator. Congratulations !
### Admin user account configuration
There are three variables that are customizable for the admin user account creation.
| Name | Description | Default |
| --------------------------- | -------------------------------------------- | ---------------- |
| tower_admin_user | Name of the admin user | admin |
| tower_admin_email | Email of the admin user | test@example.com |
| tower_admin_password_secret | Secret that contains the admin user password | Empty string |
If `tower_admin_password_secret` is not provided, the operator will look for a secret named `<resourcename>-admin-password` for the admin password. If it is not present, the operator will generate a password and create a Secret from it named `<resourcename>-admin-password`.
To retrieve the admin password, run `kubectl get secret <resourcename>-admin-password -o jsonpath="{.data.password}" | base64 --decode`
The secret that is expected to be passed should be formatted as follow:
```yaml
---
apiVersion: v1
kind: Secret
metadata:
name: <resourcename>-admin-password
namespace: <target namespace>
stringData:
password: mysuperlongpassword
```
### Network and TLS Configuration
#### Ingress Type
By default, the AWX operator is not opinionated and won't force a specific ingress type on you. So, if `tower_ingress_type` is not specified as part of the Custom Resource specification, it will default to `none` and nothing ingress-wise will be created.
The AWX operator provides support for three kinds of `Ingress` to access AWX: `Ingress`, `Route` and `LoadBalancer`, To toggle between these options, you can add the following to your AWX CR:
* Route
```yaml
---
spec:
...
tower_ingress_type: Route
```
* Ingress
```yaml
---
spec:
...
tower_ingress_type: Ingress
tower_hostname: awx.mycompany.com
```
* LoadBalancer
```yaml
---
spec:
...
tower_ingress_type: LoadBalancer
tower_ingress_protocol: http
```
#### TLS Termination
* Route
The following variables are customizable to specify the TLS termination procedure when `Route` is picked as an Ingress
| Name | Description | Default |
| ------------------------------------- | --------------------------------------------- | --------------------------------- |
| tower_route_host | Common name the route answers for | Empty string |
| tower_route_tls_termination_mechanism | TLS Termination mechanism (Edge, Passthrough) | Edge |
| tower_route_tls_secret | Secret that contains the TLS information | Empty string |
* Ingress
The following variables are customizable to specify the TLS termination procedure when `Ingress` is picked as an Ingress
| Name | Description | Default |
| -------------------------- | ---------------------------------------- | ------------- |
| tower_ingress_annotations | Ingress annotations | Empty string |
| tower_ingress_tls_secret | Secret that contains the TLS information | Empty string |
* LoadBalancer
The following variables are customizable to specify the TLS termination procedure when `LoadBalancer` is picked as an Ingress
| Name | Description | Default |
| ------------------------------ | ---------------------------------------- | ------------- |
| tower_loadbalancer_annotations | LoadBalancer annotations | Empty string |
| tower_loadbalancer_protocol | Protocol to use for Loadbalancer ingress | http |
| tower_loadbalancer_port | Port used for Loadbalancer ingress | 80 |
### Database Configuration
#### External PostgreSQL Service
In order for the AWX instance to rely on an external database, the Custom Resource needs to know about the connection details. Those connection details should be stored as a secret and either specified as `tower_postgres_configuration_secret` at the CR spec level, or simply be present on the namespace under the name `<resourcename>-postgres-configuration`.
The secret should be formatted as follows:
```yaml
---
apiVersion: v1
kind: Secret
metadata:
name: <resourcename>-postgres-configuration
namespace: <target namespace>
stringData:
host: <external ip or url resolvable by the cluster>
port: <external port, this usually defaults to 5432>
database: <desired database name>
username: <username to connect as>
password: <password to connect with>
type: Opaque
```
#### Migrating data from an old AWX instance
For instructions on how to migrate from an older version of AWX, see [migration.md](./docs/migration.md).
#### Managed PostgreSQL Service
If you don't have access to an external PostgreSQL service, the AWX operator can deploy one for you along side the AWX instance itself.
The following variables are customizable for the managed PostgreSQL service
| Name | Description | Default |
| ------------------------------------ | ------------------------------------------ | --------------------------------- |
| tower_postgres_image | Path of the image to pull | postgres:12 |
| tower_postgres_resource_requirements | PostgreSQL container resource requirements | requests: {storage: 8Gi} |
| tower_postgres_storage_class | PostgreSQL PV storage class | Empty string |
| tower_postgres_data_path | PostgreSQL data path | `/var/lib/postgresql/data/pgdata` |
Example of customization could be:
```yaml
---
spec:
...
tower_postgres_resource_requirements:
requests:
memory: 2Gi
storage: 8Gi
limits:
memory: 4Gi
storage: 50Gi
tower_postgres_storage_class: fast-ssd
```
**Note**: If `tower_postgres_storage_class` is not defined, Postgres will store it's data on a volume using the default storage class for your cluster.
### Advanced Configuration
#### Deploying a specific version of AWX
There are a few variables that are customizable for awx the image management.
| Name | Description | Default |
| ----------------------- | -------------------------- | ------------------ |
| tower_image | Path of the image to pull | ansible/awx:15.0.0 |
| tower_image_pull_policy | The pull policy to adopt | IfNotPresent |
| tower_image_pull_secret | The pull secret to use | '' |
Example of customization could be:
```yaml
---
spec:
...
tower_image: myorg/my-custom-awx
tower_image_pull_policy: Always
tower_image_pull_secret: pull_secret_name
```
#### Privileged Tasks
Depending on the type of tasks that you'll be running, you may find that you need the task pod to run as `privileged`. This can open yourself up to a variety of security concerns, so you should be aware (and verify that you have the privileges) to do this if necessary. In order to toggle this feature, you can add the following to your custom resource:
```yaml
---
spec:
...
tower_task_privileged: true
```
If you are attempting to do this on an OpenShift cluster, you will need to grant the `awx` ServiceAccount the `privileged` SCC, which can be done with:
```sh
#> oc adm policy add-scc-to-user privileged -z awx
```
Again, this is the most relaxed SCC that is provided by OpenShift, so be sure to familiarize yourself with the security concerns that accompany this action.
#### Containers Resource Requirements
The resource requirements for both, the task and the web containers are configurable - both the lower end (requests) and the upper end (limits).
| Name | Description | Default |
| -------------------------------- | ------------------------------------ | ----------------------------------- |
| tower_web_resource_requirements | Web container resource requirements | requests: {cpu: 1000m, memory: 2Gi} |
| tower_task_resource_requirements | Task container resource requirements | requests: {cpu: 500m, memory: 1Gi} |
Example of customization could be:
```yaml
---
spec:
...
tower_web_resource_requirements:
requests:
cpu: 1000m
memory: 2Gi
limits:
cpu: 2000m
memory: 4Gi
tower_task_resource_requirements:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
```
## Development
### Testing
This Operator includes a [Molecule](https://molecule.readthedocs.io/en/stable/)-based test environment, which can be executed standalone in Docker (e.g. in CI or in a single Docker container anywhere), or inside any kind of Kubernetes cluster (e.g. Minikube).
You need to make sure you have Molecule installed before running the following commands. You can install Molecule with:
```sh
#> pip install 'molecule[docker]'
```
Running `molecule test` sets up a clean environment, builds the operator, runs all configured tests on an example operator instance, then tears down the environment (at least in the case of Docker).
If you want to actively develop the operator, use `molecule converge`, which does everything but tear down the environment at the end.
#### Testing in Docker
```sh
#> molecule test -s test-local
```
This environment is meant for headless testing (e.g. in a CI environment, or when making smaller changes which don't need to be verified through a web interface). It is difficult to test things like AWX's web UI or to connect other applications on your local machine to the services running inside the cluster, since it is inside a Docker container with no static IP address.
#### Testing in Minikube
```sh
#> minikube start --memory 8g --cpus 4
#> minikube addons enable ingress
#> molecule test -s test-minikube
```
[Minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) is a more full-featured test environment running inside a full VM on your computer, with an assigned IP address. This makes it easier to test things like NodePort services and Ingress from outside the Kubernetes cluster (e.g. in a browser on your computer).
Once the operator is deployed, you can visit the AWX UI in your browser by following these steps:
1. Make sure you have an entry like `IP_ADDRESS example-awx.test` in your `/etc/hosts` file. (Get the IP address with `minikube ip`.)
2. Visit `http://example-awx.test/` in your browser. (Default admin login is `test`/`changeme`.)
Alternatively, you can also update the service `awx-service` in your namespace to use the type `NodePort` and use following command to get the URL to access your AWX instance:
```sh
#> minikube service <serviceName> -n <namespaceName> --url
```
Please visit [our contributing guidelines](https://github.com/ansible/awx-operator/blob/devel/CONTRIBUTING.md).
## Release Process
There are a few moving parts to this project:
The first step is to create a draft release. Typically this will happen in the [Stage Release](https://github.com/ansible/awx/blob/devel/.github/workflows/stage.yml) workflow for AWX and you don't need to do it as a separate step.
1. The Docker image which powers AWX Operator.
2. The `awx-operator.yaml` Kubernetes manifest file which initially deploys the Operator into a cluster.
If you need to do an independent release of the operator, you can run the [Stage Release](https://github.com/ansible/awx-operator/blob/devel/.github/workflows/stage.yml) in the awx-operator repo. Both of these workflows will run smoke tests, so there is no need to do this manually.
Each of these must be appropriately built in preparation for a new tag:
After the draft release is created, publish it and the [Promote AWX Operator image](https://github.com/ansible/awx-operator/blob/devel/.github/workflows/promote.yaml) will run, which will:
### Build a new release
Run the following command inside this directory:
```sh
#> operator-sdk build quay.io/ansible/awx-operator:$VERSION
```
Then push the generated image to Docker Hub:
```sh
#> docker push quay.io/ansible/awx-operator:$VERSION
```
### Build a new version of the operator yaml file
Update the awx-operator version:
- `ansible/group_vars/all`
Once the version has been updated, run from the root of the repo:
```sh
#> ansible-playbook ansible/chain-operator-files.yml
```
After it is built, test it on a local cluster:
```sh
#> minikube start --memory 6g --cpus 4
#> minikube addons enable ingress
#> kubectl apply -f deploy/awx-operator.yaml
#> kubectl create namespace example-awx
#> kubectl apply -f deploy/crds/awx_v1beta1_cr.yaml
#> <test everything>
#> minikube delete
```
If everything works, commit the updated version, then tag a new repository release with the same tag as the Docker image pushed earlier.
- Publish image to Quay
- Release Helm chart
## Author
This operator was originally built in 2019 by [Jeff Geerling](https://www.jeffgeerling.com) and is now maintained by the Ansible Team
## Code of Conduct
We ask all of our community members and contributors to adhere to the [Ansible code of conduct](http://docs.ansible.com/ansible/latest/community/code_of_conduct.html). If you have questions or need assistance, please reach out to our community team at [codeofconduct@ansible.com](mailto:codeofconduct@ansible.com)
## Get Involved
We welcome your feedback and ideas. The AWX operator uses the same mailing list and IRC channel as AWX itself. Here's how to reach us with feedback and questions:
- Join the [Ansible AWX channel on Matrix](https://matrix.to/#/#awx:ansible.com)
- Join the [Ansible Community Forum](https://forum.ansible.com)

3
SECURITY.md Normal file
View File

@@ -0,0 +1,3 @@
For all security related bugs, email security@ansible.com instead of using this issue tracker and you will receive a prompt response.
For more information on the Ansible community's practices regarding responsible disclosure, see https://www.ansible.com/security

View File

@@ -1,17 +0,0 @@
---
- name: Build and Deploy the AWX Operator
hosts: localhost
collections:
- community.general
tasks:
- name: Build and (optionally) push operator image
docker_image:
name: "{{ operator_image }}:{{ operator_version }}"
pull: no
push: "{{ push_image | bool }}"
build:
dockerfile: "build/Dockerfile"
path: "../"
force: yes

View File

@@ -1,19 +0,0 @@
---
# To run: `ansible-playbook chain-operator-files.yml`
- name: Chain operator files together for easy deployment.
hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Template CRD
template:
src: crd.yml.j2
dest: "{{ playbook_dir }}/../deploy/crds/awx_v1beta1_crd.yaml"
mode: '0644'
- name: Template awx-operator.yaml
template:
src: awx-operator.yaml.j2
dest: ../deploy/awx-operator.yaml
mode: '0644'

View File

@@ -1,29 +0,0 @@
---
- name: Reconstruct awx-operator.yaml
include: chain-operator-files.yml
- name: Deploy Operator
hosts: localhost
vars:
k8s_namespace: "default"
obliterate: no
collections:
- community.kubernetes
tasks:
- name: Obliterate Operator
k8s:
state: absent
namespace: "{{ k8s_namespace }}"
src: "../deploy/awx-operator.yaml"
wait: yes
when: obliterate | bool
- name: Deploy Operator
k8s:
state: present
namespace: "{{ k8s_namespace }}"
apply: yes
wait: yes
src: "../deploy/awx-operator.yaml"

View File

@@ -1,3 +0,0 @@
operator_image: quay.io/ansible/awx-operator
operator_version: 0.7.0
pull_policy: Always

122
ansible/helm-release.yml Normal file
View File

@@ -0,0 +1,122 @@
---
- hosts: localhost
vars:
chart_repo: awx-operator
environment:
CHART_OWNER: "{{ chart_owner }}"
tasks:
- name: Look up release
uri:
url: "https://api.github.com/repos/{{ chart_owner }}/{{ chart_repo }}/releases/tags/{{ tag }}"
register: release
ignore_errors: yes
- fail:
msg: |
Release must exist before running this playbook
when: release is not success
- name: Set helm filename and commit message
set_fact:
asset_already_attached: False
helm_file_name: "awx-operator-{{ tag }}.tgz"
commit_message: "Updated index.yaml for release {{ release.json.tag_name }}"
- name: See if file is already attached
set_fact:
asset_already_attached: True
loop: "{{ release.json.get('assets', []) }}"
loop_control:
label: "{{ item.name }}"
when: item.name == helm_file_name
- when: not asset_already_attached
block:
- name: Build and package helm chart
command: |
make helm-package
environment:
VERSION: "{{ tag }}"
IMAGE_TAG_BASE: "{{ operator_image }}"
args:
chdir: "{{ playbook_dir }}/../"
# Move to chart releaser after https://github.com/helm/chart-releaser/issues/122 exists
- name: Upload helm chart
uri:
url: "https://uploads.github.com/repos/{{ chart_owner }}/{{ chart_repo }}/releases/{{ release.json.id }}/assets?name={{ helm_file_name }}"
src: "{{ playbook_dir }}/../.cr-release-packages/{{ tag }}/awx-operator-{{ tag }}.tgz"
headers:
Authorization: "token {{ gh_token }}"
Content-Type: "application/octet-stream"
status_code:
- 200
- 201
register: asset_upload
changed_when: asset_upload.json.state == "uploaded"
- name: Ensure gh-pages exists
file:
state: directory
path: "{{ playbook_dir }}/../gh-pages"
- name: Check if we have published the release
command:
cmd: "git log --grep='{{ commit_message }}'"
chdir: "{{ playbook_dir }}/../gh-pages"
register: commits_for_release
- when: commits_for_release.stdout == ''
block:
- name: Make a temp dir
tempfile:
state: directory
register: temp_dir
- name: Clone the gh-pages branch from {{ chart_owner }}
git:
repo: "{{ ((repo_type | default('http')) == 'ssh') | ternary(ssh_repo, http_repo) }}"
dest: "{{ temp_dir.path }}"
single_branch: yes
version: gh-pages
vars:
http_repo: "https://github.com/{{ chart_owner }}/{{ chart_repo }}"
ssh_repo: "git@github.com:{{ chart_owner }}/{{ chart_repo }}.git"
- name: Publish helm index
ansible.builtin.command:
cmd: make helm-index
environment:
CHART_OWNER: "{{ chart_owner }}"
CR_TOKEN: "{{ gh_token }}"
CHART_DIR: "{{ temp_dir.path }}"
args:
chdir: "{{ playbook_dir }}/.."
- name: Set url base swap in gitconfig
command:
cmd: "git config --local url.https://{{ gh_user }}:{{ gh_token }}@github.com/.insteadOf https://github.com/"
args:
chdir: "{{ temp_dir.path }}/"
no_log: true
- name: Stage and Push commit to gh-pages branch
command:
cmd: "{{ item }}"
loop:
- git add index.yaml
- git commit -m "{{ commit_message }}"
- git push
args:
chdir: "{{ temp_dir.path }}/"
environment:
GIT_AUTHOR_NAME: "{{ gh_user }}"
GIT_AUTHOR_EMAIL: "{{ gh_user }}@users.noreply.github.com"
GIT_COMMITTER_NAME: "{{ gh_user }}"
GIT_COMMITTER_EMAIL: "{{ gh_user }}@users.noreply.github.com"
always:
- name: Remove temp dir
file:
path: "{{ temp_dir.path }}"
state: absent

View File

@@ -3,7 +3,7 @@
hosts: localhost
collections:
- community.kubernetes
- kubernetes.core
tasks:
- name: Deploy AWX
@@ -18,9 +18,15 @@
metadata:
name: awx
spec:
tower_admin_user: test
tower_admin_email: test@example.com
tower_ingress_type: "{{ tower_ingress_type | default(omit) }}" # Either Route, Ingress or LoadBalancer
tower_image: "{{ tower_image | default(omit) }}"
development_mode: "{{ development_mode | default(omit) }}"
tower_image_pull_policy: "{{ tower_image_pull_policy | default(omit) }}"
admin_user: admin
admin_email: admin@localhost
service_type: "{{ service_type | default(omit) }}" # Either clusterIP, Loadbalancer or NodePort
ingress_type: "{{ ingress_type | default(omit) }}" # Either none, Ingress, Route
image: "{{ image | default(omit) }}"
image_version: "{{ image_version | default(omit) }}"
development_mode: "{{ development_mode | default(omit) | bool }}"
image_pull_policy: "{{ image_pull_policy | default(omit) }}"
nodeport_port: "{{ nodeport_port | default(omit) }}"
# ee_images:
# - name: test-ee
# image: quay.io/<user>/awx-ee

View File

@@ -1,12 +0,0 @@
#jinja2: trim_blocks:False
# This file is generated by Ansible. Changes will be lost.
# Update templates under ansible/templates/
{% include 'role.yml.j2' %}
{% include 'role_binding.yml.j2' %}
{% include 'service_account.yml.j2' %}
{% include 'operator.yml.j2' %}
{% include 'crd.yml.j2' %}

View File

@@ -1,276 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: awxs.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWX
listKind: AWXList
plural: awxs
singular: awx
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
description: Schema validation for the AWX CRD
properties:
spec:
properties:
deployment_type:
description: Name of the deployment type
type: string
tower_task_privileged:
description: If a privileged security context should be enabled
type: boolean
tower_admin_user:
description: Username to use for the admin account
type: string
tower_hostname:
description: The hostname of the instance
type: string
tower_admin_email:
description: The admin user email
type: string
tower_admin_password_secret:
description: Secret where the admin password can be found
type: string
tower_postgres_configuration_secret:
description: Secret where the database configuration can be found
type: string
tower_old_postgres_configuration_secret:
description: Secret where the old database configuration can be found for data migration
type: string
tower_secret_key_secret:
description: Secret where the secret key can be found
type: string
tower_broadcast_websocket_secret:
description: Secret where the broadcast websocket secret can be found
type: string
tower_extra_volumes:
description: Specify extra volumes to add to the application pod
type: string
tower_ingress_type:
description: The ingress type to use to reach the deployed instance
type: string
enum:
- none
- Ingress
- ingress
- Route
- route
- LoadBalancer
- loadbalancer
tower_ingress_annotations:
description: Annotations to add to the ingress
type: string
tower_ingress_tls_secret:
description: Secret where the ingress TLS secret can be found
type: string
tower_loadbalancer_annotations:
description: Annotations to add to the loadbalancer
type: string
tower_loadbalancer_protocol:
description: Protocol to use for the loadbalancer
type: string
default: http
enum:
- http
- https
tower_loadbalancer_port:
description: Port to use for the loadbalancer
type: integer
default: 80
tower_route_host:
description: The DNS to use to points to the instance
type: string
tower_route_tls_termination_mechanism:
description: The secure TLS termination mechanism to use
type: string
default: Edge
enum:
- Edge
- edge
- Passthrough
- passthrough
tower_route_tls_secret:
description: Secret where the TLS related credentials are stored
type: string
tower_image:
description: Registry path to the application container to use
type: string
tower_image_pull_policy:
description: The image pull policy
type: string
default: IfNotPresent
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
tower_task_resource_requirements:
description: Resource requirements for the task container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_web_resource_requirements:
description: Resource requirements for the web container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_replicas:
description: Number of instance replicas
type: integer
default: 1
format: int32
tower_garbage_collect_secrets:
description: Whether or not to remove secrets upon instance removal
default: false
type: boolean
tower_create_preload_data:
description: Whether or not to preload data upon Tower instance creation
default: true
type: boolean
tower_task_args:
type: array
items:
type: string
tower_task_command:
type: array
items:
type: string
tower_web_args:
type: array
items:
type: string
tower_web_command:
type: array
items:
type: string
tower_task_extra_env:
type: string
tower_web_extra_env:
type: string
tower_task_extra_volume_mounts:
type: string
tower_web_extra_volume_mounts:
type: string
tower_redis_image:
description: Registry path to the redis container to use
type: string
tower_postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
tower_postgres_resource_requirements:
description: Resource requirements for the PostgreSQL container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_postgres_storage_class:
description: Storage class to use for the PostgreSQL PVC
type: string
tower_postgres_data_path:
description: Path where the PostgreSQL data are located
type: string
ca_trust_bundle:
description: Path where the trusted CA bundle is available
type: string
development_mode:
description: If the deployment should be done in development mode
type: boolean
type: object
status:
properties:
towerURL:
description: URL to access the deployed instance
type: string
towerAdminUser:
description: Admin user of the deployed instance
type: string
towerAdminPasswordSecret:
description: Admin password of the deployed instance
type: string
towerMigratedFromSecret:
description: The secret used for migrating an old Tower.
type: string
towerVersion:
description: Version of the deployed instance
type: string
towerImage:
description: URL of the image used for the deployed instance
type: string
conditions:
description: The resulting conditions when a Service Telemetry is instantiated
items:
properties:
status:
type: string
type:
type: string
reason:
type: string
lastTransitionTime:
type: string
type: object
type: array
type: object
type: object

View File

@@ -1,44 +0,0 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: awx-operator
spec:
replicas: 1
selector:
matchLabels:
name: awx-operator
template:
metadata:
labels:
name: awx-operator
spec:
serviceAccountName: awx-operator
containers:
- name: awx-operator
image: "{{ operator_image }}:{{ operator_version }}"
imagePullPolicy: "{{ pull_policy|default('Always') }}"
volumeMounts:
- mountPath: /tmp/ansible-operator/runner
name: runner
env:
# Watch all namespaces (cluster-scoped).
- name: WATCH_NAMESPACE
value: ""
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: OPERATOR_NAME
value: awx-operator
- name: ANSIBLE_GATHERING
value: explicit
livenessProbe:
httpGet:
path: /healthz
port: 6789
initialDelaySeconds: 5
periodSeconds: 3
volumes:
- name: runner
emptyDir: {}

View File

@@ -1,6 +0,0 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: awx-operator
namespace: default

7
awx-demo.yml Normal file
View File

@@ -0,0 +1,7 @@
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-demo
spec:
service_type: nodeport

View File

@@ -1,11 +0,0 @@
FROM quay.io/operator-framework/ansible-operator:v0.19.4
# Install Ansible requirements.
COPY requirements.yml ${HOME}/requirements.yml
RUN ansible-galaxy collection install -r ${HOME}/requirements.yml \
&& chmod -R ug+rwx ${HOME}/.ansible
COPY watches.yaml ${HOME}/watches.yaml
COPY main.yml ${HOME}/main.yml
COPY roles/ ${HOME}/roles/

View File

@@ -1,13 +0,0 @@
ARG BASEIMAGE
FROM ${BASEIMAGE}
USER 0
RUN yum install -y python-devel gcc libffi-devel
RUN pip install molecule==3.0.6 jmespath
ARG NAMESPACEDMAN
ADD $NAMESPACEDMAN /namespaced.yaml
ADD build/test-framework/ansible-test.sh /ansible-test.sh
RUN chmod +x /ansible-test.sh
USER 1001
ADD . /opt/ansible/project

View File

@@ -1,7 +0,0 @@
#!/bin/sh
export WATCH_NAMESPACE=${TEST_NAMESPACE}
(/usr/local/bin/entrypoint)&
trap "kill $!" SIGINT SIGTERM EXIT
cd ${HOME}/project
exec molecule test -s test-minikube

View File

@@ -0,0 +1,147 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: awxbackups.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWXBackup
listKind: AWXBackupList
plural: awxbackups
singular: awxbackup
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
description: Schema validation for the AWXBackup CRD
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- deployment_name
properties:
deployment_name:
description: Name of the deployment to be backed up
type: string
backup_pvc:
description: Name of the backup PVC
type: string
backup_pvc_namespace:
description: (Deprecated) Namespace the PVC is in
type: string
backup_storage_requirements:
description: Storage requirements for backup PVC (may be similar to existing postgres PVC backing up from)
type: string
backup_resource_requirements:
description: Resource requirements for the management pod used to create a backup
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
type: object
type: object
backup_storage_class:
description: Storage class to use when creating PVC for backup
type: string
clean_backup_on_delete:
description: Flag to indicate if backup should be deleted on PVC if AWXBackup object is deleted
type: boolean
pg_dump_suffix:
description: Additional parameters for the pg_dump command
type: string
postgres_label_selector:
description: Label selector used to identify postgres pod for backing up data
type: string
postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
postgres_image_version:
description: PostgreSQL container image version to use
type: string
precreate_partition_hours:
description: Number of hours worth of events table partitions to precreate before backup to avoid pg_dump locks.
type: integer
format: int32
image_pull_policy:
description: The image pull policy
type: string
default: IfNotPresent
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
db_management_pod_node_selector:
description: nodeSelector for the Postgres pods to backup
type: string
no_log:
description: Configure no_log for no_log tasks
type: boolean
default: true
additional_labels:
description: Additional labels defined on the resource, which should be propagated to child resources
type: array
items:
type: string
set_self_labels:
description: Maintain some of the recommended `app.kubernetes.io/*` labels on the resource (self)
type: boolean
default: true
status:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
conditions:
description: The resulting conditions when a Service Telemetry is instantiated
items:
properties:
lastTransitionTime:
type: string
reason:
type: string
status:
type: string
type:
type: string
type: object
type: array
backupDirectory:
description: Backup directory name on the specified pvc
type: string
backupClaim:
description: Backup persistent volume claim
type: string

View File

@@ -0,0 +1,144 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: awxrestores.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWXRestore
listKind: AWXRestoreList
plural: awxrestores
singular: awxrestore
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
type: object
description: Schema validation for the AWXRestore CRD
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
type: object
x-kubernetes-preserve-unknown-fields: true
required:
- deployment_name
properties:
backup_source:
description: Backup source
type: string
enum:
- Backup CR
- PVC
deployment_name:
description: Name of the restored deployment. This should be different from the original deployment name
if the original deployment still exists.
type: string
cluster_name:
description: Cluster name
type: string
backup_name:
description: AWXBackup object name
type: string
backup_pvc:
description: Name of the PVC to be restored from, set as a status found on the awxbackup object (backupClaim)
type: string
backup_pvc_namespace:
description: (Deprecated) Namespace the PVC is in
type: string
backup_dir:
description: Backup directory name, set as a status found on the awxbackup object (backupDirectory)
type: string
restore_resource_requirements:
description: Resource requirements for the management pod that restores AWX from a backup
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
type: object
type: object
postgres_label_selector:
description: Label selector used to identify postgres pod for backing up data
type: string
postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
postgres_image_version:
description: PostgreSQL container image version to use
type: string
image_pull_policy:
description: The image pull policy
type: string
default: IfNotPresent
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
db_management_pod_node_selector:
description: nodeSelector for the Postgres pods to backup
type: string
no_log:
description: Configure no_log for no_log tasks
type: boolean
default: true
additional_labels:
description: Additional labels defined on the resource, which should be propagated to child resources
type: array
items:
type: string
set_self_labels:
description: Maintain some of the recommended `app.kubernetes.io/*` labels on the resource (self)
type: boolean
default: true
status:
type: object
x-kubernetes-preserve-unknown-fields: true
properties:
conditions:
description: The resulting conditions when a Service Telemetry is instantiated
items:
properties:
lastTransitionTime:
type: string
reason:
type: string
status:
type: string
type:
type: string
type: object
type: array
restoreComplete:
description: Restore process complete
type: boolean

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
# This kustomization.yaml is not intended to be run by itself,
# since it depends on service name and namespace that are out of this kustomize package.
# It should be run by config/default
resources:
- bases/awx.ansible.com_awxs.yaml
- bases/awx.ansible.com_awxbackups.yaml
- bases/awx.ansible.com_awxrestores.yaml
#+kubebuilder:scaffold:crdkustomizeresource

View File

@@ -0,0 +1,30 @@
# Adds namespace to all resources.
namespace: awx
# Value of this field is prepended to the
# names of all resources, e.g. a deployment named
# "wordpress" becomes "alices-wordpress".
# Note that it should also match with the prefix (text before '-') of the namespace
# field above.
namePrefix: awx-operator-
# Labels to add to all resources and selectors.
#labels:
#- includeSelectors: true
# pairs:
# someName: someValue
resources:
- ../crd
- ../rbac
- ../manager
# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'.
#- ../prometheus
# Protect the /metrics endpoint by putting it behind auth.
# If you want your controller-manager to expose the /metrics
# endpoint w/o any authn/z, please comment the following line.
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
patches:
- path: manager_auth_proxy_patch.yaml

View File

@@ -0,0 +1,40 @@
# This patch inject a sidecar container which is a HTTP proxy for the
# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: kube-rbac-proxy
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
args:
- "--secure-listen-address=0.0.0.0:8443"
- "--upstream=http://127.0.0.1:8080/"
- "--logtostderr=true"
- "--v=0"
ports:
- containerPort: 8443
protocol: TCP
name: https
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 5m
memory: 64Mi
- name: awx-manager
args:
- "--health-probe-bind-address=:6789"
- "--metrics-bind-address=127.0.0.1:8080"
- "--leader-elect"
- "--leader-election-id=awx-operator"

View File

@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
args:
- "--config=controller_manager_config.yaml"
volumeMounts:
- name: awx-manager-config
mountPath: /controller_manager_config.yaml
subPath: controller_manager_config.yaml
volumes:
- name: awx-manager-config
configMap:
name: awx-manager-config

View File

@@ -0,0 +1,20 @@
apiVersion: controller-runtime.sigs.k8s.io/v1alpha1
kind: ControllerManagerConfig
health:
healthProbeBindAddress: :6789
metrics:
bindAddress: 127.0.0.1:8080
leaderElection:
leaderElect: true
resourceName: 811c9dc5.ansible.com
# leaderElectionReleaseOnCancel defines if the leader should step down volume
# when the Manager ends. This requires the binary to immediately end when the
# Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
# speeds up voluntary leader transitions as the new leader don't have to wait
# LeaseDuration time first.
# In the default scaffold provided, the program ends immediately after
# the manager stops, so would be fine to enable this option. However,
# if you are doing or is intended to do any operation such as perform cleanups
# after the manager stops then its usage might be unsafe.
# leaderElectionReleaseOnCancel: true

View File

@@ -0,0 +1,17 @@
resources:
- manager.yaml
generatorOptions:
disableNameSuffixHash: true
configMapGenerator:
- name: awx-manager-config
files:
- controller_manager_config.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
images:
- name: controller
newName: quay.io/ansible/awx-operator
newTag: latest

View File

@@ -0,0 +1,80 @@
---
apiVersion: v1
kind: Namespace
metadata:
labels:
control-plane: controller-manager
name: system
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
labels:
control-plane: controller-manager
spec:
selector:
matchLabels:
control-plane: controller-manager
replicas: 1
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: awx-manager
labels:
control-plane: controller-manager
spec:
securityContext:
runAsNonRoot: true
# For common cases that do not require escalating privileges
# it is recommended to ensure that all your Pods/Containers are restrictive.
# More info: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted
# Please uncomment the following code if your project does NOT have to work on old Kubernetes
# versions < 1.19 or on vendors versions which do NOT support this field by default (i.e. Openshift < 4.11 ).
# seccompProfile:
# type: RuntimeDefault
containers:
- args:
- --leader-elect
- --leader-election-id=awx-operator
image: controller:latest
name: awx-manager
env:
- name: ANSIBLE_GATHERING
value: explicit
- name: ANSIBLE_DEBUG_LOGS
value: 'false'
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- "ALL"
livenessProbe:
httpGet:
path: /healthz
port: 6789
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /readyz
port: 6789
initialDelaySeconds: 5
periodSeconds: 10
# More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources:
requests:
memory: "32Mi"
cpu: "50m"
limits:
memory: "4096Mi"
cpu: "2000m"
serviceAccountName: controller-manager
imagePullSecrets:
- name: redhat-operators-pull-secret
terminationGracePeriodSeconds: 10

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
# These resources constitute the fully configured set of manifests
# used to generate the 'manifests/' directory in a bundle.
resources:
- bases/awx-operator.clusterserviceversion.yaml
- ../default
- ../samples
- ../scorecard

View File

@@ -0,0 +1,2 @@
resources:
- monitor.yaml

View File

@@ -0,0 +1,19 @@
# Prometheus Monitor Service (Metrics)
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
control-plane: controller-manager
name: controller-manager-metrics-monitor
namespace: system
spec:
endpoints:
- path: /metrics
port: https
scheme: https
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
selector:
matchLabels:
control-plane: controller-manager

View File

@@ -0,0 +1,9 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: metrics-reader
rules:
- nonResourceURLs:
- "/metrics"
verbs:
- get

View File

@@ -0,0 +1,17 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: proxy-role
rules:
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create

View File

@@ -1,13 +1,12 @@
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: awx-operator
subjects:
- kind: ServiceAccount
name: awx-operator
namespace: default
name: proxy-rolebinding
roleRef:
kind: ClusterRole
name: awx-operator
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: proxy-role
subjects:
- kind: ServiceAccount
name: controller-manager
namespace: system

View File

@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
labels:
control-plane: controller-manager
name: controller-manager-metrics-service
namespace: system
spec:
ports:
- name: https
port: 8443
protocol: TCP
targetPort: https
selector:
control-plane: controller-manager

View File

@@ -0,0 +1,24 @@
# permissions for end users to edit awxs.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awx-editor-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxs/status
verbs:
- get

View File

@@ -0,0 +1,20 @@
# permissions for end users to view awxs.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awx-viewer-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxs
verbs:
- get
- list
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxs/status
verbs:
- get

View File

@@ -0,0 +1,24 @@
# permissions for end users to edit awxbackups.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awxbackup-editor-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxbackups
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxbackups/status
verbs:
- get

View File

@@ -0,0 +1,20 @@
# permissions for end users to view awxbackups.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awxbackup-viewer-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxbackups
verbs:
- get
- list
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxbackups/status
verbs:
- get

View File

@@ -0,0 +1,24 @@
# permissions for end users to edit awxrestores.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awxrestore-editor-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxrestores
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxrestores/status
verbs:
- get

View File

@@ -0,0 +1,20 @@
# permissions for end users to view awxrestores.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: awxrestore-viewer-role
rules:
- apiGroups:
- awx.ansible.com
resources:
- awxrestores
verbs:
- get
- list
- watch
- apiGroups:
- awx.ansible.com
resources:
- awxrestores/status
verbs:
- get

View File

@@ -0,0 +1,18 @@
resources:
# All RBAC will be applied under this service account in
# the deployment namespace. You may comment out this resource
# if your manager will use a service account that exists at
# runtime. Be sure to update RoleBinding and ClusterRoleBinding
# subjects if changing service account names.
- service_account.yaml
- role.yaml
- role_binding.yaml
- leader_election_role.yaml
- leader_election_role_binding.yaml
# Comment the following 4 lines if you want to disable
# the auth proxy (https://github.com/brancz/kube-rbac-proxy)
# which protects your /metrics endpoint.
- auth_proxy_service.yaml
- auth_proxy_role.yaml
- auth_proxy_role_binding.yaml
- auth_proxy_client_clusterrole.yaml

View File

@@ -0,0 +1,37 @@
# permissions to do leader election.
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: leader-election-role
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch

View File

@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: leader-election-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: leader-election-role
subjects:
- kind: ServiceAccount
name: controller-manager
namespace: system

View File

@@ -1,9 +1,9 @@
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
kind: Role
metadata:
creationTimestamp: null
name: awx-operator
name: awx-manager-role
rules:
- apiGroups:
- route.openshift.io
@@ -11,10 +11,15 @@ rules:
- routes
- routes/custom-host
verbs:
- '*'
- get
- list
- create
- delete
- patch
- update
- watch
- apiGroups:
- ""
- "rbac.authorization.k8s.io"
resources:
- pods
- services
@@ -25,21 +30,54 @@ rules:
- events
- configmaps
- secrets
verbs:
- get
- list
- create
- delete
- patch
- update
- watch
- apiGroups:
- "rbac.authorization.k8s.io"
resources:
- roles
- rolebindings
verbs:
- '*'
- get
- list
- create
- delete
- patch
- update
- watch
- apiGroups:
- apps
- extensions
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
verbs:
- get
- list
- create
- delete
- patch
- update
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- '*'
- get
- list
- create
- delete
- patch
- update
- watch
- apiGroups:
- monitoring.coreos.com
resources:
@@ -59,12 +97,15 @@ rules:
- apps
resources:
- deployments/scale
- statefulsets/scale
verbs:
- patch
- apiGroups:
- ""
resources:
- pods/exec
- pods/attach
- pods/log # log & attach rules needed to be able to grant them to AWX service account
verbs:
- create
- get
@@ -74,9 +115,12 @@ rules:
- replicasets
verbs:
- get
- create
- apiGroups:
- awx.ansible.com
resources:
- '*'
- awxbackups
- awxrestores
verbs:
- '*'

View File

@@ -0,0 +1,12 @@
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: awx-manager-rolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: awx-manager-role
subjects:
- kind: ServiceAccount
name: controller-manager

View File

@@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: controller-manager
namespace: system

View File

@@ -0,0 +1,18 @@
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: example-awx
spec:
web_resource_requirements:
requests:
cpu: 50m
memory: 128M
task_resource_requirements:
requests:
cpu: 50m
memory: 128M
ee_resource_requirements:
requests:
cpu: 50m
memory: 64M

View File

@@ -0,0 +1,55 @@
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx-with-limits
spec:
task_resource_requirements:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 2000m
memory: 4Gi
web_resource_requirements:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 1000m
memory: 4Gi
ee_resource_requirements:
requests:
cpu: 100m
memory: 64Mi
limits:
cpu: 1000m
memory: 4Gi
redis_resource_requirements:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 1000m
memory: 4Gi
rsyslog_resource_requirements:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 1000m
memory: 2Gi
init_container_resource_requirements:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 1000m
memory: 2Gi
postgres_init_container_resource_requirements:
requests:
cpu: 10m
memory: 64Mi
limits:
cpu: 1000m
memory: 2Gi

View File

@@ -0,0 +1,13 @@
apiVersion: awx.ansible.com/v1beta1
kind: AWXBackup
metadata:
name: example-awx-backup
spec:
deployment_name: example-awx
backup_resource_requirements:
limits:
cpu: "1000m"
memory: "4096Mi"
requests:
cpu: "25m"
memory: "32Mi"

View File

@@ -0,0 +1,14 @@
apiVersion: awx.ansible.com/v1beta1
kind: AWXRestore
metadata:
name: awxrestore-sample
spec:
deployment_name: example-awx-2
backup_name: example-awx-backup
restore_resource_requirements:
limits:
cpu: "1000m"
memory: "4096Mi"
requests:
cpu: "25m"
memory: "32Mi"

View File

@@ -0,0 +1,6 @@
## Append samples you want in your CSV to this file as resources ##
resources:
- awx_v1beta1_awx.yaml
- awx_v1beta1_awxbackup.yaml
- awx_v1beta1_awxrestore.yaml
#+kubebuilder:scaffold:manifestskustomizesamples

View File

@@ -0,0 +1,7 @@
apiVersion: scorecard.operatorframework.io/v1alpha3
kind: Configuration
metadata:
name: config
stages:
- parallel: true
tests: []

View File

@@ -0,0 +1,16 @@
resources:
- bases/config.yaml
patchesJson6902:
- path: patches/basic.config.yaml
target:
group: scorecard.operatorframework.io
version: v1alpha3
kind: Configuration
name: config
- path: patches/olm.config.yaml
target:
group: scorecard.operatorframework.io
version: v1alpha3
kind: Configuration
name: config
#+kubebuilder:scaffold:patchesJson6902

View File

@@ -0,0 +1,10 @@
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- basic-check-spec
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: basic
test: basic-check-spec-test

View File

@@ -0,0 +1,50 @@
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- olm-bundle-validation
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: olm
test: olm-bundle-validation-test
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- olm-crds-have-validation
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: olm
test: olm-crds-have-validation-test
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- olm-crds-have-resources
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: olm
test: olm-crds-have-resources-test
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- olm-spec-descriptors
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: olm
test: olm-spec-descriptors-test
- op: add
path: /stages/0/tests/-
value:
entrypoint:
- scorecard-test
- olm-status-descriptors
image: quay.io/operator-framework/scorecard-test:v1.26.0
labels:
suite: olm
test: olm-status-descriptors-test

View File

@@ -0,0 +1,14 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
env:
- name: ANSIBLE_DEBUG_LOGS
value: "TRUE"

View File

@@ -0,0 +1,23 @@
# Adds namespace to all resources.
namespace: osdk-test
namePrefix: osdk-
# Labels to add to all resources and selectors.
#commonLabels:
# someName: someValue
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../crd
- ../rbac
- ../manager
images:
- name: testing
newName: testing-operator
patches:
- path: manager_image.yaml
- path: debug_logs_patch.yaml
- path: ../default/manager_auth_proxy_patch.yaml

View File

@@ -0,0 +1,12 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
image: testing

View File

@@ -0,0 +1,12 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
imagePullPolicy: Always

View File

@@ -0,0 +1,12 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
imagePullPolicy: IfNotPresent

View File

@@ -0,0 +1,12 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller-manager
namespace: system
spec:
template:
spec:
containers:
- name: awx-manager
imagePullPolicy: Never

View File

@@ -1,427 +0,0 @@
# This file is generated by Ansible. Changes will be lost.
# Update templates under ansible/templates/
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
name: awx-operator
rules:
- apiGroups:
- route.openshift.io
resources:
- routes
- routes/custom-host
verbs:
- '*'
- apiGroups:
- ""
- "rbac.authorization.k8s.io"
resources:
- pods
- services
- services/finalizers
- serviceaccounts
- endpoints
- persistentvolumeclaims
- events
- configmaps
- secrets
- roles
- rolebindings
verbs:
- '*'
- apiGroups:
- apps
- extensions
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
- ingresses
verbs:
- '*'
- apiGroups:
- monitoring.coreos.com
resources:
- servicemonitors
verbs:
- get
- create
- apiGroups:
- apps
resourceNames:
- awx-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- apps
resources:
- deployments/scale
verbs:
- patch
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
- get
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- apiGroups:
- awx.ansible.com
resources:
- '*'
verbs:
- '*'
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: awx-operator
subjects:
- kind: ServiceAccount
name: awx-operator
namespace: default
roleRef:
kind: ClusterRole
name: awx-operator
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: awx-operator
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: awx-operator
spec:
replicas: 1
selector:
matchLabels:
name: awx-operator
template:
metadata:
labels:
name: awx-operator
spec:
serviceAccountName: awx-operator
containers:
- name: awx-operator
image: "quay.io/ansible/awx-operator:0.7.0"
imagePullPolicy: "Always"
volumeMounts:
- mountPath: /tmp/ansible-operator/runner
name: runner
env:
# Watch all namespaces (cluster-scoped).
- name: WATCH_NAMESPACE
value: ""
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: OPERATOR_NAME
value: awx-operator
- name: ANSIBLE_GATHERING
value: explicit
livenessProbe:
httpGet:
path: /healthz
port: 6789
initialDelaySeconds: 5
periodSeconds: 3
volumes:
- name: runner
emptyDir: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: awxs.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWX
listKind: AWXList
plural: awxs
singular: awx
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
description: Schema validation for the AWX CRD
properties:
spec:
properties:
deployment_type:
description: Name of the deployment type
type: string
tower_task_privileged:
description: If a privileged security context should be enabled
type: boolean
tower_admin_user:
description: Username to use for the admin account
type: string
tower_hostname:
description: The hostname of the instance
type: string
tower_admin_email:
description: The admin user email
type: string
tower_admin_password_secret:
description: Secret where the admin password can be found
type: string
tower_postgres_configuration_secret:
description: Secret where the database configuration can be found
type: string
tower_old_postgres_configuration_secret:
description: Secret where the old database configuration can be found for data migration
type: string
tower_secret_key_secret:
description: Secret where the secret key can be found
type: string
tower_broadcast_websocket_secret:
description: Secret where the broadcast websocket secret can be found
type: string
tower_extra_volumes:
description: Specify extra volumes to add to the application pod
type: string
tower_ingress_type:
description: The ingress type to use to reach the deployed instance
type: string
enum:
- none
- Ingress
- ingress
- Route
- route
- LoadBalancer
- loadbalancer
tower_ingress_annotations:
description: Annotations to add to the ingress
type: string
tower_ingress_tls_secret:
description: Secret where the ingress TLS secret can be found
type: string
tower_loadbalancer_annotations:
description: Annotations to add to the loadbalancer
type: string
tower_loadbalancer_protocol:
description: Protocol to use for the loadbalancer
type: string
default: http
enum:
- http
- https
tower_loadbalancer_port:
description: Port to use for the loadbalancer
type: integer
default: 80
tower_route_host:
description: The DNS to use to points to the instance
type: string
tower_route_tls_termination_mechanism:
description: The secure TLS termination mechanism to use
type: string
default: Edge
enum:
- Edge
- edge
- Passthrough
- passthrough
tower_route_tls_secret:
description: Secret where the TLS related credentials are stored
type: string
tower_image:
description: Registry path to the application container to use
type: string
tower_image_pull_policy:
description: The image pull policy
type: string
default: IfNotPresent
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
tower_task_resource_requirements:
description: Resource requirements for the task container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_web_resource_requirements:
description: Resource requirements for the web container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_replicas:
description: Number of instance replicas
type: integer
default: 1
format: int32
tower_garbage_collect_secrets:
description: Whether or not to remove secrets upon instance removal
default: false
type: boolean
tower_create_preload_data:
description: Whether or not to preload data upon Tower instance creation
default: true
type: boolean
tower_task_args:
type: array
items:
type: string
tower_task_command:
type: array
items:
type: string
tower_web_args:
type: array
items:
type: string
tower_web_command:
type: array
items:
type: string
tower_task_extra_env:
type: string
tower_web_extra_env:
type: string
tower_task_extra_volume_mounts:
type: string
tower_web_extra_volume_mounts:
type: string
tower_redis_image:
description: Registry path to the redis container to use
type: string
tower_postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
tower_postgres_resource_requirements:
description: Resource requirements for the PostgreSQL container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_postgres_storage_class:
description: Storage class to use for the PostgreSQL PVC
type: string
tower_postgres_data_path:
description: Path where the PostgreSQL data are located
type: string
ca_trust_bundle:
description: Path where the trusted CA bundle is available
type: string
development_mode:
description: If the deployment should be done in development mode
type: boolean
type: object
status:
properties:
towerURL:
description: URL to access the deployed instance
type: string
towerAdminUser:
description: Admin user of the deployed instance
type: string
towerAdminPasswordSecret:
description: Admin password of the deployed instance
type: string
towerMigratedFromSecret:
description: The secret used for migrating an old Tower.
type: string
towerVersion:
description: Version of the deployed instance
type: string
towerImage:
description: URL of the image used for the deployed instance
type: string
conditions:
description: The resulting conditions when a Service Telemetry is instantiated
items:
properties:
status:
type: string
type:
type: string
reason:
type: string
lastTransitionTime:
type: string
type: object
type: array
type: object
type: object

View File

@@ -1,24 +0,0 @@
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: example-awx
namespace: example-awx
spec:
tower_ingress_type: none
tower_task_privileged: false
tower_hostname: example-awx.test
tower_admin_user: test
tower_admin_email: test@example.com
tower_image: quay.io/ansible/awx:18.0.0
tower_create_preload_data: true
tower_memcached_image: memcached:alpine
tower_redis_image: redis:latest
tower_postgres_storage_class: ''

View File

@@ -1,276 +0,0 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: awxs.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWX
listKind: AWXList
plural: awxs
singular: awx
scope: Namespaced
versions:
- name: v1beta1
served: true
storage: true
subresources:
status: {}
schema:
openAPIV3Schema:
description: Schema validation for the AWX CRD
properties:
spec:
properties:
deployment_type:
description: Name of the deployment type
type: string
tower_task_privileged:
description: If a privileged security context should be enabled
type: boolean
tower_admin_user:
description: Username to use for the admin account
type: string
tower_hostname:
description: The hostname of the instance
type: string
tower_admin_email:
description: The admin user email
type: string
tower_admin_password_secret:
description: Secret where the admin password can be found
type: string
tower_postgres_configuration_secret:
description: Secret where the database configuration can be found
type: string
tower_old_postgres_configuration_secret:
description: Secret where the old database configuration can be found for data migration
type: string
tower_secret_key_secret:
description: Secret where the secret key can be found
type: string
tower_broadcast_websocket_secret:
description: Secret where the broadcast websocket secret can be found
type: string
tower_extra_volumes:
description: Specify extra volumes to add to the application pod
type: string
tower_ingress_type:
description: The ingress type to use to reach the deployed instance
type: string
enum:
- none
- Ingress
- ingress
- Route
- route
- LoadBalancer
- loadbalancer
tower_ingress_annotations:
description: Annotations to add to the ingress
type: string
tower_ingress_tls_secret:
description: Secret where the ingress TLS secret can be found
type: string
tower_loadbalancer_annotations:
description: Annotations to add to the loadbalancer
type: string
tower_loadbalancer_protocol:
description: Protocol to use for the loadbalancer
type: string
default: http
enum:
- http
- https
tower_loadbalancer_port:
description: Port to use for the loadbalancer
type: integer
default: 80
tower_route_host:
description: The DNS to use to points to the instance
type: string
tower_route_tls_termination_mechanism:
description: The secure TLS termination mechanism to use
type: string
default: Edge
enum:
- Edge
- edge
- Passthrough
- passthrough
tower_route_tls_secret:
description: Secret where the TLS related credentials are stored
type: string
tower_image:
description: Registry path to the application container to use
type: string
tower_image_pull_policy:
description: The image pull policy
type: string
default: IfNotPresent
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
tower_task_resource_requirements:
description: Resource requirements for the task container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_web_resource_requirements:
description: Resource requirements for the web container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_replicas:
description: Number of instance replicas
type: integer
default: 1
format: int32
tower_garbage_collect_secrets:
description: Whether or not to remove secrets upon instance removal
default: false
type: boolean
tower_create_preload_data:
description: Whether or not to preload data upon Tower instance creation
default: true
type: boolean
tower_task_args:
type: array
items:
type: string
tower_task_command:
type: array
items:
type: string
tower_web_args:
type: array
items:
type: string
tower_web_command:
type: array
items:
type: string
tower_task_extra_env:
type: string
tower_web_extra_env:
type: string
tower_task_extra_volume_mounts:
type: string
tower_web_extra_volume_mounts:
type: string
tower_redis_image:
description: Registry path to the redis container to use
type: string
tower_postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
tower_postgres_resource_requirements:
description: Resource requirements for the PostgreSQL container
properties:
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_postgres_storage_class:
description: Storage class to use for the PostgreSQL PVC
type: string
tower_postgres_data_path:
description: Path where the PostgreSQL data are located
type: string
ca_trust_bundle:
description: Path where the trusted CA bundle is available
type: string
development_mode:
description: If the deployment should be done in development mode
type: boolean
type: object
status:
properties:
towerURL:
description: URL to access the deployed instance
type: string
towerAdminUser:
description: Admin user of the deployed instance
type: string
towerAdminPasswordSecret:
description: Admin password of the deployed instance
type: string
towerMigratedFromSecret:
description: The secret used for migrating an old Tower.
type: string
towerVersion:
description: Version of the deployed instance
type: string
towerImage:
description: URL of the image used for the deployed instance
type: string
conditions:
description: The resulting conditions when a Service Telemetry is instantiated
items:
properties:
status:
type: string
type:
type: string
reason:
type: string
lastTransitionTime:
type: string
type: object
type: array
type: object
type: object

View File

@@ -1,34 +0,0 @@
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: example-awx
namespace: example-awx
spec:
deployment_type: awx
tower_ingress_type: ingress
tower_task_privileged: false
tower_admin_email: test@example.com
tower_image: quay.io/ansible/awx:18.0.0
tower_web_resource_requirements:
requests:
cpu: 500m
memory: 128M
tower_task_resource_requirements:
requests:
cpu: 500m
memory: 128M
tower_create_preload_data: true
tower_memcached_image: memcached:alpine
tower_redis_image: redis:latest
tower_postgres_pass: awxpass
tower_postgres_image: postgres:12
tower_postgres_storage_class: ''

View File

@@ -1,402 +0,0 @@
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
alm-examples: |-
[
{
"apiVersion": "awx.ansible.com/v1beta1",
"kind": "AWX",
"metadata": {
"name": "example-awx",
"namespace": "example-awx"
},
"spec": {
"tower_admin_email": "test@example.com",
"tower_admin_user": "test",
"tower_broadcast_websocket_secret": "changeme",
"tower_create_preload_data": true,
"tower_hostname": "example-awx.test",
"tower_image": "quay.io/ansible/awx:18.0.0",
"tower_ingress_type": "none",
"tower_memcached_image": "memcached:alpine",
"tower_postgres_storage_class": "",
"tower_redis_image": "redis:latest",
"tower_task_privileged": false
}
},
{
"apiVersion": "awx.ansible.com/v1beta1",
"kind": "AWX",
"metadata": {
"name": "example-awx",
"namespace": "example-awx"
},
"spec": {
"deployment_type": "awx",
"tower_admin_email": "test@example.com",
"tower_broadcast_websocket_secret": "changeme",
"tower_create_preload_data": true,
"tower_image": "quay.io/ansible/awx:18.0.0",
"tower_ingress_type": "ingress",
"tower_memcached_image": "memcached:alpine",
"tower_postgres_image": "postgres:12",
"tower_postgres_pass": "awxpass",
"tower_postgres_storage_class": "",
"tower_redis_image": "redis:latest",
"tower_task_privileged": false,
"tower_task_resource_requirements": {
"requests": {
"cpu": "500m",
"memory": "128M"
}
},
"tower_web_resource_requirements": {
"requests": {
"cpu": "500m",
"memory": "128M"
}
}
}
}
]
capabilities: Basic Install
operators.operatorframework.io/builder: operator-sdk-v0.19.4
operators.operatorframework.io/project_layout: ansible
name: awx-operator.v0.0.1
namespace: placeholder
spec:
apiservicedefinitions: {}
customresourcedefinitions:
owned:
- description: A AWX Instance
kind: AWX
displayName: AWX
name: awxs.awx.ansible.com
specDescriptors:
- displayName: Hostname
path: tower_hostname
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- displayName: Admin account username
path: tower_admin_user
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- displayName: Admin email address
path: tower_admin_email
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- displayName: Admin password secret
path: tower_admin_password_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- displayName: Database configuration secret
path: tower_postgres_configuration_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
path: tower_old_postgres_configuration_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- displayName: Secret key secret
path: tower_secret_key_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- displayName: Broadcast Websocket Secret
path: tower_broadcast_websocket_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- displayName: Ingress Type
path: tower_ingress_type
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:select:none
- urn:alm:descriptor:com.tectonic.ui:select:Ingress
- urn:alm:descriptor:com.tectonic.ui:select:Route
- urn:alm:descriptor:com.tectonic.ui:select:LoadBalancer
- displayName: Tower Ingress Annotations
path: tower_ingress_annotations
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:Ingress
- displayName: Tower Ingress TLS Secret
path: tower_ingress_tls_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:Ingress
- displayName: Tower LoadBalancer Annotations
path: tower_loadbalancer_annotations
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:LoadBalancer
- displayName: Tower LoadBalancer Protocol
path: tower_loadbalancer_protocol
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:select:http
- urn:alm:descriptor:com.tectonic.ui:select:https
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:LoadBalancer
- displayName: Tower LoadBalancer Port
path: tower_loadbalancer_port
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:number
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:LoadBalancer
- displayName: Route DNS host
path: tower_route_host
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:text
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:Route
- displayName: Route TLS termination mechanism
path: tower_route_tls_termination_mechanism
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:select:Edge
- urn:alm:descriptor:com.tectonic.ui:select:Passthrough
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:Route
- displayName: Route TLS credential secret
path: tower_route_tls_secret
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:io.kubernetes:Secret
- urn:alm:descriptor:com.tectonic.ui:fieldDependency:tower_ingress_type:Route
- displayName: Image Pull Policy
path: tower_image_pull_policy
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:imagePullPolicy
- displayName: Web container resource requirements
path: tower_web_resource_requirements
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:resourceRequirements
- displayName: Task container resource requirements
path: tower_task_resource_requirements
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:resourceRequirements
- displayName: PostgreSQL container resource requirements (when using a managed
instance)
path: tower_postgres_resource_requirements
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:resourceRequirements
- displayName: Replicas
path: tower_replicas
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:number
- displayName: Remove used secrets on instance removal ?
path: tower_garbage_collect_secrets
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:booleanSwitch
- displayName: Preload instance with data upon creation ?
path: tower_create_preload_data
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:booleanSwitch
- displayName: Deployment Type
path: deployment_type
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:hidden
- displayName: Tower Image
path: tower_image
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:hidden
- displayName: Tower Postgres Storage Class
path: tower_postgres_storage_class
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:hidden
- displayName: Certificate Authorirty Trust Bundle
path: ca_trust_bundle
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:advanced
- urn:alm:descriptor:com.tectonic.ui:hidden
statusDescriptors:
- description: Route to access the instance deployed
displayName: URL
path: towerURL
x-descriptors:
- urn:alm:descriptor:org.w3:link
- description: Admin user for the instance deployed
displayName: Admin User
path: towerAdminUser
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: Admin password for the instance deployed
displayName: Admin Password
path: towerAdminPasswordSecret
x-descriptors:
- urn:alm:descriptor:io.kubernetes:Secret
- description: Version of the instance deployed
displayName: Version
path: towerVersion
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
- description: Image of the instance deployed
displayName: Image
path: towerImage
x-descriptors:
- urn:alm:descriptor:com.tectonic.ui:text
version: v1beta1
description: AWX operator
displayName: AWX
icon:
- base64data: ""
mediatype: ""
install:
spec:
clusterPermissions:
- rules:
- apiGroups:
- route.openshift.io
resources:
- routes
- routes/custom-host
verbs:
- '*'
- apiGroups:
- ""
- rbac.authorization.k8s.io
resources:
- pods
- services
- services/finalizers
- serviceaccounts
- endpoints
- persistentvolumeclaims
- events
- configmaps
- secrets
- roles
- rolebindings
verbs:
- '*'
- apiGroups:
- apps
- extensions
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
- ingresses
verbs:
- '*'
- apiGroups:
- monitoring.coreos.com
resources:
- servicemonitors
verbs:
- get
- create
- apiGroups:
- apps
resourceNames:
- awx-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
- get
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- apiGroups:
- awx.ansible.com
resources:
- '*'
verbs:
- '*'
serviceAccountName: awx-operator
deployments:
- name: awx-operator
spec:
replicas: 1
selector:
matchLabels:
name: awx-operator
strategy: {}
template:
metadata:
labels:
name: awx-operator
spec:
containers:
- env:
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.annotations['olm.targetNamespaces']
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: OPERATOR_NAME
value: awx-operator
- name: ANSIBLE_GATHERING
value: explicit
image: quay.io/ansible/awx-operator:0.6.0
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /healthz
port: 6789
initialDelaySeconds: 5
periodSeconds: 3
name: awx-operator
resources: {}
volumeMounts:
- mountPath: /tmp/ansible-operator/runner
name: runner
serviceAccountName: awx-operator
volumes:
- emptyDir: {}
name: runner
strategy: deployment
installModes:
- supported: true
type: OwnNamespace
- supported: true
type: SingleNamespace
- supported: false
type: MultiNamespace
- supported: true
type: AllNamespaces
keywords:
- awx
links:
- name: Awx Operator
url: https://github.com/ansible/awx-operator
maintainers:
- email: yguenane@redhat.com
name: Yanis Guenane
maturity: alpha
provider:
name: AWX Community
url: https://github.com/ansible/awx-operator
version: 0.0.1

View File

@@ -1,280 +0,0 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
creationTimestamp: null
name: awxs.awx.ansible.com
spec:
group: awx.ansible.com
names:
kind: AWX
listKind: AWXList
plural: awxs
singular: awx
scope: Namespaced
versions:
- name: v1beta1
schema:
openAPIV3Schema:
description: Schema validation for the AWX CRD
properties:
spec:
properties:
ca_trust_bundle:
description: Path where the trusted CA bundle is available
type: string
deployment_type:
description: Name of the deployment type
type: string
development_mode:
description: If the deployment should be done in development mode
type: boolean
tower_admin_email:
description: The admin user email
type: string
tower_admin_password_secret:
description: Secret where the admin password can be found
type: string
tower_admin_user:
description: Username to use for the admin account
type: string
tower_broadcast_websocket_secret:
description: Secret where the broadcast websocket secret can be found
type: string
tower_create_preload_data:
default: true
description: Whether or not to preload data upon Tower instance creation
type: boolean
tower_extra_volumes:
description: Specify extra volumes to add to the application pod
type: string
tower_garbage_collect_secrets:
default: false
description: Whether or not to remove secrets upon instance removal
type: boolean
tower_hostname:
description: The hostname of the instance
type: string
tower_image:
description: Registry path to the application container to use
type: string
tower_image_pull_policy:
default: IfNotPresent
description: The image pull policy
enum:
- Always
- always
- Never
- never
- IfNotPresent
- ifnotpresent
type: string
tower_ingress_annotations:
description: Annotations to add to the ingress
type: string
tower_ingress_tls_secret:
description: Secret where the ingress TLS secret can be found
type: string
tower_ingress_type:
description: The ingress type to use to reach the deployed instance
enum:
- none
- Ingress
- ingress
- Route
- route
- LoadBalancer
- loadbalancer
type: string
tower_loadbalancer_annotations:
description: Annotations to add to the loadbalancer
type: string
tower_loadbalancer_protocol:
description: Protocol to use for the loadbalancer
type: string
default: http
enum:
- http
- https
tower_loadbalancer_port:
description: Port to use for the loadbalancer
type: number
default: 80
tower_postgres_configuration_secret:
description: Secret where the database configuration can be found
type: string
tower_old_postgres_configuration_secret:
description: Secret where the old database configuration can be found for data migration
type: string
tower_postgres_data_path:
description: Path where the PostgreSQL data are located
type: string
tower_postgres_image:
description: Registry path to the PostgreSQL container to use
type: string
tower_postgres_resource_requirements:
description: Resource requirements for the PostgreSQL container
properties:
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_postgres_storage_class:
description: Storage class to use for the PostgreSQL PVC
type: string
tower_redis_image:
description: Registry path to the redis container to use
type: string
tower_replicas:
default: 1
description: Number of instance replicas
format: int32
type: integer
tower_route_host:
description: The DNS to use to points to the instance
type: string
tower_route_tls_secret:
description: Secret where the TLS related credentials are stored
type: string
tower_route_tls_termination_mechanism:
default: Edge
description: The secure TLS termination mechanism to use
enum:
- Edge
- edge
- Passthrough
- passthrough
type: string
tower_secret_key_secret:
description: Secret where the secret key can be found
type: string
tower_task_args:
items:
type: string
type: array
tower_task_command:
items:
type: string
type: array
tower_task_extra_env:
type: string
tower_task_extra_volume_mounts:
type: string
tower_task_privileged:
description: If a privileged security context should be enabled
type: boolean
tower_task_resource_requirements:
description: Resource requirements for the task container
properties:
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
tower_web_args:
items:
type: string
type: array
tower_web_command:
items:
type: string
type: array
tower_web_extra_env:
type: string
tower_web_extra_volume_mounts:
type: string
tower_web_resource_requirements:
description: Resource requirements for the web container
properties:
limits:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
requests:
properties:
cpu:
type: string
memory:
type: string
storage:
type: string
type: object
type: object
type: object
status:
properties:
conditions:
description: The resulting conditions when a Service Telemetry is
instantiated
items:
properties:
lastTransitionTime:
type: string
reason:
type: string
status:
type: string
type:
type: string
type: object
type: array
towerAdminPasswordSecret:
description: Admin password of the deployed instance
type: string
towerAdminUser:
description: Admin user of the deployed instance
type: string
towerImage:
description: URL of the image used for the deployed instance
type: string
towerURL:
description: URL to access the deployed instance
type: string
towerVersion:
description: Version of the deployed instance
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: null
storedVersions: null

View File

@@ -1,10 +0,0 @@
annotations:
operators.operatorframework.io.bundle.channel.default.v1: alpha
operators.operatorframework.io.bundle.channels.v1: alpha
operators.operatorframework.io.bundle.manifests.v1: manifests/
operators.operatorframework.io.bundle.mediatype.v1: registry+v1
operators.operatorframework.io.bundle.metadata.v1: metadata/
operators.operatorframework.io.bundle.package.v1: awx-operator
operators.operatorframework.io.metrics.builder: operator-sdk-v0.19.4
operators.operatorframework.io.metrics.mediatype.v1: metrics+v1
operators.operatorframework.io.metrics.project_layout: ansible

Some files were not shown because too many files have changed in this diff Show More