Skip to content

Commit f505c13

Browse files
bertiethorpesjpb
andcommitted
Change docs/ references from Terraform to OpenTofu (#544)
* change terraform references to opentofu in docs * remove wider reference to terraform * Update environments/README.md Co-authored-by: Steve Brasier <[email protected]> * Update environments/common/README.md Co-authored-by: Steve Brasier <[email protected]> --------- Co-authored-by: Steve Brasier <[email protected]>
1 parent 7492de7 commit f505c13

File tree

12 files changed

+23
-23
lines changed

12 files changed

+23
-23
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ And generate secrets for it:
8282

8383
Create an OpenTofu variables file to define the required infrastructure, e.g.:
8484

85-
# environments/$ENV/terraform/terraform.tfvars:
85+
# environments/$ENV/tofu/tofu.tfvars:
8686

8787
cluster_name = "mycluster"
8888
cluster_net = "some_network" # *
@@ -105,12 +105,12 @@ Create an OpenTofu variables file to define the required infrastructure, e.g.:
105105
}
106106
}
107107

108-
Variables marked `*` refer to OpenStack resources which must already exist. The above is a minimal configuration - for all variables and descriptions see `environments/$ENV/terraform/terraform.tfvars`.
108+
Variables marked `*` refer to OpenStack resources which must already exist. The above is a minimal configuration - for all variables and descriptions see `environments/$ENV/tofu/tofu.tfvars`.
109109

