Skip to content

Commit 045ae97

Browse files
authored
Re-import docs from Upstream 24.6.1 repo (#157)
* Re-import docs. Will need to start going through the files one by one to ensure accuracy. * Update requirements.txt for docs * Rename some files * Delete backup files * Rename image
1 parent ca5c8a8 commit 045ae97

File tree

898 files changed

+24851
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

898 files changed

+24851
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ awx/ui_next/build
172172

173173
# Docs build stuff
174174
docs/docsite/build/
175+
docs/docsite/venv/
175176
_readthedocs/
176177

177178
# Pyenv

docs/ansible_runner_integration.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
## Ansible Runner Integration Overview
2+
3+
Much of the code in Ascender around ansible and `ansible-playbook` invocation has been removed and put into the project `ansible-runner`. Ascender now calls out to `ansible-runner` to invoke ansible and `ansible-playbook`.
4+
5+
### Lifecycle
6+
7+
In Ascender, a task of a certain job type is kicked off (_i.e._, RunJob, RunProjectUpdate, RunInventoryUpdate, etc.) in `awx/main/tasks/jobs.py`. A temp directory is built to house `ansible-runner` parameters (_i.e._, `envvars`, `cmdline`, `extravars`, etc.). The `temp` directory is filled with the various concepts in Ascender (_i.e._, `ssh` keys, `extra vars`, etc.). The code then builds a set of parameters to be passed to the `ansible-runner` Python module interface, `ansible-runner.interface.run()`. This is where Ascender passes control to `ansible-runner`. Feedback is gathered by Ascender via callbacks and handlers passed in.
8+
9+
The callbacks and handlers are:
10+
* `event_handler`: Called each time a new event is created in `ansible-runner`. Ascender will dispatch the event to `redis` to be processed on the other end by the callback receiver.
11+
* `cancel_callback`: Called periodically by `ansible-runner`; this is so that Ascender can inform `ansible-runner` if the job should be canceled or not. Only applies for system jobs now, and other jobs are canceled via receptor.
12+
* `finished_callback`: Called once by `ansible-runner` to denote that the process that was asked to run is finished. Ascender will construct the special control event, `EOF`, with the associated total number of events that it observed.
13+
* `status_handler`: Called by `ansible-runner` as the process transitions state internally. Ascender uses the `starting` status to know that `ansible-runner` has made all of its decisions around the process that it will launch. Ascender gathers and associates these decisions with the Job for historical observation.
14+
15+
### Debugging
16+
17+
If you want to debug `ansible-runner`, then set `Ascender_CLEANUP_PATHS=False`, run a job, observe the job's `Ascender_PRIVATE_DATA_DIR` property, and go the node where the job was executed and inspect that directory.
18+
19+
If you want to debug the process that `ansible-runner` invoked (_i.e._, Ansible or `ansible-playbook`), then observe the Job's `job_env`, `job_cwd`, and `job_args` parameters.

docs/auth/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
This folder describes third-party authentications supported by Ascender. These authentications can be configured and enabled inside Ascender.
2+
3+
When a user wants to log into Ascender, she can explicitly choose some of the supported authentications to log in instead of Ascender's own authentication using username and password. Here is a list of such authentications:
4+
* Google OAuth2
5+
* Github OAuth2
6+
* Github Organization OAuth2
7+
* Github Team OAuth2
8+
* Github Enterprise OAuth2
9+
* Github Enterprise Organization OAuth2
10+
* Github Enterprise Team OAuth2
11+
* Microsoft Azure Active Directory (AD) OAuth2
12+
13+
On the other hand, the other authentication methods use the same types of login info (username and password), but authenticate using external auth systems rather than Ascender's own database. If some of these methods are enabled, Ascender will try authenticating using the enabled methods *before Ascender's own authentication method*. The order of precedence is:
14+
* LDAP
15+
* RADIUS
16+
* TACACS+
17+
* SAML
18+
19+
Ascender will try authenticating against each enabled authentication method *in the specified order*, meaning if the same username and password is valid in multiple enabled auth methods (*e.g.*, both LDAP and TACACS+), Ascender will only use the first positive match (in the above example, log a user in via LDAP and skip TACACS+).
20+
21+
## Notes:
22+
SAML users, RADIUS users and TACACS+ users are categorized as 'Enterprise' users. The following rules apply to Enterprise users:
23+
24+
* Enterprise users can only be created via the first successful login attempt from remote authentication backend.
25+
* Enterprise users cannot be created/authenticated if non-enterprise users with the same name has already been created in Ascender.
26+
* Ascender passwords of Enterprise users should always be empty and cannot be set by any user if there are enterprise backends enabled.
27+
* If enterprise backends are disabled, an Enterprise user can be converted to a normal Ascender user by setting password field. But this operation is irreversible (the converted Ascender user can no longer be treated as Enterprise user).

docs/auth/ldap.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# LDAP
2+
The Lightweight Directory Access Protocol (LDAP) is an open, vendor-neutral, industry-standard application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network. Directory services play an important role in developing intranet and Internet applications by allowing the sharing of information about users, systems, networks, services, and applications throughout the network.
3+
4+
5+
# Configure LDAP Authentication
6+
7+
Please see the [Tower documentation](https://docs.ansible.com/ansible-tower/latest/html/administration/ldap_auth.html) as well as [Ansible blog post](https://www.ansible.com/blog/getting-started-ldap-authentication-in-ansible-tower) for basic LDAP configuration.
8+
9+
LDAP Authentication provides duplicate sets of configuration fields for authentication with up to six different LDAP servers.
10+
The default set of configuration fields take the form `AUTH_LDAP_<field name>`. Configuration fields for additional LDAP servers are numbered `AUTH_LDAP_<n>_<field name>`.
11+
12+
13+
## Test Environment Setup
14+
15+
Please see `README.md` of this repository: https://github.com/ansible/deploy_ldap
16+
17+
18+
# Basic Setup for FreeIPA
19+
20+
LDAP Server URI (append if you have multiple LDAPs)
21+
`ldaps://{{serverip1}}:636`
22+
23+
LDAP BIND DN (How to create a bind account in [FreeIPA](https://www.freeipa.org/page/Creating_a_binddn_for_Foreman)
24+
`uid=awx-bind,cn=sysaccounts,cn=etc,dc=example,dc=com`
25+
26+
LDAP BIND PASSWORD
27+
`{{yourbindaccountpassword}}`
28+
29+
LDAP USER DN TEMPLATE
30+
`uid=%(user)s,cn=users,cn=accounts,dc=example,dc=com`
31+
32+
LDAP GROUP TYPE
33+
`NestedMemberDNGroupType`
34+
35+
LDAP GROUP SEARCH
36+
```
37+
[
38+
"cn=groups,cn=accounts,dc=example,dc=com",
39+
"SCOPE_SUBTREE",
40+
"(objectClass=groupOfNames)"
41+
]
42+
```
43+
44+
LDAP USER ATTRIBUTE MAP
45+
```
46+
{
47+
"first_name": "givenName",
48+
"last_name": "sn",
49+
"email": "mail"
50+
}
51+
```
52+
53+
LDAP USER FLAGS BY GROUP
54+
```
55+
{
56+
"is_superuser": "cn={{superusergroupname}},cn=groups,cn=accounts,dc=example,dc=com"
57+
}
58+
```
59+
60+
LDAP ORGANIZATION MAP
61+
```
62+
{
63+
"{{yourorganizationname}}": {
64+
"admins": "cn={{admingroupname}},cn=groups,cn=accounts,dc=example,dc=com",
65+
"remove_admins": false
66+
}
67+
}
68+
```

0 commit comments

Comments
 (0)