Skip to content

Commit c9ebbbe

Browse files
committed
improve isolated docs
1 parent 6355aeb commit c9ebbbe

File tree

4 files changed

+58
-10
lines changed

4 files changed

+58
-10
lines changed

docs/experimental/isolated-clusters.md

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ all "default" features, i.e. roles/groups which are enabled either in the
99
`common` environment or in the `environments/$ENV/inventory/groups` file
1010
created by cookiecutter for a new environment.
1111

12-
The full list of features and whether they are functional on such an "isolated" network is shown in the table below. Note that:
12+
The full list of features and whether they are functional on such an "isolated"
13+
network is shown in the table below. Note that:
1314

1415
1. The `hpl` test from the `ansible/adhoc/hpctests.yml` playbook is not
1516
functional and must be skipped using:
@@ -21,8 +22,8 @@ The full list of features and whether they are functional on such an "isolated"
2122
2. Using [EESSI](https://www.eessi.io/docs/) necessarily requires outbound
2223
network access for the CernVM File System. However this can be provided
2324
via an authenticated proxy. While the proxy configuration on the cluster node
24-
is readable by all users, this proxy can provide access only to EESSI's
25-
CVMFS Stratum 1 servers.
25+
is readable by all users, this proxy could be limited via acls to only provide
26+
access to EESSI's CVMFS Stratum 1 servers.
2627
2728
## Support by feature for isolated networks
2829
@@ -47,6 +48,7 @@ See above for definition of "Default" features. In the "Isolated?" column:
4748
| fail2ban | Y | Y |
4849
| filebeat | Y | Y |
4950
| firewalld | Y | Y |
51+
| freeipa_client | - | Y - image build required |
5052
| gateway | n/a | n/a - build only |
5153
| grafana | Y | Y |
5254
| hpctests | Y | Y - except hpl-solo, see above |
@@ -78,12 +80,50 @@ See above for definition of "Default" features. In the "Isolated?" column:
7880
| tuned | - | Y |
7981
| update | - | No |
8082
83+
## Image build
84+
A site image build may be required, either for features using packages not
85+
present in StackHPC images (e.g `freeipa_client`) or to [add additional packages](../operations.md#adding-additional-packages).
86+
Clearly in this case the build VM does require outbound internet access. For an
87+
"isolated" environment, this could be achieved by [configuring image build](../image-build.md)
88+
to use a different network from the cluster. Alternatively if an authenticated
89+
proxy is avaiable the image build can be configured to use that, e.g.:
90+
91+
```yaml
92+
# environments/$ENV/builder.pkrvars.hcl:
93+
...
94+
inventory_groups = 'proxy,freeipa_client'
95+
```
96+
97+
```yaml
98+
# environments/$ENV/group_vars/builder/overrrides.yml:
99+
proxy_basic_user: someuser
100+
proxy_basic_password: "{{ vault_proxy_basic_password }}"
101+
proxy_http_address: squid.mysite.org
102+
```
103+
104+
```yaml
105+
# environments/$ENV/group_vars/builder/vault_overrrides.yml:
106+
# NB: vault-encrypt this file
107+
vault_proxy_basic_password: 'super-secret-password'
108+
```
109+
110+
See [ansible/roles/proxy/README.md](../../ansible/roles/proxy/README.md) and
111+
the convenience variables at
112+
[environments/common/inventory/group_vars/all/proxy.yml](../../environments/common/inventory/group_vars/all/proxy.yml).
113+
114+
By default, the proxy configuration will be removed at the end of the build and
115+
hence will not be present in the image.
116+
81117
## Network considerations
82118
83-
Even when outbound internet access is not required, nodes do require some outbound access, as well as connectivity inbound from the deploy host and
84-
inbound connectivity for users. This section documents the minimal connectivity required, in the form of the minimally-permissive security group rules. Often default security groups are less restrictive than these.
119+
Even when outbound internet access is not required, nodes do require some
120+
outbound access, as well as connectivity inbound from the deploy host and
121+
inbound connectivity for users. This section documents the minimal connectivity
122+
required, in the form of the minimally-permissive security group rules. Often
123+
default security groups are less restrictive than these.
85124
86-
Assuming nodes and the deploy host have a security group `isolated` applied then the following rules are required:
125+
Assuming nodes and the deploy host have a security group `isolated` applied then
126+
the following rules are required:
87127
88128
# allow outbound DNS
89129
ALLOW IPv4 53/tcp to 0.0.0.0/0
@@ -99,15 +139,18 @@ Assuming nodes and the deploy host have a security group `isolated` applied then
99139
# optionally: allow hosts to reach squid proxy for EESSI:
100140
ALLOW IPv4 3128/tcp to <squid cidr>
101141
102-
Note that name resolution happens on the hosts, not on the proxy, hence DNS is required for nodes even with a proxy.
142+
Note that name resolution happens on the hosts, not on the proxy, hence DNS is
143+
required for nodes even with a proxy.
103144
104145
For nodes running OpenOndemand, inbound ssh and https are also required
105146
(e.g. in a security group called `isolated-ssh-https`):
106147
107148
ALLOW IPv4 443/tcp from 0.0.0.0/0
108149
ALLOW IPv4 22/tcp from 0.0.0.0/0
109150
110-
If non-default security groups are required, then the OpenTofu variables `login_security_groups` and `nonlogin_security_groups` can be used to set these, e.g.:
151+
If non-default security groups are required, then the OpenTofu variables
152+
`login_security_groups` and `nonlogin_security_groups` can be used to set
153+
these, e.g.:
111154
112155
```terraform
113156
# environments/site/tofu/cluster.auto.tfvars:

docs/networks.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ subnets or associated infrastructure such as routers. The requirements are that:
66
2. The first network defined spans all nodes, referred to as the "access network".
77
3. Only one subnet per network is attached to nodes.
88
4. At least one network on each node provides outbound internet access (either
9-
directly, or via a proxy).
9+
directly, or via a proxy). In some cases this can be relaxed - see
10+
[docs/experimental/isolated-clusters.md](./experimental/isolated-clusters.md).
1011

11-
Addresses on the "access network" used as the `ansible_host` IPs.
12+
Addresses on the "access network" are used as the `ansible_host` IPs.
1213

1314
It is recommended that the deploy host either has a direct connection to the
1415
"access network" or jumps through a host on it which is not part of the appliance.

environments/common/inventory/group_vars/all/proxy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ proxy_http_port: "{{ squid_http_port }}"
1616
# whether to remove the proxy configuration at the end of Ansible runs:
1717
# (useful for image build where this should not be captured in the image)
1818
proxy_remove: false
19+
# NB for the `builder` group this defaults to true
1920

2021
# full http proxy string - override if the above don't provide enough control:
2122
proxy_http_proxy: >-

environments/common/layouts/everything

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ compute
5959
# Hosts to manage /etc/hosts e.g. if no internal DNS. See ansible/roles/etc_hosts/README.md
6060
cluster
6161

62+
[freeipa_client]
63+
# Hosts to be a FreeIPA client. See ansible/roles/freeipa/README.md
64+
6265
[cuda]
6366
# Hosts to install NVIDIA CUDA on - see ansible/roles/cuda/README.md
6467

0 commit comments

Comments
 (0)