110110
To deploy this infrastructure, ensure the venv and the environment are [activated](#create-a-new-environment) and run:
111111

112112
export OS_CLOUD=openstack
113-
cd environments/$ENV/terraform/
113+
cd environments/$ENV/tofu/
114114
tofu init
115115
tofu apply
116116

ansible/ci/retrieve_inventory.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
gather_facts: no
88
vars:
99
cluster_prefix: "{{ undef(hint='cluster_prefix must be defined') }}" # e.g. ci4005969475
10-
ci_vars_file: "{{ appliances_environment_root + '/terraform/' + lookup('env', 'CI_CLOUD') }}.tfvars"
10+
ci_vars_file: "{{ appliances_environment_root + '/tofu/' + lookup('env', 'CI_CLOUD') }}.tfvars"
1111
cluster_network: "{{ lookup('ansible.builtin.ini', 'cluster_net', file=ci_vars_file, type='properties') | trim('\"') }}"
1212
tasks:
1313
- name: Get control host IP

ansible/roles/block_devices/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This is a convenience wrapper around the ansible modules:
1111

1212
To avoid issues with device names changing after e.g. reboots, devices are identified by serial number and mounted by filesystem UUID.
1313

14-
**NB:** This role is ignored[^1] during Packer builds as block devices will not be attached to the Packer build VMs. This role is therefore deprecated and it is suggested that `cloud-init` is used instead. See e.g. `environments/skeleton/{{cookiecutter.environment}}/terraform/control.userdata.tpl`.
14+
**NB:** This role is ignored[^1] during Packer builds as block devices will not be attached to the Packer build VMs. This role is therefore deprecated and it is suggested that `cloud-init` is used instead. See e.g. `environments/skeleton/{{cookiecutter.environment}}/tofu/control.userdata.tpl`.
1515

1616
[^1]: See `environments/common/inventory/group_vars/builder/defaults.yml`
1717

ansible/roles/compute_init/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ The following roles/groups are currently fully functional:
4343
- `openhpc`: all functionality
4444

4545
The above may be enabled by setting the compute_init_enable property on the
46-
terraform compute variable.
46+
tofu compute variable.
4747

4848
# Development/debugging
4949

ansible/roles/freeipa/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Support FreeIPA in the appliance. In production use it is expected the FreeIPA s
77

88
## Usage
99
- Add hosts to the `freeipa_client` group and run (at a minimum) the `ansible/iam.yml` playbook.
10-
- Host names must match the domain name. By default (using the skeleton Terraform) hostnames are of the form `nodename.cluster_name.cluster_domain_suffix` where `cluster_name` and `cluster_domain_suffix` are Terraform variables.
10+
- Host names must match the domain name. By default (using the skeleton OpenTofu) hostnames are of the form `nodename.cluster_name.cluster_domain_suffix` where `cluster_name` and `cluster_domain_suffix` are OpenTofu variables.
1111
- Hosts discover the FreeIPA server FQDN (and their own domain) from DNS records. If DNS servers are not set this is not set from DHCP, then use the `resolv_conf` role to configure this. For example when using the in-appliance FreeIPA development server:
1212

1313
```ini
@@ -28,7 +28,7 @@ Support FreeIPA in the appliance. In production use it is expected the FreeIPA s
2828
- For production use with an external FreeIPA server, a random one-time password (OTP) must be generated when adding hosts to FreeIPA (e.g. using `ipa host-add --random ...`). This password should be set as a hostvar `freeipa_host_password`. Initial host enrolment will use this OTP to enrol the host. After this it becomes irrelevant so it does not need to be committed to git. This approach means the appliance does not require the FreeIPA administrator password.
2929
- For development use with the in-appliance FreeIPA server, `freeipa_host_password` will be automatically generated in memory.
3030
- The `control` host must define `appliances_state_dir` (on persistent storage). This is used to back-up keytabs to allow FreeIPA clients to automatically re-enrol after e.g. reimaging. Note that:
31-
- This is implemented when using the skeleton Terraform; on the control node `appliances_state_dir` defaults to `/var/lib/state` which is mounted from a volume.
31+
- This is implemented when using the skeleton OpenTofu; on the control node `appliances_state_dir` defaults to `/var/lib/state` which is mounted from a volume.
3232
- Nodes are not re-enroled by a [Slurm-driven reimage](../../collections/ansible_collections/stackhpc/slurm_openstack_tools/roles/rebuild/README.md) (as that does not run this role).
3333
- If both a backed-up keytab and `freeipa_host_password` exist, the former is used.
3434

docs/openondemand.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ See the [ansible/roles/openondemand/README.md](../ansible/roles/openondemand/REA
3333
The following variables have been given default values to allow Open OnDemand to work in a newly created environment without additional configuration, but generally should be overridden in `environment/site/inventory/group_vars/all/` with site-specific values:
3434
- `openondemand_servername` - this must be defined for both `openondemand` and `grafana` hosts (when Grafana is enabled). Default is `ansible_host` (i.e. the IP address) of the first host in the `openondemand` group.
3535
- `openondemand_auth` and any corresponding options. Defaults to `basic_pam`.
36-
- `openondemand_desktop_partition` and `openondemand_jupyter_partition` if the corresponding inventory groups are defined. Defaults to the first compute group defined in the `compute` Terraform variable in `environments/$ENV/terraform`.
36+
- `openondemand_desktop_partition` and `openondemand_jupyter_partition` if the corresponding inventory groups are defined. Defaults to the first compute group defined in the `compute` OpenTofu variable in `environments/$ENV/tofu`.
3737

3838
It is also recommended to set:
3939
- `openondemand_dashboard_support_url`

docs/operations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ This is a usually a two-step process:
5757

5858
- If new nodes are required, define a new node group by adding an entry to the `compute` mapping in `environments/$ENV/tofu/main.tf` assuming the default OpenTofu configuration:
5959
- The key is the partition name.
60-
- The value should be a mapping, with the parameters defined in `environments/$SITE_ENV/terraform/compute/variables.tf`, but in brief will need at least `flavor` (name) and `nodes` (a list of node name suffixes).
60+
- The value should be a mapping, with the parameters defined in `environments/$SITE_ENV/tofu/compute/variables.tf`, but in brief will need at least `flavor` (name) and `nodes` (a list of node name suffixes).
6161
- Add a new partition to the partition configuration as described under [Modifying Slurm Partition-specific Configuration](#Modifying-Slurm-Partition-specific-Configuration).
6262

63-
Deploying the additional nodes and applying these changes requires rerunning both Terraform and the Ansible site.yml playbook - follow [Deploying a Cluster](#Deploying-a-Cluster).
63+
Deploying the additional nodes and applying these changes requires rerunning both OpenTofu and the Ansible site.yml playbook - follow [Deploying a Cluster](#Deploying-a-Cluster).
6464

6565
# Adding Additional Packages
6666
By default, the following utility packages are installed during the StackHPC image build:

docs/persistent-state.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ If using the `environments/common/layout/everything` Ansible groups template (wh
1313

1414
Note that if `appliances_state_dir` is defined, the path it gives must exist and should be owned by root. Directories will be created within this with appropriate permissions for each item of state defined above. Additionally, the systemd units for the services listed above will be modified to require `appliances_state_dir` to be mounted before service start (via the `systemd` role).
1515

16-
A new cookiecutter-produced environment supports persistent state in the default Terraform (see `environments/skeleton/{{cookiecutter.environment}}/terraform/`) by:
16+
A new cookiecutter-produced environment supports persistent state in the default OpenTofu (see `environments/skeleton/{{cookiecutter.environment}}/tofu/`) by:
1717

18-
- Defining a volume with a default size of 150GB - this can be controlled by the Terraform variable `state_volume_size`.
18+
- Defining a volume with a default size of 150GB - this can be controlled by the OpenTofu variable `state_volume_size`.
1919
- Attaching it to the control node.
2020
- Defining cloud-init userdata for the control node which formats and mounts this volume at `/var/lib/state`.
21-
- Defining `appliances_state_dir: /var/lib/state` for the control node in the (Terraform-templated) `inventory/hosts` file.
21+
- Defining `appliances_state_dir: /var/lib/state` for the control node in the (OpenTofu-templated) `inventory/hosts` file.
2222

23-
**NB: The default Terraform is provided as a working example and for internal CI use - therefore this volume is deleted when running `terraform destroy` - this may not be appropriate for a production environment.**
23+
**NB: The default OpenTofu is provided as a working example and for internal CI use - therefore this volume is deleted when running `tofu destroy` - this may not be appropriate for a production environment.**
2424

2525
In general, the Prometheus data is likely to be the only sizeable state stored. The size of this can be influenced through [Prometheus role variables](https://github.com/cloudalchemy/ansible-prometheus#role-variables), e.g.:
2626
- `prometheus_storage_retention` - [default](../environments/common/inventory/group_vars/all/prometheus.yml) 31d

docs/production.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,15 @@ and referenced from the `site` and `production` environments, e.g.:
4141
- OpenTofu configurations should be defined in the `site` environment and used
4242
as a module from the other environments. This can be done with the
4343
cookie-cutter generated configurations:
44-
- Delete the *contents* of the cookie-cutter generated `terraform/` directories
44+
- Delete the *contents* of the cookie-cutter generated `tofu/` directories
4545
from the `production` and `staging` environments.
46-
- Create a `main.tf` in those directories which uses `site/terraform/` as a
46+
- Create a `main.tf` in those directories which uses `site/tofu/` as a
4747
[module](https://opentofu.org/docs/language/modules/), e.g. :
4848

4949
```
5050
...
5151
module "cluster" {
52-
source = "../../site/terraform/"
52+
source = "../../site/tofu/"
5353

5454
cluster_name = "foo"
5555
...
@@ -61,7 +61,7 @@ and referenced from the `site` and `production` environments, e.g.:
6161
into the module block.
6262
- Environment-independent variables (e.g. maybe `cluster_net` if the
6363
same is used for staging and production) should be set as *defaults*
64-
in `environments/site/terraform/variables.tf`, and then don't need to
64+
in `environments/site/tofu/variables.tf`, and then don't need to
6565
be passed in to the module.
6666
6767
- Vault-encrypt secrets. Running the `generate-passwords.yml` playbook creates
@@ -102,7 +102,7 @@ and referenced from the `site` and `production` environments, e.g.:
102102

103103
- Consider whether having (read-only) access to Grafana without login is OK. If not, remove `grafana_auth_anonymous` in `environments/$ENV/inventory/group_vars/all/grafana.yml`
104104

105-
- Modify `environments/site/terraform/nodes.tf` to provide fixed IPs for at least
105+
- Modify `environments/site/tofu/nodes.tf` to provide fixed IPs for at least
106106
the control node, and (if not using FIPs) the login node(s):
107107

108108
```

docs/upgrades.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ All other commands should be run on the Ansible deploy host.
6262

6363
1. If required, build an "extra" image with local modifications, see [docs/image-build.md](./image-build.md).
6464

65-
1. Modify your site-specific environment to use this image, e.g. via `cluster_image_id` in `environments/$SITE_ENV/terraform/variables.tf`.
65+
1. Modify your site-specific environment to use this image, e.g. via `cluster_image_id` in `environments/$SITE_ENV/tofu/variables.tf`.
6666

6767
1. Test this in your staging cluster.
6868

environments/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ typically contains all the environment specific config. It must output an ansibl
77
that conforms to the structure we expect. Providing that the inventory conforms to this
88
structure, the ansible code will still be able to interface with that inventory.
99
This allows the ansible code to be decoupled from the code that deployed the infrastructure
10-
and can therefore be tool and cloud agnostic i.e we don't care if you use terraform or ansible.
10+
and can therefore be tool and cloud agnostic.
1111

1212
A pattern we use is to chain multiple ansible inventories to provide a crude form of inheritance. e.g
1313

environments/common/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
This contains an inventory that defines variables which are common between the
44
`production` and `development` environments. It is not intended to be used in
5-
a standalone fashion to deploy infrastructure (i.e no terraform), but is instead
5+
a standalone fashion to deploy infrastructure, but is instead
66
referenced in `ansible.cfg` from the `production` and `development` configurations.
77

88
The pattern we use is that all resources referenced in the inventory

0 commit comments

Comments
 (0)