Skip to content

Commit 6e3f10f

Browse files
authored
Merge pull request #27 from stackhpc/tls
Add TLS, HCP Vault PKI & Barbican deployment
2 parents 4d33b65 + 84d8563 commit 6e3f10f

File tree

2 files changed

+52
-4
lines changed

2 files changed

+52
-4
lines changed

outputs.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,10 @@ resource "local_file" "deploy_openstack" {
5757
content = templatefile(
5858
"${path.module}/templates/deploy-openstack.tpl",
5959
{
60-
seed_addr = openstack_compute_instance_v2.seed.access_ip_v4,
61-
ssh_user = var.ssh_user,
62-
deploy_wazuh = var.deploy_wazuh
60+
seed_addr = openstack_compute_instance_v2.seed.access_ip_v4,
61+
ssh_user = var.ssh_user,
62+
deploy_wazuh = var.deploy_wazuh
63+
controller_hostname = openstack_compute_instance_v2.controller.*.name
6364
}
6465
)
6566
filename = "ansible/files/deploy-openstack.sh"

templates/deploy-openstack.tpl

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,65 @@ set +x
4242
export KAYOBE_VAULT_PASSWORD=$(cat ~/vault.password)
4343
set -x
4444

45+
# Configure hosts
4546
kayobe control host bootstrap
4647
kayobe seed host configure
4748
kayobe overcloud host configure
4849
%{ if deploy_wazuh }kayobe infra vm host configure%{ endif }
4950

51+
# Deploy Ceph
5052
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/cephadm-deploy.yml
5153
sleep 30
5254
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/cephadm.yml
5355
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/cephadm-gather-keys.yml
5456

57+
pip install -r $${config_directories[kayobe]}/requirements.txt
58+
59+
# Deploy hashicorp vault to the seed
60+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/vault-deploy-seed.yml
61+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/vault/OS-TLS-INT.pem
62+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/vault/seed-vault-keys.json
63+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/vault/overcloud.key
64+
65+
kayobe overcloud service deploy -kt haproxy
66+
67+
# Deploy hashicorp vault to the controllers
68+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/vault-deploy-overcloud.yml
69+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/vault/overcloud-vault-keys.json
70+
71+
# Generate internal tls certificates
72+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/vault-generate-internal-tls.yml
73+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/certificates/haproxy-internal.pem
74+
75+
# Generate backend tls certificates
76+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/vault-generate-backend-tls.yml
77+
%{ for hostname in controller_hostname ~}
78+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/certificates/${ hostname }-key.pem
79+
%{ endfor ~}
80+
81+
# Set config to use tls
82+
sed -i 's/# kolla_enable_tls_internal: true/kolla_enable_tls_internal: true/g' $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla.yml
83+
cat $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/globals-tls-config.yml >> $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/kolla/globals.yml
84+
85+
# Create vault configuration for barbican
86+
cat << EOF >> $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/secrets.yml
87+
---
88+
secrets_barbican_approle_secret_id: $(uuidgen)
89+
EOF
90+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/secrets.yml
91+
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/vault-deploy-barbican.yml
92+
ansible-vault decrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/secrets.yml
93+
cat << EOF >> $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/secrets.yml
94+
secrets_barbican_approle_role_id: $(cat /tmp/barbican-role-id)
95+
EOF
96+
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/$KAYOBE_ENVIRONMENT/secrets.yml
97+
rm /tmp/barbican-role-id
98+
99+
# Deploy all services
55100
kayobe overcloud service deploy
56101

57102
%{ if deploy_wazuh }
103+
# Deploy Wazuh
58104
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/wazuh-secrets.yml
59105
ansible-vault encrypt --vault-password-file ~/vault.password $KAYOBE_CONFIG_PATH/environments/ci-multinode/wazuh-secrets.yml
60106
kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/wazuh-manager.yml
@@ -83,10 +129,11 @@ set +x
83129
export KAYOBE_AUTOMATION_SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa)
84130
set -x
85131

132+
# Run tempest
86133
sudo -E docker run --detach --rm --network host -v $${config_directories[kayobe]}:/stack/kayobe-automation-env/src/kayobe-config -v $${config_directories[kayobe]}/tempest-artifacts:/stack/tempest-artifacts -e KAYOBE_ENVIRONMENT -e KAYOBE_VAULT_PASSWORD -e KAYOBE_AUTOMATION_SSH_PRIVATE_KEY kayobe:latest /stack/kayobe-automation-env/src/kayobe-config/.automation/pipeline/tempest.sh -e ansible_user=stack
87134

88135
# During the initial deployment the seed node must receive the `gwee/rally` image before we can follow the logs.
89136
# Therefore, we must wait a reasonable amount time before attempting to do so.
90137
sleep 360
91138

92-
ssh -oStrictHostKeyChecking=no ${ ssh_user }@${ seed_addr } 'sudo docker logs --follow $(sudo docker ps -q)'
139+
ssh -oStrictHostKeyChecking=no ${ ssh_user }@${ seed_addr } 'sudo docker logs --follow $(sudo docker ps -q | head -n 1)'

0 commit comments

Comments
 (0)